|
|
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
Есть ряд таблиц, хранящих неизменяемые данные(справочные), к примеру, список состояний и ряд характеристик, в которых могут находиться объекты. Обращение к этим состояниям происходит часто( запросы в БД). Целесообразно ли будет выгружать эти данные при старте проекта в константные массивы(либо в отдельные классы со статическими полями), для уменьшения количества однотипных запросов в БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 10:17 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
Конечно. А какие у вас сомнения на этот счет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 10:18 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
BlazkowiczКонечно. А какие у вас сомнения на этот счет? А если не лезет в ОЗУ? :D Это типичная оптимизация. Как любая оптимизация- надо уметь понимать, что стоит делать сразу, что потом, что через слабые ссылки и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 10:25 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Пользую хибернейт, столкнувшись недавно с его кэшированием задумался, может он подобные вещи умеет и так хранить в памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 10:28 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
JonnySKS... неизменяемые данные(справочные)... BlazkowiczКонечно. А какие у вас сомнения на этот счет? нет ничего более временного, чем постоянное ( С ) народная мудрость справочники они конечно редко изменяются, но изменяются. Иногда можно так умудрится реализовать через синглетон, что изменение справочника будет требовать перезапуск app сервера - что уже становится полным трешем ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 10:34 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
JonnySKSBlazkowicz, Пользую хибернейт, столкнувшись недавно с его кэшированием задумался, может он подобные вещи умеет и так хранить в памяти? сами базы имеют возможность держать таблицы в памяти. и при перезагрузки сервера переписать данные с диска в память нет проблем, да и изменить данные в таблице в памяти и её оригинала на диске тоже нет проблемы. так што кеширование этой прокладки может оказаться излише. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 10:55 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, Данные в действительности изменялись последний раз во время тестовой эксплуатации, правок в них не происходит годами, если вообще происходят. В любом случае можно ведь реализовать способ инициировать проверку актуальности данных, и выполнить ее при апдейте справочника. Меня интересовало, целесообразно ли вообще хранить такие данные явно, или этим и так занимается тот же хибернейт, сохраняя их в кэш. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 10:57 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
JonnySKSсохраняя их в кэш там 2,3 кэша. Какой именнно? Если не знаете, то и не надо ничего ломать. JonnySKSцелесообразно ли вообще такого слово "вообще" не бывает в архитектуре JonnySKSправок в них не происходит годами вам решать. Только имейте конкретику и цифру в руках авторПолучаем не консистентные данные http://habrahabr.ru/post/136375/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 11:09 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
Petro123, Спасибо, сейчас рассмотрю это подробнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 11:25 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
вадясами базы имеют возможность держать таблицы в памяти. и при перезагрузки сервера переписать данные с диска в память нет проблем, да и изменить данные в таблице в памяти и её оригинала на диске тоже нет проблемы. так што кеширование этой прокладки может оказаться излише. Сколько бы вы там базу не оптимизировали, чтение из локального кэша в памяти все равно быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 11:45 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
JonnySKSПользую хибернейт, столкнувшись недавно с его кэшированием задумался, может он подобные вещи умеет и так хранить в памяти? Жесть какая, пользовать хибер и не знать про двух-уровневый кэш в нем. Нафиг он тогда нужен без кэша-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 11:46 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
можно поставить memcache перед хибером ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 11:47 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsevсправочники они конечно редко изменяются, но изменяются. Иногда можно так умудрится реализовать через синглетон, что изменение справочника будет требовать перезапуск app сервера - что уже становится полным трешем ))) Всегда можно прикрутить JMX, скедулер или триггер. Чистить кэш, который очень редко изменяется вообще не проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 11:48 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
BlazkowiczLeonid Kudryavtsev... Всегда можно.... Можно то можно, только нужно не забыть это сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 11:54 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
вадя, +1 Да и мудухаться с тем, что одни данные в базе, а другие, из той же базы, в каких-то массивах и коллекциях в памяти не очень хорошая идея. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 12:31 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
вадясами базы имеют возможность держать таблицы в памяти. и при перезагрузки сервера переписать данные с диска в память нет проблем, да и изменить данные в таблице в памяти и её оригинала на диске тоже нет проблемы. -1 Т.к.: 1. Кроме БД и скорости на стороне БД есть еще JDBC. Который тоже: 1.1. тормоз еще тот 1.2. в ряде случаев имеет нехилые расходы на ресурсы (например по памяти) 1.2. замусоривает сеть (если БД на другой машине, в случае, например, cloud и аренды серверов может оказаться вполне себе тарифицируемым ресурсом). 2. Ряд популярных СУБД слова Prepared Statement знают только по названию. Ну... или делают вид, что знают, а на самом деле каждый запрос парсят по новой. Что тоже вполне себе работа. 3. Если хранить в ОП Java - ряд операций будет почти мгновенно. Возможно, даже, можно будет не получать java.sql.Connection - соответственно нагрузка на БД и кол-во экземпляров БД в памяти может быть меньше в разы (при connection pool). А экземпляр dedicated потока/процесса БД - нехилая себе нагрузка на ресурсы системы. etc.. etc... А насчет "in memory table" это достаточно редко используемый механизм. Т.к. нормальные БД все равно горячие блоки держать в буферном кэше. И ситуации когда их специально нужно закреплять в памяти очень редки. Мало того, например "in memory" в Oracle - это решение для OLAP . И я не уверен, что использование этой возможности "не глядя" в OLTP системе хорошая идея . Любителей пользоваться фичами не подумав, например создавать Bitmap индексы в OLPT системах - встречал. Когда начальство узнала, кто его создал - человек за пару часов лишился работы. IMHO & AFAIK вадятак што кеширование этой прокладки может оказаться излише. Любая оптимизация может оказаться излишней. И почти любая оптимизация не оказывается бесплатной. Т.ч. как в анекдоте: "проверил, работает? да... тогда только ничего не трогай" Valery ShiskinДа и мудухаться с тем, что одни данные в базе, а другие, из той же базы, в каких-то массивах и коллекциях в памяти не очень хорошая идея. Поддерживаю. Если проблем с производительностью нет - то не стоит себе и коллегам создавать проблемы на ровном месте. Если есть - тогда нужно думать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 13:03 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
имхо, если это сверх горячие данные, к которым идут сотни тысяч обращений и оверхед на сетевое взаимодействие имеет значение, то смысл есть, иначе доставить планку памяти, что в сервер БД, что в апп сервер особой разницы нет, но в случае, если это сделать в БД, то геморроя меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 13:10 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
just_vladimirимхо, если это сверх горячие данные, к которым идут сотни тысяч обращений и оверхед на сетевое взаимодействие имеет значение,.... Не обязательно У сетей (да и просто jdbc) достаточно высокая latency, т.ч. код вида: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. И без сверх горячих данных будет полным тормозом. Т.ч. при таком коде, возникновение желания попросить у начальство поставить InfiniBand контроллер и сеть (а никакой Ethernet 10 G не спасет) - вполне закономерно. Или грузить справочники в HashTable (что, наверное, осмысленно), а тут и до желания сделать singleton не далеко (что, возможно, уже перебор ). Про Hibernate и его кэши ничего сказать не могу. Не изучал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 13:22 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev Код: java 1. 2. 3. 4. так никто в здравом уме не пишет. Это тормоз программист, а не JDBC. Делают JOIN уже в запросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 13:31 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
Petro123Leonid Kudryavtsev Код: java 1. 2. 3. 4. так никто в здравом уме не пишет. Это тормоз программист, а не JDBC. Делают JOIN уже в запросе. Согласен, в ручную такую ересь находясь в своем уме не пишут... А вот при использовании хибера такое вполне может возникнуть, это жеж классика жанра с N+1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 13:46 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
Petro123... так никто в здравом уме не пишет. Это тормоз программист, а не JDBC. Делают JOIN уже в запросе. ну "никто" - это перебор, у меня цитаты из данного форуме на стенке на работе висели, сердце радовали ))). Т.ч. пишут и не малое кол-во людей. Насчет "в здравом уме" тоже перебор. Есть ряд ситуаций, когда join в запросе не получается или крайне не эффективно. Да и вообще, ситуаций миллион, когда такое осмысленно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 13:48 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
just_vladimir, везде свои заморочки. Кеш для Oracle 11g http://citforum.ru/database/oracle/caching_and_pooling/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 13:50 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevДа и вообще, ситуаций миллион, когда такое осмысленно. А можно хотя бы парочку реалистичных, когда такое действительно оправдано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 13:50 |
|
||
|
Хранение данных БД в приложении
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevДа и вообще, ситуаций миллион, когда такое осмысленно. Просто я бы не гнобил и сопоставлял кеши для JDBC и кеши при ОРМ. Разные проекты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2015, 13:51 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39127213&tid=2124555]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 485ms |

| 0 / 0 |
