|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
Морфий Подойдёт ли тут Redis? Да зачем? 10к записей можно в map какой-нибудь запихать и будет тоже самое. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 05:30 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Описываемая задача является стандартной для любой СУБД. Называется .... JOIN Чтобы решить что бред, а что нет, надо ответить на следующие вопросы: Какое минимальное время выполнения запроса удалённого клиента на оракле? Какие запросы обрабатывает клиент оракла? Сколько их? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 05:36 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
Морфий Про томограмму понимаю :-) Хочется иметь "кэш" этих данных в самом сервисе, чтобы избежать запросов по сети в БД. Или может быть какую-то inmemory БД поднимать в сервисе и туда переливать данные из реляционной БД, т.к. inmemory поиска кажется будет быстрее. Вопрос больше сводиться к тому как правильно построить кэш который будет наполняться значениям из БД. Как следить за актуальность кэша, как выбрать ключ, если использовать БД типа "ключ-значение", Подойдёт ли тут Redis? В зависимости от того как работаешь с БД, можно сделать по разному. Например, если используется Хибернайте, то можно попробовать уже встроенным кешированием в хибернейте. Если справочных значений не много, можно загнать их в HashMap. И т.д. Все зависит какую задачу решаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 05:42 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
apb12 предлагаю автора в бан ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 09:01 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
[quot apb12#22043550] PetroNotC Sharp apb12, "Запросы выполняются из Java сервиса, по чистому JDBC без ORM прослоек." за это нужно бить палками на площадях,потому что потом их говнокод будут разбирать такие как и проклинать свою жизнь))) Почему нужно бить? Чем плох чистый JDBC при работе с одной таблицей и по факту один SELECT из кода? crutchmaster, спасибо за конструктивные решения и мапами и комплексным ключом. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 10:09 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
Морфий Чем плох чистый JDBC при работе с одной таблицей и по факту один SELECT из кода? Тем, что он ничего другого не осилил. crutchmaster, спасибо за конструктивные решения и мапами и комплексным ключом. Не за что. Какая нагрузка планируется на систему? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 10:29 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
Морфий Почему нужно бить? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 11:24 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
crutchmaster Какая нагрузка планируется на систему? Думаю, что не более 1М запросов в день, т.е. в зависимости от пика от 10 до 100 в секунду. Конечно оптимизировать и добиваться производительности на самом начале не рационально, хотелось бы заложить правильный фундамент с расчётом на рост нагрузки. Пока думаю вот над таким вариантом: 1. При инициализации сервиса (модуля) зачитать всё из БД и составить мап с "составным" ключом. Частого изменения справочника не планируется, поэтому можно оставить вариант перезапуска сервиса при изменении справочника. Т.е. получается вариант долго запрягаем, зато быстро ездим. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 11:34 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Морфий Почему нужно бить? Вопрос не относится к сопровождению топика, он про использование JDBC. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 11:39 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
Морфий PetroNotC Sharp пропущено... потому что ТС не сопровождает свой топик. Вопрос не относится к сопровождению топика, он про использование JDBC. JDBC - не имеет никаких паттернов относительно преобразования справочников. Почитай про Statement::addBatch() и про возможности ETL базы данных которую ты используешь. Я убежден что твой вопрос вообще другой. Ты лучше подумай. И подними новый топик с пояснением сути твоей проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 11:47 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
mayton Почитай про Statement::addBatch() и про возможности ETL базы данных которую ты используешь. Я убежден что твой вопрос вообще другой. Ты лучше подумай. И подними новый топик с пояснением сути твоей проблемы. Statement::addBatch() не нужен, т.к. у меня только чтение данных из уже готовой таблицы. Спасибо за совет, подумаю получше над вопросом, и тогда открою новый топик. На этом можно считать этот топик закрытым . ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 12:10 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
Морфий, Аффтар. Ты опять ничего не понял? Нужно отвечать на посты в топике. Где твоя ПРОБЛЕМА? mayton Я убежден что твой вопрос вообще другой. Ты лучше подумай. И подними новый топик с пояснением сути твоей проблемы. +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 12:11 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
Морфий Думаю, что не более 1М запросов в день, т.е. в зависимости от пика от 10 до 100 в секунду. Ну, самый простой hashmap будет выбирать запись гораздо меньше 10 мс, так что на 100+ rqs тонким местом он не будет. Главное строку для ключа сшивай через StringBuilder, а не складыванием. А через что запросы будут идти? Http? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 12:29 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
Если преобразование - это ETL то и делать надо средствами ETL. И java тут вообще непричем. Если автор хочет кеширование - то это вообще про другое. И это да. Это Java. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 12:55 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
crutchmaster Ну, самый простой hashmap Хотя автор вопрос закрыл, что тут придумывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 13:00 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Можно еще проще - вообще без оракла. А зачем он тут? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 13:09 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
crutchmaster Leonid Kudryavtsev Описываемая задача является стандартной для любой СУБД. Называется .... JOIN Чтобы решить что бред, а что нет, надо ответить на следующие вопросы: Какое минимальное время выполнения запроса удалённого клиента на оракле? Какие запросы обрабатывает клиент оракла? Сколько их? А при чем тут это? Если есть две таблицы, таблица данных и таблица перекодировки и их надо join'уть, то зачем тут прослойка в виде Java - совершенно не понятно. Если что-то типа ETL, миграции/интеграции и данные из системы переливаются куда-то, то хоть join'и на базе источнике, хоть join'и на безе назначения - без разница, ну а поскольку нормальные люди по одной записи между базами не переливают - то даже сравнивать бессмысленно. Топик как-то выглядит: мы java программисты, а не программисты СУБД, поэтому ни за какие join'ы ничего не знаем, а все будем делать "циклами, циклами" ( C ) данный подфорум Что такое "удаленный клиент" из контекста фразы вообще не понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 13:09 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Топик как-то выглядит: мы java программисты Да ну не. Те давно бы уже сделали на мапах и никого не спрашивали. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 13:11 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
crutchmaster Можно еще проще - вообще без оракла. А зачем он тут? ТС вообще не сказал что у него болит и какие симптомы. Пусть учится чем лечить по фотографии непонятно что. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 13:13 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
если я правильно понял тему, то у автора тормозит какой то бизнес процесс из за большого количества выполнений селекта Код: plsql 1.
если оптимизировать средствами оракл, то можно так попробовать, при условии что изменений мало будет 1. хеш. создаем хеш кластер, ключ (dict_name, sys_from, sys_to, code_from), туда подсовываем таблицу. О(1) 2. б-три дерево. создать индекс на (dict_name, sys_from, sys_to, code_from, code_to). О(logN) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 16:22 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
Автор. Ты построил индекс что я предлагал? Как это повлияло на перформанс? +Сколько % стало быстрее? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 16:23 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
сладкий бубалех из за большого количества выполнений селекта ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 16:36 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
PetroNotC Sharp сладкий бубалех из за большого количества выполнений селекта а что оптимизатор? один раз распарсил и откомпилировал. а дальше тонны выполнений этого запроса. полная выборка блоков из таблицы, перебор строк в блоке, и в самой строке перебором до нужного поля, на это тоже ресурсы CPU тратятся хоть и блоки таблицы уже в кеше сидят. Ораклисты смотрят AWR, чтобы сказать где точно проблема ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 17:47 |
|
Работа с преобразованием справочников из Java
|
|||
---|---|---|---|
#18+
Выж в суть проблемы смотрите. При преобразованиях указывается нужные параметры для получения нового значения: Этот select запрос участвует в процессе "преобразования" справочника. А значит что он не единичный. А - массовый. И скорее всего его надо сделать на стороне БД. Но мы не можем сделать потому что мы не понимаем всего процесса ETL. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 17:55 |
|
|
start [/forum/topic.php?fid=59&gotonew=1&tid=2120977]: |
0ms |
get settings: |
24ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
141ms |
get topic data: |
10ms |
get first new msg: |
122ms |
get forum data: |
3ms |
get page messages: |
503ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 839ms |
0 / 0 |