|
|
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
Начал изучать java, появился концептуальный вопрос, как лучше организовать с hinernate обработку данных в пямяти ? Задача такая: есть не сильно сложная бд на пару десятков ГБ, хочу попробовать загрузить данные из БД в память и в памяти провести некие расчеты в несколько этапов. первым этапом помечаются объекты для расчета. мой расчет, что данные влезут в мои 16гб. как я понял я могу первым этапом создать List объектов со всеми данными, какие понадобятся. а вот дальше, что ? я могу HQL запросы по созданому List запускать ? другой вариант какой вижу, это настроить второго уровня кеш у хибера и первым этапом я ставлю 1 в переменную тем объектам, какие планирую в дальнейшем обсчитывать. дальше во всех остальных HQL запрсах указывать переменная=1. подскажите в какую сторону копать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 10:19 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
hck1Начал изучать java, появился концептуальный вопрос, как лучше организовать с hinernate обработку данных в пямяти ? Задача такая: есть не сильно сложная бд на пару десятков ГБ, хочу попробовать загрузить данные из БД в память и в памяти провести некие расчеты в несколько этапов. первым этапом помечаются объекты для расчета. мой расчет, что данные влезут в мои 16гб. как я понял я могу первым этапом создать List объектов со всеми данными, какие понадобятся. а вот дальше, что ? я могу HQL запросы по созданому List запускать ? другой вариант какой вижу, это настроить второго уровня кеш у хибера и первым этапом я ставлю 1 в переменную тем объектам, какие планирую в дальнейшем обсчитывать. дальше во всех остальных HQL запрсах указывать переменная=1. подскажите в какую сторону копать ? Начнем с того, что это не самая лучшая идея. Т.е. если есть возможность что-то посчитать в запросе, лучше посчитать в запросе. А так. HQL предназначен для выборки данных, т.е. для получения списка объектов-сущностей. А что дальше вы будете делать с этим списком к hibernate никакого отношения иметь не будет (Если вы не захотите сохранить измененные данные). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 10:34 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
Странные измышления. Хибернейт это всего лишь инструмент решающий определенную задачу - загрузку иерархий записей из RDBMS. Почему он вдруг ставиться во главе решения проблемы, мне не понятно. Для начала нужно определиться ваши вычисления действительно ли так сложны, что в RDBMS их выполнять не эффективно? Или вы закладываетесь на будущую масштабируемость через Map\Reduce на Java? Если структура БД "не сложная", то я подразумеваю под этим небольшое количество ассоциаций? Какая тогда вообще польза от ORM? Малое количество ассоциаций, долгоиграющие вычисления, отсутствие нужды в ленивой загрузки - это всё признаки того что ORM для этой задачи не очень-то и нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 10:36 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
по большому счету моя задача проверить вариант обработки данных в памяти, за одно познакомиться с ООП и java. по сути это будет прототип, который покажет перспективность или бесперспективность подхода. в принципе задача уже решена на оракле и с реляционным подходом, работает в проде. задача удачно кладется на реляционную модель, но есть проблемы. сервачек в проде по нынешним меркам слабенький, оракл упирается в ио, выделено ему всего 12гб. бесконечно что-то читает или пишет, если пытаться запустить несколько расчетов параллельно сдыхает ио. кантора гигантская, все забюрократизировано, добавить памяти или ио гигантская проблема. вобщем в оракле получается, что данные в несколько раз больше места занимают, чем реально нужно для расчета, во первых оракловом блоке много лишнего в заголовке, во вторых для расчета не все поля нужны. в результате для некоторых стран датафайлы 60+ гб и оракл их начинает читать на каждый запрос. я рассчитываю, что объект в памяти замет в 5 раз меньше места и я смогу запустить параллельно несколько расчетов по объектам памяти. сейчас в оракле это приводит к деградации перфоменса, т.к. эти расчеты конкурируют за ио, а все блоки в кеш не влазят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 11:09 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
hck1, Такая экономия по памяти это ещё одна причина отказаться от ORM. Используйте любой легковестный маппер SQL на бины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 11:16 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
добавлю по задачи. в реляционном оракле реализована так. есть куча стран, от стран приходят данные с изменениями в данных, они накатываются на базу и запускается расчет. расчет для нескольких стран может идти параллельно, это как повезет. для все стран примерно единый алгоритм. из общего массива выбираются объекты какие будут обсчитаны, берется N показателей (для каждой страны свои наборы показателей) и последовательно запускается N SQL запросов (некоторые многоэтажные) которые выдают число. последним этапом эти показатели по каким-то единым формулам для всех стран агригируется и стране высылается файл с результатом. вот проблема с этими SQL запросами, их нельзя запустить в параллель, т.к. они почти все читают большую часть данных и соответственно фулскан делают. ио зашкаливает. я понимаю, что могу вместо N SQL бегать нафигационно по объектам джава, это будет эффективно но развивать проект задолбаемся. ORM я хочу для того, что эти показатели описывать в HQL, а не многостраничным Java кодом. примерно так мы получаем эти показатели от SaS бизнес аналитиков. плюс есть вариант, что источник данных у нас переместиться в hadoop. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 11:23 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
Прям Profit Sharing какой-то :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 11:36 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
hck1вот проблема с этими SQL запросами, их нельзя запустить в параллель, т.к. они почти все читают большую часть данных и соответственно фулскан делают. ио зашкаливает. Ну, мысль интересная. hck1я понимаю, что могу вместо N SQL бегать нафигационно по объектам джава, это будет эффективно но развивать проект задолбаемся. Эффективность тут сильно зависит от того как именно и как часто по объектам бегать. Может, ведь, оказаться что у оракла были более эффективные индексы. hck1ORM я хочу для того, что эти показатели описывать в HQL, а не многостраничным Java кодом. Очень странное желание. HQL транслируется в SQL и на выходе имеем то же самое. HQL не "бегает" по коллекциям объектов. hck1примерно так мы получаем эти показатели от SaS бизнес аналитиков. плюс есть вариант, что источник данных у нас переместиться в hadoop. Какие-то слова знакомые, но в голове не укладывается. Какой ещё "источник данных в hadoop"? hadoop то же и есть Map\Reduce о котором я писал выше. Его фишка в том что ваши вычисления на Java вы можете раскидать на кластер и произвести в N раз быстрее чем на одном физическом сервере. Вычисления на SQL так просто не отмасштабировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 11:42 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЭффективность тут сильно зависит от того как именно и как часто по объектам бегать. Может, ведь, оказаться что у оракла были более эффективные индексы. вот я не уверен, что индексы идут на пользу именно в такой задачи. каждый показатель читает большую часть таблицы, вычитать таблицу фулсканом без индексов скорее всего эффективней. оракл не знает, что следующий показатель эту же таблицу будет читать и в кеше ее блоки после фулскана не оставляет, ходит по индексам, а потом снова вычитывает эту же таблицу для следующего показателя. BlazkowiczОчень странное желание. HQL транслируется в SQL и на выходе имеем то же самое. HQL не "бегает" по коллекциям объектов. а что такое кеш второго уровня у хибера ? я надеялся, что если объект закешировался в L2, то HQL в базу не пойдет, прочитает из L2. BlazkowiczКакие-то слова знакомые, но в голове не укладывается. Какой ещё "источник данных в hadoop"? hadoop то же и есть Map\Reduce о котором я писал выше. Его фишка в том что ваши вычисления на Java вы можете раскидать на кластер и произвести в N раз быстрее чем на одном физическом сервере. Вычисления на SQL так просто не отмасштабировать. на тему hadoop думают другие я пока map-reduce подходом не проникся, т.к. у меня в моих "показателях" достаточно сложные джоины присутствуют, как я понимаю для hadoop это будет большая проблема. сейчас некоторые страны шлют в hadoop изменения в данных и мы видим, что там пипец как все зависит от структуры. судя по тем проблемам какие они решают, тоже hadoop вариант, но многовато технических вопросов сначала нужно выяснить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 12:04 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
hck1а что такое кеш второго уровня у хибера ? я надеялся, что если объект закешировался в L2, то HQL в базу не пойдет, прочитает из L2. Там всё очень запутанно с кешированием. Надо читать актуальный мануал. Может оказаться что запросы, коллекции и единичные сущности кешируются по-разному. И по разному влияют друг на друга. Всё зависит от структуры запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 12:12 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
hck1вот я не уверен, что индексы идут на пользу именно в такой задачи. каждый показатель читает большую часть таблицы, вычитать таблицу фулсканом без индексов скорее всего эффективней . оракл не знает, что следующий показатель эту же таблицу будет читать и в кеше ее блоки после фулскана не оставляет, ходит по индексам, а потом снова вычитывает эту же таблицу для следующего показателя. Выделенное жирным - это аццкий отжиг. Админа ораклового вам надо. hck1и в кеше ее блоки после фулскана не оставляет Как я понимаю оставляет до тех пор пока есть место и следующее чтение их не перетрет. Если вы хотите всю таблицу загнать в память то и памяти вам надо будет в размере "есть не сильно сложная бд на пару десятков ГБ". По поводу того что индексы вредят и в таблице много лишних полей. Если в select выбираются только поля индекса, оракл в таблицу вообще не лезет, а берет все данные из индекса. Размер заголовка таблицы в этом случае пофиг. hck1а потом снова вычитывает эту же таблицу для следующего показателя. изменить алгоритм расчета. Чтобы два показателя считались за один проход. Как один из вариантов. Вообще то мне кажется прежде чем переделывать на java большие вычисления нужно понять что именно тормозит и как это будет лучше обсчитать в java. Уже с прикидкой алгоритмов. Не просто перевод PL/SQL -> java один в один. Иначе есть шанс что к тому же приплывете ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 13:49 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
sanBez, Полностью соглашусь с каждым комментарием. Интересно, можно ли в Oracle загнать какую-нибудь жирную выборку целиком в память и потом запустить алгоритм только по ней? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 13:58 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
BlazkowiczИнтересно, можно ли в Oracle загнать какую-нибудь жирную выборку целиком в память и потом запустить алгоритм только по ней? Выборку можно целиком загнать в таблицу в памяти. Есть там какие-то. Точно не скажу, я только правил чуть алгоритм расчета до меня написанный. Давно это было. Вот там работа шла по этим таблицам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 14:07 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
sanBezhck1вот я не уверен, что индексы идут на пользу именно в такой задачи. каждый показатель читает большую часть таблицы, вычитать таблицу фулсканом без индексов скорее всего эффективней . оракл не знает, что следующий показатель эту же таблицу будет читать и в кеше ее блоки после фулскана не оставляет, ходит по индексам, а потом снова вычитывает эту же таблицу для следующего показателя. Выделенное жирным - это аццкий отжиг. Админа ораклового вам надо. почитайте что-нибудь о многоблочном чтении (scattered read). взрослые субд применяют почти всегда применяют фулскан если нужно более четверти блоков таблицы. sanBezhck1и в кеше ее блоки после фулскана не оставляет Как я понимаю оставляет до тех пор пока есть место и следующее чтение их не перетрет. не верно понимаете, взрослые субд при фулскане не вымывают кеш, он идет мимо и кеша файловой системы и мимо кеша субд. sanBezизменить алгоритм расчета. Чтобы два показателя считались за один проход. Как один из вариантов. не уверен, что это хороший вариант. к этим показателям постоянно приходят изменения требований, вроде изначально простенький SQL начинает обрастать вложенностями, аналитическими функциями и т.п.. вобщем просто с точки зрения поддержки решено показатели не смешивать, т.к. никто не знает куда они потом разовьются. sanBezВообще то мне кажется прежде чем переделывать на java большие вычисления нужно понять что именно тормозит и как это будет лучше обсчитать в java. тут понимание то есть, нет особо идей как с этим бороться имея 12гб RAM. нужно запускать расчет показателей одновременно в параллель, но в оракле из-за не самой оптимальной структуры блока просто выливается в конкуренцию за ио. а вот на объекте в памяти есть шанс, что конкуренции не будет. все ядра CPU будут заняты пробежками по объекту, о не ожиданиями ио ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 14:07 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
Blazkowicz Интересно, можно ли в Oracle загнать какую-нибудь жирную выборку целиком в память и потом запустить алгоритм только по ней? можно наделать индексов и загнать их в keep pool, захинтовать запросы так, что бы они брали данные только из указанных индексов. но звучит как изврат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 14:16 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
Ох, неохота спорить, да и не админ я,но 5 копеек вставлю )) hck1почитайте что-нибудь о многоблочном чтении (scattered read). взрослые субд применяют почти всегда применяют фулскан если нужно более четверти блоков таблицы. Есть хинты. Хотите без индексов ставьте соответствующий хинт, будет фуллскан. Хотя спорить с ораклом. Оптимизатор у него вууумный. И обычно если он выбирает нужный план, то считает его оптимальным. Статистика по таблицам влиять может. Но это опять вопрос к админу. hck1не верно понимаете, взрослые субд при фулскане не вымывают кеш, он идет мимо и кеша файловой системы и мимо кеша субд. Куда он идет то? :) Ну пусть он не называется кэш, но область то в памяти есть sanBezизменить алгоритм расчета. Чтобы два показателя считались за один проход. Как один из вариантов. hck1не уверен, что это хороший вариант. к этим показателям постоянно приходят изменения требований, вроде изначально простенький SQL начинает обрастать вложенностями, аналитическими функциями и т.п.. вобщем просто с точки зрения поддержки решено показатели не смешивать, т.к. никто не знает куда они потом разовьются. Я разве предлагал смешивать показатели? hck1тут понимание то есть, нет особо идей как с этим бороться имея 12гб RAM. нужно запускать расчет показателей одновременно в параллель, но в оракле из-за не самой оптимальной структуры блока просто выливается в конкуренцию за ио. а вот на объекте в памяти есть шанс, что конкуренции не будет. все ядра CPU будут заняты пробежками по объекту, о не ожиданиями ио Да не, задача то конечно интересная. Но "есть шанс" смущает как то. З.Ы. Было как-то дело оптимизил расчет. Пытался отказаться от процедур на PL/SQL в пользу java. Выигрыша не получил. Обсчет то сам быстрее намного был, но насколько помню сам процесс преобразования "строка таблицы СУБД"->"объект java" + сетевой траффик (поднималорсь много коротких записей) привели к затратам несопоставимым с затратами на PL/SQL. И вернул назад чисто все на базу. Делалось давно, деталей не помню. Но с тех пор к фразе "на java явно будет быстрее" отношусь настороженно. :) Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 14:48 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
Что то мне подсказывает, что затея какая то сомнительная, сомневаюсь, что вообще даст эффект. Имхо, варианты следующие: 1. Попытаться по крутить структуру БД (саму структуру таблиц, партиции, индексы), подкрутить настройки использования памяти и все будет хорошо. 2. Если очень хочется, то Oracle 12 умеет in-memory. Указываете какие колонки/таблицы/партиции должны быть in-memory, и они сразу же прелоадятся при старте, причем хранятся column store формате со сжатием. Итого, если уверены, что все что вам нужно залезает в ваши 12Гб, то грамотно настраиваете, чтобы нужные данные были in-memory и радуетесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 21:07 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
just_vladimir2. Если очень хочется, то Oracle 12 умеет in-memory. Указываете какие колонки/таблицы/партиции должны быть in-memory, и они сразу же прелоадятся при старте, причем хранятся column store формате со сжатием. Итого, если уверены, что все что вам нужно залезает в ваши 12Гб, то грамотно настраиваете, чтобы нужные данные были in-memory и радуетесь. да, column store и in-memory то что доктор прописал, но это ЕЕ фичи, да еще и отдельно лицензируются. у нас SE и желание вообще от оракла отказаться. у меня такой вопрос созрел, а что такое JPQL ? его запросы нельзя на свои объекты запускать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2015, 23:51 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
hck1just_vladimir2. Если очень хочется, то Oracle 12 умеет in-memory. Указываете какие колонки/таблицы/партиции должны быть in-memory, и они сразу же прелоадятся при старте, причем хранятся column store формате со сжатием. Итого, если уверены, что все что вам нужно залезает в ваши 12Гб, то грамотно настраиваете, чтобы нужные данные были in-memory и радуетесь. да, column store и in-memory то что доктор прописал, но это ЕЕ фичи, да еще и отдельно лицензируются. у нас SE и желание вообще от оракла отказаться. у меня такой вопрос созрел, а что такое JPQL ? его запросы нельзя на свои объекты запускать ? Подожди. Ты вообще не там ищешь решение. Итак. Есть некий набор таблиц. Для расчёта надо (как я понял) перебрать небольшое число колонок большого числа строк. Нужно получить несколько результатов, каждый из которых читает почти все данные, но расчёт запускается независимо. Расчёт написан на pl/sql и sql. Как результат- запросы напрягают диск. Ты хочешь перенести данные из БД в память, но при этом обращаться к ним с SQL-подобным языком, чтобы не переписывать алгоритм. Я правильно понял? Если так, то явно pl/sql код написан нехорошо. Например- на вход надо подавать не одну страну, а набор (временную таблицу, коллекцию) и результат выдавать так же. В общем- тут, скорее всего, случай, когда делается ненужная попытка отказаться от sql. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 09:44 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
Alexey TominПодожди. Ты вообще не там ищешь решение. Итак. Есть некий набор таблиц. Для расчёта надо (как я понял) перебрать небольшое число колонок большого числа строк. Нужно получить несколько результатов, каждый из которых читает почти все данные, но расчёт запускается независимо. Расчёт написан на pl/sql и sql. Как результат- запросы напрягают диск. Ты хочешь перенести данные из БД в память, но при этом обращаться к ним с SQL-подобным языком, чтобы не переписывать алгоритм. Я правильно понял? да, все верно, только SQL подобный я хочу скорее для компактности и наглядности, т.к. по сути там вся логика задачи и есть, там все ошибки будут. ну кроме этого бизнес аналитики в SaS примерно таким языком выдают requirements. Alexey TominЕсли так, то явно pl/sql код написан нехорошо. Например- на вход надо подавать не одну страну, а набор (временную таблицу, коллекцию) и результат выдавать так же. В общем- тут, скорее всего, случай, когда делается ненужная попытка отказаться от sql. поверьте, у меня неплохой опыт и знания оракла, да там есть варианты какие можно попробывать, но у меня даже не задача а хотелка прощупать in-memory вариант. пока у меня план засосать данные в объект и попробывать просто вместо показателей считать байты каких-то полей. наверно я получу близкие цифры расчета с реальными показателями. P.S. у каждой страны свой набор данных (даже таблеспейс) и свой набор показателей, обрабатываются страны независимо, часто параллельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 10:43 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
hck1да, все верно, только SQL подобный я хочу скорее для компактности и наглядности, т.к. по сути там вся логика задачи и есть, там все ошибки будут. ну кроме этого бизнес аналитики в SaS примерно таким языком выдают requirements. ... поверьте, у меня неплохой опыт и знания оракла, да там есть варианты какие можно попробывать, но у меня даже не задача а хотелка прощупать in-memory вариант. Тогда не надо упираться в SQL-подобный синтаксис. Загружаются данные, кладутся в объекты, для поиска- HashMap. hck1P.S. у каждой страны свой набор данных (даже таблеспейс) и свой набор показателей, обрабатываются страны независимо, часто параллельно. А как тогда уменьшить IO? Для каждого расчёта нужно будет загрузить те же данные, только не в память сервера, а в память расчётной машины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 11:12 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
Alexey TominТогда не надо упираться в SQL-подобный синтаксис. Загружаются данные, кладутся в объекты, для поиска- HashMap. почитал по хешмап, но не понял как оно поможет в поиске. например есть показатель посчитать кол-во записей из table1, которые имеют дату в пределах 365 дней от некого события. "события" это table2. по синтаксису смущает, что pure java код будет длинным и не столь наглядным как декларативный аля SQL. но это на данном этапе не столь принципиально. Alexey TominА как тогда уменьшить IO? Для каждого расчёта нужно будет загрузить те же данные, только не в память сервера, а в память расчётной машины. сейчас выходит, что 3-4 страны могут прислать свои файлы примерно в одно время и долбят запросами показателей оракл одновременно, каждая свой набор таблиц, от 2 до 6 часов. если страны выстраивать по очереди, выходит еще дольше. я же хочу проверить вариант выстроить в очередь, загрузить все в память. 60 гб сырых данных поднять с дисков думаю реально минут за несколько минут, ну допустим, 10-15 минут еще на конвертацию в джава типы. но дальше я расчитываю все показатели (10-20 штук) запустить одновременно, загрузив полностью все ядра. в теории их никакие ожидания не должны тормозить. за какое время можно обойти весь объект, гигов в 16 ? ведь наверника не часы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 12:23 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
hck1Alexey TominТогда не надо упираться в SQL-подобный синтаксис. Загружаются данные, кладутся в объекты, для поиска- HashMap. почитал по хешмап, но не понял как оно поможет в поиске. например есть показатель посчитать кол-во записей из table1, которые имеют дату в пределах 365 дней от некого события. Map'ы это "индекс с поиском по совпадению". По диапазону- это сортированный List<Pair<Date, Element>> hck1по синтаксису смущает, что pure java код будет длинным и не столь наглядным как декларативный аля SQL. но это на данном этапе не столь принципиально. SQL не дураки придумали- у несго своя область применения. hck1Alexey TominА как тогда уменьшить IO? Для каждого расчёта нужно будет загрузить те же данные, только не в память сервера, а в память расчётной машины. сейчас выходит, что 3-4 страны могут прислать свои файлы примерно в одно время и долбят запросами показателей оракл одновременно, каждая свой набор таблиц, от 2 до 6 часов. если страны выстраивать по очереди, выходит еще дольше. я же хочу проверить вариант выстроить в очередь, загрузить все в память. 60 гб сырых данных поднять с дисков думаю реально минут за несколько минут, ну допустим, 10-15 минут еще на конвертацию в джава типы. но дальше я расчитываю все показатели (10-20 штук) запустить одновременно, загрузив полностью все ядра. в теории их никакие ожидания не должны тормозить. за какое время можно обойти весь объект, гигов в 16 ? ведь наверника не часы. Не сходится. Если из 2..6 часов чтение с диска занимает 10-15 минут, то что делает сервер остальное время? Если памяти мало, то выставление задач в очередь должно помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 13:47 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
Alexey TominПо диапазону- это сортированный List<Pair<Date, Element>> Тьфу! Деревья, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 13:48 |
|
||
|
hibernate и in memory calc
|
|||
|---|---|---|---|
|
#18+
Alexey TominНе сходится. Если из 2..6 часов чтение с диска занимает 10-15 минут, то что делает сервер остальное время? .... sanBez...это аццкий отжиг. Админа ораклового вам надо... поддерживаю sanBez. Запускать реальный код, смотреть на чем тормозит, _те_куски_ которые тормозят и оптимизировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 14:24 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38903215&tid=2125527]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 496ms |

| 0 / 0 |
