Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Тема чтобы потрындеть / 25 сообщений из 51, страница 1 из 3
24.06.2021, 18:09
    #40079917
asv79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
Смотрите господа и товарищи
Есть таблица и есть желание получать из нее количество записей- назовем ето счетчиком

собственно выглядит все просто - берем селект каунт и записываем значение в дто
но каждый раз делать такие селекты я не хочу ,поэтому я кеширую этот счетчик
и тут вопрос нужна ли тут тред сейф коллекция - concurrentHashMap,если значение все равно выгребается из бд,а как я понимаю на стороне бд с тред сейвом все норм .Счетчик инвалидируется при новой записи/удалении,но как я понял из документации метод put все равно будет не синхронизирован и два потока смогут теоретически записать в какой то момент одинаковые ключи
поэтому вопрос философский тут больше - наверно все таки тред сейф колекция тут будет бесполезна без synhronized блоков

стоит отметить что этот метод дергается контроллером - контроллер обычный ,не реактивный.
...
Рейтинг: 0 / 0
24.06.2021, 18:26
    #40079925
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
asv79,

зачем тебе коллекция-то? Несколько счетчиков чтоли?

https://www.pixelstech.net/article/1585457836-Why-accessing-Java-HashMap-may-cause-infinite-loop-in-concurrent-environment
...
Рейтинг: 0 / 0
24.06.2021, 18:36
    #40079929
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
asv79,

В чем проблема?
Ну пишите/читайте значения кеша в synchronize блоке.

А так зачем изобретать велосипед, когда в Spring есть аннотации для кеширования?!
@Cacheable

<:o)
...
Рейтинг: 0 / 0
24.06.2021, 18:47
    #40079932
asv79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
Андрей Панфилов
asv79,

зачем тебе коллекция-то? Несколько счетчиков чтоли?

https://www.pixelstech.net/article/1585457836-Why-accessing-Java-HashMap-may-cause-infinite-loop-in-concurrent-environment

да,это грубо говоря группа - а счетчик - количество человек в ней.А групп там много и на каждую нужно отображать текущее количество человек в ней.
...
Рейтинг: 0 / 0
24.06.2021, 18:49
    #40079933
asv79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
mad_nazgul
asv79,

В чем проблема?
Ну пишите/читайте значения кеша в synchronize блоке.

А так зачем изобретать велосипед, когда в Spring есть аннотации для кеширования?!
@Cacheable

<:o)

Я чо то не оддуплил как тут @Cacheble прикрутить ,но я пытался ,щас попробую еще раз)
...
Рейтинг: 0 / 0
24.06.2021, 18:55
    #40079935
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
asv79,
Нужно чтобы правильно работали транзакции в многопользовательской среде.
- юзверь А добавил 3 товара но не закоммитил
- юзверь Б удалил 10 товаров.
Сколько счетчик?
...
Рейтинг: 0 / 0
24.06.2021, 18:59
    #40079936
asv79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
PetroNotC Sharp
asv79,
Нужно чтобы правильно работали транзакции в многопользовательской среде.
- юзверь А добавил 3 товара но не закоммитил
- юзверь Б удалил 10 товаров.
Сколько счетчик?

так как источником правды у нас является бд,то товаров будет -10
транзакции работают правильно и с этим все норм ,меня интересует лишь вопрос какую мапу использовать
конкуретную - но в ней один хрен пут/гет не конкурентны
либо обычную
...
Рейтинг: 0 / 0
24.06.2021, 18:59
    #40079937
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
asv79,
Если ничего не трогать, то действительно, бери себе из бд В ЛЮБОМ ПОТОКЕ твой count и никаких ошибок. За этим следит СУБД.
А вот раз ты придумал велосипед, то много чего надо продумать.
...
Рейтинг: 0 / 0
24.06.2021, 19:05
    #40079938
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
asv79
PetroNotC Sharp
asv79,
Нужно чтобы правильно работали транзакции в многопользовательской среде.
- юзверь А добавил 3 товара но не закоммитил
- юзверь Б удалил 10 товаров.
Сколько счетчик?

так как источником правды у нас является бд,то товаров будет -10
транзакции работают правильно и с этим все норм ,меня интересует лишь вопрос какую мапу использовать
конкуретную - но в ней один хрен пут/гет не конкурентны
либо обычную

Странный вопрос.
Мапа это
Key=value
А count ОДНО ЧИСЛО.
Причем мапа?
У тебя всегда мысли бегут впереди рта.
Ты еще все всем тут не объяснил и думаешь что все все поняли.
Счас ddl начну просить))))
Чем запрос не устроил? Он ВСЕГДА актуальный?
...
Рейтинг: 0 / 0
24.06.2021, 19:05
    #40079939
asv79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
PetroNotC Sharp
asv79,
Если ничего не трогать, то действительно, бери себе из бд В ЛЮБОМ ПОТОКЕ твой count и никаких ошибок. За этим следит СУБД.
А вот раз ты придумал велосипед, то много чего надо продумать.

почему же велосипед? вполне себе нормальная практика- зачем мне ,если я точно знаю,что состояние не менялось - делать лишний запрос в бд- это дорого очень
кеширование тут само собой напрашивается ,вопрос лишь в реализации
...
Рейтинг: 0 / 0
24.06.2021, 19:06
    #40079940
asv79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
PetroNotC Sharp
asv79
пропущено...

так как источником правды у нас является бд,то товаров будет -10
транзакции работают правильно и с этим все норм ,меня интересует лишь вопрос какую мапу использовать
конкуретную - но в ней один хрен пут/гет не конкурентны
либо обычную

Странный вопрос.
Мапа это
Key=value
А count ОДНО ЧИСЛО.
Причем мапа?
У тебя всегда мысли бегут впереди рта.
Ты еще все всем тут не объяснил и думаешь что все все поняли.
Счас ddl начну просить))))
Чем запрос не устроил? Он ВСЕГДА актуальный?

петро ты опять не прочитал тему- счетки идут на группы в которых есть люди) групп много ,соотвественно ключом мапы является id группы,значением счетчик
...
Рейтинг: 0 / 0
24.06.2021, 19:06
    #40079941
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
asv79,
>так как источником правды у нас является бд,то товаров будет -10
= угу.
А в кеше ппотухшем не - 10
...
Рейтинг: 0 / 0
24.06.2021, 19:09
    #40079943
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
asv79
PetroNotC Sharp
asv79,
Если ничего не трогать, то действительно, бери себе из бд В ЛЮБОМ ПОТОКЕ твой count и никаких ошибок. За этим следит СУБД.
А вот раз ты придумал велосипед, то много чего надо продумать.

почему же велосипед? вполне себе нормальная практика- зачем мне ,если я точно знаю,что состояние не менялось - делать лишний запрос в бд- это дорого очень
кеширование тут само собой напрашивается ,вопрос лишь в реализации
а когда состояние меняется при 1000 транзакций в сек? В какое время?
...
Рейтинг: 0 / 0
24.06.2021, 19:10
    #40079944
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
asv79
PetroNotC Sharp
пропущено...

Странный вопрос.
Мапа это
Key=value
А count ОДНО ЧИСЛО.
Причем мапа?
У тебя всегда мысли бегут впереди рта.
Ты еще все всем тут не объяснил и думаешь что все все поняли.
Счас ddl начну просить))))
Чем запрос не устроил? Он ВСЕГДА актуальный?

петро ты опять не прочитал тему- счетки идут на группы в которых есть люди) групп много ,соотвественно ключом мапы является id группы,значением счетчик
триггер поставь. Будет тормозить но немного
...
Рейтинг: 0 / 0
24.06.2021, 19:10
    #40079945
asv79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
PetroNotC Sharp
asv79,
>так как источником правды у нас является бд,то товаров будет -10
= угу.
А в кеше ппотухшем не - 10

так чтобы он не протухал его надо инвалидировать при инсерт/делете
...
Рейтинг: 0 / 0
24.06.2021, 19:15
    #40079947
asv79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
PetroNotC Sharp
asv79
пропущено...

почему же велосипед? вполне себе нормальная практика- зачем мне ,если я точно знаю,что состояние не менялось - делать лишний запрос в бд- это дорого очень
кеширование тут само собой напрашивается ,вопрос лишь в реализации
а когда состояние меняется при 1000 транзакций в сек? В какое время?

состояние меняется при каждой транзакции- если был апдейт/делит ,ты верно уловил направление - но эти инсерты делаются батчем в рамках одной транзакции - тоесть если накинули 1 к - то и счетчки вырастет на 1к
и на методах инсерта /делета у меня этот кеш инвалидируется - так что тут все в порядке
...
Рейтинг: 0 / 0
24.06.2021, 19:15
    #40079948
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
asv79
PetroNotC Sharp
asv79,
>так как источником правды у нас является бд,то товаров будет -10
= угу.
А в кеше ппотухшем не - 10

так чтобы он не протухал его надо инвалидировать при инсерт/делете
вот про это и потрынди.
Как?
...
Рейтинг: 0 / 0
24.06.2021, 19:17
    #40079950
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
asv79,
Ты явно забыл про пакетный insert и каскад))))
...
Рейтинг: 0 / 0
24.06.2021, 19:17
    #40079951
asv79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
PetroNotC Sharp
asv79
пропущено...

петро ты опять не прочитал тему- счетки идут на группы в которых есть люди) групп много ,соотвественно ключом мапы является id группы,значением счетчик
триггер поставь. Будет тормозить но немного

не тормоза мне не нужны- с мапой все работает супер быстро ,тут вопрос лишь в конкуретности ,сейчас у меня там конкарент мапа- я думаю нужна ли она мне ,если верить докам некторые из ее методов не трейд сейф,хотя работает она так же быстро ,как и обычная мапа
...
Рейтинг: 0 / 0
24.06.2021, 19:19
    #40079954
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
asv79,
> с мапой все работает супер быстро ,
= но протухает и нет конкурентного доступа))))
...
Рейтинг: 0 / 0
24.06.2021, 19:21
    #40079956
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
asv79,
Возьми готовое. Кеш второго уровня хибера
...
Рейтинг: 0 / 0
24.06.2021, 19:25
    #40079958
asv79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
PetroNotC Sharp
asv79,
> с мапой все работает супер быстро ,
= но протухает и нет конкурентного доступа))))
как раз и не протухает и доступ конкуретный
но запись неконкурента
я не хочу тащить в код синхронайзед блоки
...
Рейтинг: 0 / 0
24.06.2021, 19:27
    #40079959
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
asv79,
Я спросил как он не протухает на
insert into from (select....)
...
Рейтинг: 0 / 0
24.06.2021, 19:29
    #40079960
asv79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
PetroNotC Sharp
asv79,
Возьми готовое. Кеш второго уровня хибера

у нас хелелькаст на проекте ,но не хочу туда простой счетчик писать - я думаю что для этого подойдет именно хешмапа - самое дешевое и быстрое решение
...
Рейтинг: 0 / 0
24.06.2021, 19:32
    #40079962
asv79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тема чтобы потрындеть
PetroNotC Sharp
asv79,
Я спросил как он не протухает на
insert into from (select....)

я ж тебе ответил на методах инсерта /делита кеш инвалидируется
тоесть я заново делают селект каунт и пучу это в мапу - перезаписывая текущее значение
но надо понимать что такие манипуляции у нас достаточно редки ,в основном идет запрос на получение и вот тут кеш и будет работать
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Тема чтобы потрындеть / 25 сообщений из 51, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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