powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Хранение данных БД в приложении
25 сообщений из 26, страница 1 из 2
Хранение данных БД в приложении
    #39127010
Фотография JonnySKS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ряд таблиц, хранящих неизменяемые данные(справочные), к примеру, список состояний и ряд характеристик, в которых могут находиться объекты. Обращение к этим состояниям происходит часто( запросы в БД).
Целесообразно ли будет выгружать эти данные при старте проекта в константные массивы(либо в отдельные классы со статическими полями), для уменьшения количества однотипных запросов в БД?
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127014
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно. А какие у вас сомнения на этот счет?
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127023
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczКонечно. А какие у вас сомнения на этот счет?

А если не лезет в ОЗУ? :D

Это типичная оптимизация. Как любая оптимизация- надо уметь понимать, что стоит делать сразу, что потом, что через слабые ссылки и т.п.
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127026
Фотография JonnySKS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Пользую хибернейт, столкнувшись недавно с его кэшированием задумался, может он подобные вещи умеет и так хранить в памяти?
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127037
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JonnySKS... неизменяемые данные(справочные)...
BlazkowiczКонечно. А какие у вас сомнения на этот счет?
нет ничего более временного, чем постоянное ( С ) народная мудрость

справочники они конечно редко изменяются, но изменяются. Иногда можно так умудрится реализовать через синглетон, что изменение справочника будет требовать перезапуск app сервера - что уже становится полным трешем )))
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127057
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JonnySKSBlazkowicz,

Пользую хибернейт, столкнувшись недавно с его кэшированием задумался, может он подобные вещи умеет и так хранить в памяти?
сами базы имеют возможность держать таблицы в памяти.
и при перезагрузки сервера переписать данные с диска в память нет проблем, да и изменить данные в таблице в памяти и её оригинала на диске тоже нет проблемы. так што кеширование этой прокладки может оказаться излише.
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127058
Фотография JonnySKS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

Данные в действительности изменялись последний раз во время тестовой эксплуатации, правок в них не происходит годами, если вообще происходят. В любом случае можно ведь реализовать способ инициировать проверку актуальности данных, и выполнить ее при апдейте справочника.

Меня интересовало, целесообразно ли вообще хранить такие данные явно, или этим и так занимается тот же хибернейт, сохраняя их в кэш.
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127069
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JonnySKSсохраняя их в кэш
там 2,3 кэша. Какой именнно? Если не знаете, то и не надо ничего ломать.
JonnySKSцелесообразно ли вообще
такого слово "вообще" не бывает в архитектуре
JonnySKSправок в них не происходит годами
вам решать. Только имейте конкретику и цифру в руках
авторПолучаем не консистентные данные
http://habrahabr.ru/post/136375/
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127097
Фотография JonnySKS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Спасибо, сейчас рассмотрю это подробнее.
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127112
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадясами базы имеют возможность держать таблицы в памяти.
и при перезагрузки сервера переписать данные с диска в память нет проблем, да и изменить данные в таблице в памяти и её оригинала на диске тоже нет проблемы. так што кеширование этой прокладки может оказаться излише.
Сколько бы вы там базу не оптимизировали, чтение из локального кэша в памяти все равно быстрее.
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127115
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JonnySKSПользую хибернейт, столкнувшись недавно с его кэшированием задумался, может он подобные вещи умеет и так хранить в памяти?
Жесть какая, пользовать хибер и не знать про двух-уровневый кэш в нем. Нафиг он тогда нужен без кэша-то?
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127117
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно поставить memcache перед хибером
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127119
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsevсправочники они конечно редко изменяются, но изменяются. Иногда можно так умудрится реализовать через синглетон, что изменение справочника будет требовать перезапуск app сервера - что уже становится полным трешем )))
Всегда можно прикрутить JMX, скедулер или триггер. Чистить кэш, который очень редко изменяется вообще не проблема.
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127129
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczLeonid Kudryavtsev...
Всегда можно....
Можно то можно, только нужно не забыть это сделать.
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127160
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

+1

Да и мудухаться с тем, что одни данные в базе, а другие, из той же базы, в каких-то массивах и коллекциях в памяти не очень хорошая идея.
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127201
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадясами базы имеют возможность держать таблицы в памяти.
и при перезагрузки сервера переписать данные с диска в память нет проблем, да и изменить данные в таблице в памяти и её оригинала на диске тоже нет проблемы.

-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Да и мудухаться с тем, что одни данные в базе, а другие, из той же базы, в каких-то массивах и коллекциях в памяти не очень хорошая идея.
Поддерживаю.

Если проблем с производительностью нет - то не стоит себе и коллегам создавать проблемы на ровном месте. Если есть - тогда нужно думать.
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127213
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имхо, если это сверх горячие данные, к которым идут сотни тысяч обращений и оверхед на сетевое взаимодействие имеет значение, то смысл есть, иначе доставить планку памяти, что в сервер БД, что в апп сервер особой разницы нет, но в случае, если это сделать в БД, то геморроя меньше.
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127237
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimirимхо, если это сверх горячие данные, к которым идут сотни тысяч обращений и оверхед на сетевое взаимодействие имеет значение,....
Не обязательно

У сетей (да и просто jdbc) достаточно высокая latency, т.ч. код вида:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
// Идем по большой таблицы
while (rset.next) {
  // Для каждой строки залезли в справочник
  pstmt1.setString( ... )
  pstmt1.executeQuery();
  // И возможно даже не один
  pstmt2.setString( ... )
  pstmt2.executeQuery();
  ...
}


И без сверх горячих данных будет полным тормозом. Т.ч. при таком коде, возникновение желания попросить у начальство поставить InfiniBand контроллер и сеть (а никакой Ethernet 10 G не спасет) - вполне закономерно. Или грузить справочники в HashTable (что, наверное, осмысленно), а тут и до желания сделать singleton не далеко (что, возможно, уже перебор ).

Про Hibernate и его кэши ничего сказать не могу. Не изучал
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127254
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
Код: java
1.
2.
3.
4.
// Идем по большой таблицы
while (rset.next) {
  // Для каждой строки залезли в справочник
  pstmt1.setString( ... )



так никто в здравом уме не пишет. Это тормоз программист, а не JDBC.
Делают JOIN уже в запросе.
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127277
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Leonid Kudryavtsev
Код: java
1.
2.
3.
4.
// Идем по большой таблицы
while (rset.next) {
  // Для каждой строки залезли в справочник
  pstmt1.setString( ... )



так никто в здравом уме не пишет. Это тормоз программист, а не JDBC.
Делают JOIN уже в запросе.
Согласен, в ручную такую ересь находясь в своем уме не пишут...
А вот при использовании хибера такое вполне может возникнуть, это жеж классика жанра с N+1
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127278
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123...
так никто в здравом уме не пишет. Это тормоз программист, а не JDBC.
Делают JOIN уже в запросе.
ну "никто" - это перебор, у меня цитаты из данного форуме на стенке на работе висели, сердце радовали ))). Т.ч. пишут и не малое кол-во людей.

Насчет "в здравом уме" тоже перебор. Есть ряд ситуаций, когда join в запросе не получается или крайне не эффективно. Да и вообще, ситуаций миллион, когда такое осмысленно.
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127282
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimir,
везде свои заморочки.
Кеш для Oracle 11g
http://citforum.ru/database/oracle/caching_and_pooling/
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127283
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevДа и вообще, ситуаций миллион, когда такое осмысленно.
А можно хотя бы парочку реалистичных, когда такое действительно оправдано?
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127288
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevДа и вообще, ситуаций миллион, когда такое осмысленно.
Просто я бы не гнобил и сопоставлял кеши для JDBC и кеши при ОРМ. Разные проекты.
...
Рейтинг: 0 / 0
Хранение данных БД в приложении
    #39127744
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominBlazkowiczКонечно. А какие у вас сомнения на этот счет?

А если не лезет в ОЗУ? :D


А если не лезет в ОЗУ -- то НЕ ЗАГРУЖАТЬ!
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Хранение данных БД в приложении
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]