|
|
|
Hibernate + query cache.
|
|||
|---|---|---|---|
|
#18+
VoDAВообще бывают и транзакционные кэши. Только нужно понимать, что "транзакционность" это огромная нагрузка на взаимодействие между нодами. И далеко не всегда она нужна.Бывать то бывают, но только из поддерживаемых Хибером к такой группе относится только JBoss-овский read-only кеш, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2012, 19:06:21 |
|
||
|
Hibernate + query cache.
|
|||
|---|---|---|---|
|
#18+
VoDAВообще бывают и транзакционные кэши. Только нужно понимать, что "транзакционность" это огромная нагрузка на взаимодействие между нодами. И далеко не всегда она нужна. Можно реализовать разными способами, в том числе и не зависящими от кол-ва нод. Йуный джавистЪУ людей, которые хоть что-то понимают в узких местах при работе с БД, все эти гибернейтовские кэши вызывают смех. Просто разные задачи бывают, ведь обычная БД в типичной конфигурации не выдаёт 1 млн объектов в секунду, а с кешом это возможно устроить. Смотря что оптимизируем. Йуный джавистЪНе противопоставляю, а сравниваю. Кэш и СУБД одинаково являются транзакционными хранилищами данных. В них используюся одинаковые механизмы (локи, MVCC). Не вижу, почему их нельзя сравнивать. Если мы используем кэш поверх СУБД, то транзакции у нас будут только такие, какие поддерживает кэш. Если СУБД поддерживает read consistency, а кэш нет, то связка СУБД и кэша не поддерживает read consistency. Read consistency можно гарантировать другими способами. Опять таки, всё зависит от задач. Не все же пишут приложения со сложными запросами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2012, 21:08:02 |
|
||
|
Hibernate + query cache.
|
|||
|---|---|---|---|
|
#18+
rrrrrrrr, +1 взвешенный подход ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2012, 21:14:18 |
|
||
|
Hibernate + query cache.
|
|||
|---|---|---|---|
|
#18+
Просто разные задачи бывают, ведь обычная БД в типичной конфигурации не выдаёт 1 млн объектов в секунду, а с кешом это возможно устроить. Смотря что оптимизируем. Весь фейсбук выдает 200_000 объектов в секунду из кэша. При этом он имеет тысячи машин с MySQL. Миллион объектов - это невероятная цифра даже для веба. Hibernate в вебе - это нонсенс. Там, где используется Hibernate (корпоративные приложения), большой нагрузки не бывает. Например, вся Visa целиком - это несколько тысяч транзакций в секунду. Но при этом в корпоративных приложениях крайне важна целостность данных. авторRead consistency можно гарантировать другими способами. Опять таки, всё зависит от задач. Не все же пишут приложения со сложными запросами. Приложение с хибернейтовским кэшем будет некорректным даже если там нет сложных запросов. Пример: есть три таблицы: документы, приложения к документам и права на документы. Пользователь A открывает форму редактирования документа. Он добавляет к документу новое конфиденциальное приложение, и одновременно с помощью этой же формы убирает права на чтение этого документа для некой группы пользователей, в которую входит юзер B. После этого пользователь A жмет кнопку submit, данные сбрасываются в БД и в кэш. В этот момент документ открывает пользователь B. Программа лезет в кэш, достает оттуда документ без приложений(приложения подгружаются ленивым образом) и права (старые), проверяет их. Проверка прав пройдена. Затем программа лезет в кэш и достает оттуда новые приложения, добавленные пользователем A, которые пользователь B в принципе не должен был увидеть. Таким образом, простое включение хибернейтовского кэша (даже самого лучшего из имеющихся JBoss Cache) вносит в простейшую программу security bug. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2012, 22:00:04 |
|
||
|
Hibernate + query cache.
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪHibernate в вебе - это нонсенс. Если вы не видели, это ещё не значит, что их нет. Например. Высоконагруженый онлайн покер: https://www.elance.com/samples/nlop-http-nlopcom/24285612/ Йуный джавистЪВ этот момент документ открывает пользователь B. Программа лезет в кэш, достает оттуда документ без приложений(приложения подгружаются ленивым образом) и права (старые), проверяет их. Проверка прав пройдена. Затем программа лезет в кэш и достает оттуда новые приложения, добавленные пользователем A, которые пользователь B в принципе не должен был увидеть. Таким образом, простое включение хибернейтовского кэша (даже самого лучшего из имеющихся JBoss Cache) вносит в простейшую программу security bug. Ну, т.е. любые права, помещенные в любой кэш, это бага Hibernate. LOL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2012, 22:11:31 |
|
||
|
Hibernate + query cache.
|
|||
|---|---|---|---|
|
#18+
Ну, т.е. любые права, помещенные в любой кэш, это бага Hibernate. LOL. Ну представьте себе, что документы хранятся в кэше, а права в СУБД. Будет то же самое. Не может быть такого, что полроты идет в ногу, а полроты - не в ногу. Вся рота будет идти не в ногу. Высоконагруженый онлайн покер: Там 2000 pageviews в день. Нагрузка, как я понимаю, исходит непосредственно с покерных столов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2012, 22:42:03 |
|
||
|
Hibernate + query cache.
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪТам 2000 pageviews в день. Нагрузка, как я понимаю, исходит непосредственно с покерных столов? ну, да. Не просто сайт же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2012, 22:49:10 |
|
||
|
Hibernate + query cache.
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪ, ты забыл о версиях объектов. Любая другая сессия ДОЛЖНА проверять версию в БД. Если она изменилась, то нужно обновить кэш при чтении (он протух). Как там реально это работает - надо тестировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2012, 00:14:45 |
|
||
|
Hibernate + query cache.
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪ В этот момент документ открывает пользователь B. Программа лезет в кэш, достает оттуда документ без приложений(приложения подгружаются ленивым образом) и права (старые), проверяет их. Проверка прав пройдена. по идее как только правятся данные, то кэш должен инвалидировать старую версию этих же данных. Т.е. при сохранении хибер должен выдать команду кэшу на инвалидацию или обновить данные на актуальные. В случае кластера еще кинуть инвалидацию на другие ноды. Вроде как именно так должно действовать приложение. Или я не прав? Как действует кластерный кэш под Хибером? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2012, 21:49:45 |
|
||
|
Hibernate + query cache.
|
|||
|---|---|---|---|
|
#18+
VoDAКак действует кластерный кэш под Хибером? мне тоже интересно, т.к. если делать буквально, то слишком большие затраты и зацикливание кеш_через_сеть <---> БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2012, 21:53:05 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37685234&tid=2132439]: |
0ms |
get settings: |
15ms |
get forum list: |
26ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
50ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 339ms |
| total: | 530ms |

| 0 / 0 |
