|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Приветствую! Использую связку myBatis и PostgreSQL. Приложение делает инсерт в таблицу [table1], вызывает метод push() и параллельный поток делает селект из этой же таблицы [table1] и обрабатывает полученные записи для дальнейшего анализирования. myBatis использует пул потоков к PostgreSQL. В какой-то момент, получается так, что инсерт и селект происходят почти в одно и то же время (разница 0.002 мс) и селект не видит новых записей. Код инсерта: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Код селекта: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Подскажите, может кто сталкивался, как это разруливается. Пробовал ставить в SqlMapHelper.getSqlSessionFactory().openSession isolation level READ COMMITED, но все равно не видит. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 06:16 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
qi_ip, Так все правильно! Разные транзакции. Транзакция для insert еще не закончилась, а транзакция для select уже началась. Можно попробовать "грязное чтение", тогда возможно, будет работать как вам надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 06:47 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
qi_ip как это разруливается. Код исправно ПАРАЛЛЕЛЬНО И НЕЗАВИСИМО работает. Когда то первым будет чтение, когда то вставка. Вам это не нравится. В чем проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 07:17 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
mad_nazgul qi_ip, Так все правильно! Разные транзакции. Транзакция для insert еще не закончилась, а транзакция для select уже началась. Можно попробовать "грязное чтение", тогда возможно, будет работать как вам надо. Метод push() по коду вызывается уже после того, как произошел sqlSession.commit(); , поэтому теоретически select из другого потока должен (не факт) видеть сохраненную запись? Или я не прав? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 08:32 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
PetroNotC Sharp qi_ip как это разруливается. Код исправно ПАРАЛЛЕЛЬНО И НЕЗАВИСИМО работает. Когда то первым будет чтение, когда то вставка. Вам это не нравится. В чем проблема? Ну проблема как раз выше описал, что сначала происходит sqlSession.commit(); , потом инициируется метод, где открывается новая транзакция для чтения этой записи, но ее не читает ))) хотя теоретически если commit не fail, то запись уже в БД. Но это только теория... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 08:37 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
qi_ip поэтому теоретически select из другого потока должен (не факт) видеть сохраненную запись? Или я не прав? Поставь логирование и дай сюда лог. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 08:54 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
qi_ip mad_nazgul qi_ip, Так все правильно! Разные транзакции. Транзакция для insert еще не закончилась, а транзакция для select уже началась. Можно попробовать "грязное чтение", тогда возможно, будет работать как вам надо. Метод push() по коду вызывается уже после того, как произошел sqlSession.commit(); , поэтому теоретически select из другого потока должен (не факт) видеть сохраненную запись? Или я не прав? Не совсем. Т.к. взаимодествие асинхронное, то нужно еще время для PostgreSQL, чтобы "закрыть" транзакцию. Так что что будет и как - фиг его знает. Зависит еще от скорости PostgreSQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 11:04 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
qi_ip, попробуйте использовать одну сессию (если это возможно) и для инсерта и для селекта, т е вот этот код: Код: java 1.
выполняйте только один раз ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 11:46 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Kachalov, В разных потоках нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 12:01 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
PetroNotC Sharp В разных потоках нельзя. - почему это? синхронизацию потоков ручками сделать и передавать инстанс SqlSession с комитом при выходе из синхронизированного куска кода ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 12:28 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
А так? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 12:35 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Kachalov, Да он вообще ошибся со своей ошибкой. Должен быть видно все что закоммичено в другом соединении. А в этом и подавно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 12:39 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Kachalov почему это? 1. Не потокобезопасен ни класс ни драйвер. 2. Можно синронизировать и тормозить БЛ. Зачем тогда параллелили? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 12:40 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Kachalov, Да он вообще ошибся со своей ошибкой. Должен быть видно все что закоммичено в другом соединении. А в этом и подавно. Вообще зависит от реализации. Хз что commit() делает. Гарантированно данные будут записаны, когда закончится нативная транзакция у Postgres, а вот то что она закнчивается на commit() никто не гарантирует. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 12:41 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
PetroNotC Sharp 1. Не потокобезопасен ни класс ни драйвер. - еще раз: синхронизацию сделать самостоятельно PetroNotC Sharp 2. Можно синронизировать и тормозить БЛ. Зачем тогда параллелили? - а зачем селект после инсерта? такая бизнес логика ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 12:43 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
забыл ник Хз что commit() делает. Гарантированно данные будут записаны, когда закончится нативная транзакция у Postgres, а вот то что она закнчивается на commit() никто не гарантирует. - понятно что там еще кэши есть и у MyBatis, и дальше. Но на уровне кэша MyBatis в одной сессии данные врядли противоречивы ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 12:46 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Kachalov забыл ник Хз что commit() делает. Гарантированно данные будут записаны, когда закончится нативная транзакция у Postgres, а вот то что она закнчивается на commit() никто не гарантирует. - понятно что там еще кэши есть и у MyBatis, и дальше. Но на уровне кэша MyBatis в одной сессии данные врядли противоречивы Наверное можно, но мне кажется проще правильно написать push - чтобы он уже отрабатывал когда сессия закрылась, тогда не важно будет из какой сессии идет селект ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 12:52 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
qi_ip, современные базы данных оперируют не insert-ами а транзакциями. Транзакция это более общее понятие. Обычно оно охватывает пакет изменений. Это сделано для того чтобы в сложной системе не было аномалий типа ты переводил деньги с 1 счета на другой и деньги вдруг внезапно исчезли навсегда. Тоесть чтение должно быть консистентным по отношению к бизнес-операциям. То о чем ты пишешь это dirty-read. Это бывает когда работаешь с двоичными файлами. Если ты хочешь организовать коммуникацию двух java-потоков эффективно (producer-consumer) то надо делать чтобы продюсер уведомлял консюмера через очереди или JMS о том что он закончил порцию операций и она закоммичена и с ней можно работать. Но и даже в таком виде КПД твоей двухпоточной системы будет невысоким т.к. консюмер будет все равно вычитывать объем инфы чуть больше чем ему надо на самом деле. Как бороться с этим - я пока не знаю это глубоко архитектурный вопрос и надо понимать что ты делаешь на самом деле. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 12:58 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
mayton надо делать чтобы продюсер уведомлял консюмера через очереди или JMS о том что он закончил порцию операций и она закоммичена и с ней можно работать. - я так понял, что у ТС парадокс в том, что он примерно так все и сделал: закомитил (на уровне MyBatis), и оповестил что можно читать и тут облом - данных в базе еще нет ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 13:25 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
забыл ник PetroNotC Sharp Kachalov, Да он вообще ошибся со своей ошибкой. Должен быть видно все что закоммичено в другом соединении. А в этом и подавно. Вообще зависит от реализации. Хз что commit() делает. Гарантированно данные будут записаны, когда закончится нативная транзакция у Postgres, а вот то что она закнчивается на commit() никто не гарантирует. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 13:31 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Kachalov а зачем селект после инсерта? такая бизнес логика То что нужно делать после не делают в другом потоке. Пусть логи даст. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 13:33 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
забыл ник Kachalov пропущено... - понятно что там еще кэши есть и у MyBatis, и дальше. Но на уровне кэша MyBatis в одной сессии данные врядли противоречивы Наверное можно, но мне кажется проще правильно написать push - чтобы он уже отрабатывал когда сессия закрылась, тогда не важно будет из какой сессии идет селект - можно теоретически усложнить задачу (чисто гипотетически, чтобы обсудить интересную архитектурную проблему) и предположить что речь идет о двух различных сервисах (допустим у нас SOA). Везде есть свои кэши, буфера, сетевые соединения, но БД общая (транзакции разные, коннекты к ней разные и т д, т е все легитимно). Один сервис пишет в БД, другой читает когда получает извещение через шину сообщений. Проблема: сообщение о записи через шину приходит раньше, чем данные фактически попадают в БД и становятся доступны для чтения. Пока вижу принципиально два решения (и оба не очень): 1) читать данные из общего кэша, т е до того как они фактически попали в БД и стали доступны для чтения; 2) проверять доступность данных в БД (тут варианты как, но все кривые) и уже тогда посылать извещение. Еще идеи? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 13:38 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Kachalov, В SOA только второй вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 13:41 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Kachalov, Если он читает, а данных нет, значит их нет (с) И никакой проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 13:42 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Если он их закоммитил и следующая читающая транзакция их не видит значит либо режим изоляции читающей транзакции таков. Либо нарушена какая-то причинно-следственная связь и читающий находится в далёком будущем. Я думаю что старик Эйнштейн с этим не согласится. И я тоже. Поэтому надо логи. С точностью таймингов до милисекунд и будем разбираться. Я не работал с SqlMapHelper и не вижу под капотом какие там режими изоляции. Поэтому надо также чтоб кто-то знающий подтвердил что "оно так". Или "не так". ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 14:08 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
mayton не вижу под капотом какие там режими изоляции Аффтор уже все решил и ушел)) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 14:20 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
PetroNotC Sharp qi_ip поэтому теоретически select из другого потока должен (не факт) видеть сохраненную запись? Или я не прав? Поставь логирование и дай сюда лог. Пока не знаю, какой лог нужно выложить. Смотрю на два параметра: 1) вызов метода select в логе 2) время инсерта строки в БД. И что-то все равно из другого потока не видит заинсерченную строку. Еще есть варианты, когда запись сделана на 1-5 мс раньше, чем запустился читающий метод, но ее все равно не видно... забыл ник А так? Код: java 1. 2. 3. 4.
забыл ник ....Наверное можно, но мне кажется проще правильно написать push - чтобы он уже отрабатывал когда сессия закрылась, тогда не важно будет из какой сессии идет селект Попробовал, все равно все также (((( PetroNotC Sharp Kachalov а зачем селект после инсерта? такая бизнес логика То что нужно делать после не делают в другом потоке. Пусть логи даст. Один поток обрабатывает входные данные и пишет (таких потоков может быть несколько, зависит от количества входящих соединений). Другой поток - другой джоб, который отвечает только за обработку сохраненных сообщений. PetroNotC Sharp mayton не вижу под капотом какие там режими изоляции Аффтор уже все решил и ушел)) Еще не решил ))) все еще тут. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 14:50 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Kachalov Проблема: сообщение о записи через шину приходит раньше, чем данные фактически попадают в БД и становятся доступны для чтения. А еще БД может работать в режиме нескольких реплик на чтение Ну это классика же - если нужна консистентность данных то применяем распределенную транзакцию(медленно,но верно) Если требования консистентности можно ослабить(eventual consistency) то вариантов несколько: a) Если данные некритичны - то и хер с ним б) Писать кастомную логику. Например, пришло сообщение с ID =123, делаем селект - если айди нету, то ждем, потом еще раз и еще.. пока не истечет таймааут по SLA - кидаем алерт в мониторинг Пока вижу принципиально два решения (и оба не очень): Kachalov 1) читать данные из общего кэша, т е до того как они фактически попали в БД и стали доступны для чтения; Считай это и есть распределенная транзакция Kachalov 2) проверять доступность данных в БД (тут варианты как, но все кривые) и уже тогда посылать извещение. Кастомная логика, все правильно - только так [/quot] Kachalov Еще идеи? Есть тенденция, что программисты переоценивают степень важности консистентности. У многих бизнес процессов есть встроенные процедуры на реагирование в таких ситуациях. Просто при автоматизации окно, когда дерьмо может произойти(данные с одного офиса не доступны в другом) сокращается с часов до секунды и это вполне устраивает бизнес. Универсального рецепта нет, надо рассматривать каждый конкретный случай в отдельности. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 15:05 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
qi_ip Пока не знаю, какой лог нужно выложить. Тупо час целый думал какой лог нужен? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 15:11 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Што там вообще за срочность? Диспетчерская аэропорта штоли? В 80% можно согласовать ТЗ чтобы данные синкались в течение нескольких минут. У нас вот справочники стран и валют вообще отстают на несколько дней. И ничо. Бизнес терпит. Просто есть такие данные которые вобщем не срочные. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 15:12 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
mayton Што там вообще за срочность? Диспетчерская аэропорта штоли? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 15:13 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
mayton Што там вообще за срочность? Диспетчерская аэропорта штоли? В 80% можно согласовать ТЗ чтобы данные синкались в течение нескольких минут. У нас вот справочники стран и валют вообще отстают на несколько дней. И ничо. Бизнес терпит. Просто есть такие данные которые вобщем не срочные. есть тесты-кейсы, которые из-за этого селекта фэйлятся - вся суть пройти эти тесты. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 15:15 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
mayton Што там вообще за срочность? Диспетчерская аэропорта штоли? В 80% можно согласовать ТЗ чтобы данные синкались в течение нескольких минут. У нас вот справочники стран и валют вообще отстают на несколько дней. И ничо. Бизнес терпит. Просто есть такие данные которые вобщем не срочные. В тестах есть очередность, которую нужно соблюсти, вот она и не проходит из-за этого. Тесты не мои ) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 15:16 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 15:21 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
qi_ip mayton Што там вообще за срочность? Диспетчерская аэропорта штоли? В 80% можно согласовать ТЗ чтобы данные синкались в течение нескольких минут. У нас вот справочники стран и валют вообще отстают на несколько дней. И ничо. Бизнес терпит. Просто есть такие данные которые вобщем не срочные. В тестах есть очередность, которую нужно соблюсти, вот она и не проходит из-за этого. Тесты не мои ) Модульные тесты это не делают. Они простые как репа. На вход подали управляющее воздействие. Получили выход. Судя по всему ты залез в интеграцию. С интеграцией просто может быть всякое. Например тупо очистка БД между кейсами. Тоесть ты запузырил insert в скоупе 1 теста и почему-то понадеялся что состояние базы должно сохранится. Может да. Может нет. Так оно или нет - сказать сложно. Надо изучать твой тестовый env. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 15:40 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Даже более того. Модульные иногда исполняются параллельно в потоках чтобы ускорить тестирование. И это лакмус для плохого разработчика. Если они мерцают (flaky) тоесть то проходят то валятся - то это признак того что разраб не понял задачу и втащил глобальное состояние. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 15:42 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Для Junit я иногда задавал явно Order как пишет Баелдунг https://www.baeldung.com/junit-5-test-order в тех случаях когда важно гарантировать порядок методов. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 15:44 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Аффтар, начинай опять с прошлой твоей темы. Очередность в наносекундах при параллельных работах. Ты прошлую тему не закрыл. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 15:50 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Kachalov Еще идеи? Есть, СУБД отправляет необходимое сообщение в шину. Тут недавно обсуждение было в проектировании БД на предмет стоит ли применять триггеры, так вот эта техническая задача как раз через них и решается или жависты по религиозным соображениям не пользуются инструментами СУБД? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 19:04 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Они не знают как триггеры создавать через Hibernate. Поэтому для них триггеры - нечто запредельно невозможное. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 19:16 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
iOracleDev, В прошлой его теме обсудили и с бд и без бд. На любой вкус. Но автор проспал и добил в ТЗ наносекунды. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 19:17 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
mayton, В хибере тоже триггеры есть) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 19:17 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Шикарно. И как экземпляр 1-го хибернейта узнает о том что сработал триггер а 2-м экземпляре (если 2 app-servers подключено к БД)? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 19:30 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
mayton, Я не знаю зачем тут вообще триггеры. Пусть расскажет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 19:43 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Сложно сказать. Такой код как автор пишет я-бы сделал не на Batis а JDBC. Потому-что мотивация к использованию батиса очень слабая. Там есть свои плюсы но тут они вообще не выражены никак. Вот к примеру недавно мы словили OutOfMemory на постгресовском драйвере. Пофиксилось следующим образом. Код: java 1. 2.
Явное указание курсора как FORWARD и размер пачки позволило тонко настроить то что надо для задачи. Тоесть необходимый минимум. Как-бы мы такое сделали на батисе - я не знаю. Может можно. Может и нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 20:09 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Я не знаю зачем тут вообще триггеры. Пусть расскажет. В таблицу попадает запись от первого сервиса, триггер на таблице формирует сообщение для второго сервиса и помещает его в очередь сообщений, также создает джоб обработки очереди сообщений. По commit фиксируются все изменения в том числе джоб, т.е изменения подтверждены и обработка очереди сообщений для передачи сервисам стартовала. Можно сделать и без триггера, если сообщение от первого сервиса будет вставляться не напрямую в таблицу, а посредством вызова хранимой процедуры в БД, которая инкапсулирует всю обработку сообщения в БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 22:40 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
iOracleDev Можно сделать и без триггера, если сообщение от первого сервиса будет вставляться не напрямую в таблицу, а посредством вызова хранимой процедуры в БД, которая инкапсулирует всю обработку сообщения в БД. Лучше уж в хранимке. Правда непонятно что там инкапсулировать. Субд создавали для транзакций. Где тут транзакции с откатами? Субд создавади для модели данных со связями. Где ту модель кроме линецного списка? Может вам просто файлик подойдёт? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 23:20 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
PetroNotC Sharp конечно создавать job в триггере 5000 раз в сек еще то удовольствие). Вставка одной записи и коммит 5000 раз в секунду, не а чё классная архитектура приложения)) PetroNotC Sharp Субд создавали для транзакций. Где тут транзакции с откатами? Проблемы ТС как раз из на них)) PetroNotC Sharp Субд создавади для модели данных со связями. Где ту модель кроме линецного списка? Может вам просто файлик подойдёт? Понятия не имею, зачем ТС-у вставлять какую то запись в БД, передавать сообщение другому сервису, чтобы тот после этого прочитал из БД вставленную запись. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 23:49 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
iOracleDev Проблемы ТС как раз из на них)) Не закрыл постановку задачи в прошлом топике и брослся кодировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 07:11 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Может вам просто файлик подойдёт? - даже если выкинуть MyBatis, базу и оставить файлик в которой один пишет, а другой читает, возможна описанная архитектурная коллизия: писатель считает что он уже написал и оповещает об этом читателя, а по факту данные в файл еще не попали и для чтения недоступны. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 13:18 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Kachalov, Писатель не должен оповещать. Есть подписчики. Есть оповещатели. А писатель это техническая должность нижнего уровня. Как вариант выше предложили его засунуть в хранимку. Тогда коллизии не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 13:27 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Но он делает Протокол. Это вообще по другому делают. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 13:29 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Писатель не должен оповещать. - вероятно Вы хотите сказать что мы наблюдаем архитектурную ошибку ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 13:43 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Kachalov, Угу. Причем ошибся он еще в прошлом топике. В оперативке надо было очередь делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 14:04 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Не знаю, что вы так набросились на MyBatis, но меня он пока ни разу не подводил, очень удобно мапить данные, быстрая и легкая библиотека, в отличии от hiber'a у меня как то с ним готовка уже лет 10-15 не ладится. По сути. Для уведомлений в разных субд есть , внезапно, уведомления. Например в pg ,notify "Во-первых, если NOTIFY выполняется внутри транзакции, уведомления доставляются получателям после фиксирования транзакции и только в этом случае. " Видел подобное в Firebird'е, так что это не экзотика. А listener слушает, при получении события делает select. Должно работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 14:11 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Troglodit Видел подобное в Firebird'е, так что это не экзотика. В субд есть xml, но хранение в нем экзотика Есть EAV, но это экзотика Есть JSON поля, но это экзотика. Продолжать? .. А батис тут никто не ругал ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 14:31 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
PetroNotC Sharp В субд есть xml, но хранение в нем экзотика Есть EAV, но это экзотика Есть JSON поля, но это экзотика. Продолжать? .. А батис тут никто не ругал а в чем лучше хранить json и xml или не жестко структурированные данные? А уж обрабатывать xpath и jsonpath?-это чем не экзотичным и реляционным вы заменяете? А валидация схемами документов. Мне продолжать? Про MyBatis видимо было несколько страниц назад, я на даты не смотрел, возможно устаревшее сообщение. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 14:53 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Troglodit, OFF в блобе храни или спец XMLDB. А зачем делвть из бд мусорку с неформализованными данными и моделю? Мне продолжать? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 15:38 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
XML и JSON в БД хранить можно. Но следуя принципам реляционных теорий мы должны объявить этот XML атомом в контексте решаемой нами задачи. Ежели он не таковой (не атом) то мы - жалкие школьники и нас надо снова садить за 1 курс университета и проходить Дейта и Кодда с нуля. Еще мысль. Развивая идею проектирования баз на XML я просто могу спросить - а почему вы остановились на 1 поле? Объявите всю data-row XML сущностью и тогда база примет вид Код: java 1.
И таким образом вся теория проектирования баз вырождается и превращается в профанацию. Об этом кстати писал Том Кайт. XML - есть и поддерживается но решения на базе него - "нелетают". Имеется в виду что низко перформят. Ну и апофеозом проектирования можно сделать перенос всех таблиц в 1 большой XML документ. Разумеется за кадром останутся техники DML - операций но тут я просто переведу стрелки на тех кто за такое решение ратует. Пожалуйста господа. Расскажите как это все будет работать и перформить. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 17:16 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
mayton XML и JSON в БД хранить можно. Но следуя принципам реляционных теорий мы должны объявить этот XML атомом в контексте решаемой нами задачи. Ежели он не таковой (не атом) то мы - жалкие школьники и нас надо снова садить за 1 курс университета и проходить Дейта и Кодда с нуля. Еще мысль. Развивая идею проектирования баз на XML я просто могу спросить - а почему вы остановились на 1 поле? Объявите всю data-row XML сущностью и тогда база примет вид Код: java 1.
И таким образом вся теория проектирования баз вырождается и превращается в профанацию. Об этом кстати писал Том Кайт. XML - есть и поддерживается но решения на базе него - "нелетают". Имеется в виду что низко перформят. Ну и апофеозом проектирования можно сделать перенос всех таблиц в 1 большой XML документ. Разумеется за кадром останутся техники DML - операций но тут я просто переведу стрелки на тех кто за такое решение ратует. Пожалуйста господа. Расскажите как это все будет работать и перформить. Я не знаю, что у всех так горит, от того, что данные будут, о ужас, не реляционные. Зачем идти в крайности. Посмотрите доклад датаарта про тэги на highload'е за прошлый год кажется, как они жевали кактус и в итоге пришли к тому, что в конкретных кейсах nosql все таки мед, пусть и внутри классической рсубд. А так могу вам алаверды, вы на больших данных тогда все должны нормализовать до каждой запятой, вы же за священные нормальные формы. Только когда поток пойдет, вас смоет из без денормализации ваш перфомас вынесет в ... какое-то очень неприятное место. Да, сейчас есть хак,а давайте купим еще n-серверов, ведь можно же, железо дешево, а dba-дорого. А потом на том же highload главный it-шник ozon'a говорит как им мешает легаси дисковая подсистема за 1(или 10 :) ) кажется лям неубитых и как они героически уходили от этого, а подсистема где то пылится. Еще раз, если у вас студенты или стартаперы, которым еще 10 страниц дочитать, тогда ваша стратегия абсолютно верная. Если у вас квалифицированные DBA, то глупо в разумных дозах не использовать возможности СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 19:55 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Да ради бога. Пускай льют свои данные хоть тегами хоть json-ами. Просто они у них не реляционные. Следовательно это не тема нашего топика. У нас - Postgresql. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 20:07 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
mayton Да ради бога. Пускай льют свои данные хоть тегами хоть json-ами. Просто они у них не реляционные. Следовательно это не тема нашего топика. У нас - Postgresql. Доклад был как они это делали не на PostgreSQL, я ошибся, но на Oracle. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 20:09 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Зачем мне 35 минут видоса? Дайте хронометраж где звучит главная мысль и я посмотрю с удовольствием. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 20:33 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
mayton Зачем мне 35 минут видоса? Дайте хронометраж где звучит главная мысль и я посмотрю с удовольствием. Там нет главной мысли. Там повесть. Мы начали так, стало плохо, сделали по другому опять поплохело, и т.д. Нет желания вникать, я не навязываю, хотя в перемотке в 10 мин. управились бы. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 22:19 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Troglodit Зачем идти в крайности. Troglodit вы на больших данных тогда все должны нормализовать до каждой запятой, вы же за священные нормальные формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 23:06 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
А до какой НФ нормализовывать? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 23:12 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
del ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 01:07 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Troglodit Я не знаю, что у всех так горит, от того, что данные будут, о ужас, не реляционные. Зачем идти в крайности. Посмотрите доклад датаарта про тэги на highload'е за прошлый год кажется, как они жевали кактус и в итоге пришли к тому, что в конкретных кейсах nosql все таки мед, пусть и внутри классической рсубд. Код: java 1.
в ней конкуренция есть всегда , я буквально на прошлой неделе смотрел подобное решение, сказать "мне не понравилось" - это совсем ничего не сказать, там у ребят помимо того, что одна транзакция тупо перетирала данные другой (представьте что вот на этом форуме мы решили всю тему хранить в XML/JSON - теперь при добавлении нового сообщения нам придется блокировать всю строку, чтобы сообщения не перетирались, что в свою очередь будет вести к увеличению нагрузки на БД, а по "классике" такого даже не будет), решение еще пестрило другими детскими болезнями, типа вычисления следующего идентификатора как max(id)+1. Если вам кажется, что вы изобрели серебряную пулю, вам в первую очередь стоит задуматься, действительно ли она такая серебряная и почему все поголовно ее уже не используют. Что касается презентации, что вы привели, ну это реально дичь: автор явно путает две разные задачи - "как хранить" и "как быстро выбирать": я бы вот ни при каких условиях не стал бы хранить тэги (несущественные данные) в той же таблице где и часто-меняющиеся бизнес-данные (существенные), просто потому, что в обратном случае добавление тэга будет порождать конкуренцию, которая мне нафиг не нужна на ровном месте (отсылка к SO здесь неуместна - там монопольный доступ к редактированию темы), докладчик же по факту сделал откровенную дичь, не понимая, что "как хранить" и "как быстро выбирать" - это совершенно две несвязные задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 08:54 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
mayton Пожалуйста господа. Расскажите как это все будет работать и перформить. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 08:56 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Андрей Панфилов Ох жесть какая... Когда дизайнят модель в RDBMS, ее дизайнят в том числе таким образом, чтобы в каких-то местах избегать конкуренции, а в каких-то наоборот - порождать. Когда же ваша структура БД имеет вид (ну там, очевидно, PK не хватает): Код: java 1.
в ней конкуренция есть всегда , я буквально на прошлой неделе смотрел подобное решение, сказать "мне не понравилось" - это совсем ничего не сказать, там у ребят помимо того, что одна транзакция тупо перетирала данные другой (представьте что вот на этом форуме мы решили всю тему хранить в XML/JSON - теперь при добавлении нового сообщения нам придется блокировать всю строку, чтобы сообщения не перетирались, что в свою очередь будет вести к увеличению нагрузки на БД, а по "классике" такого даже не будет), решение еще пестрило другими детскими болезнями, типа вычисления следующего идентификатора как max(id)+1. Если вам кажется, что вы изобрели серебряную пулю, вам в первую очередь стоит задуматься, действительно ли она такая серебряная и почему все поголовно ее уже не используют. Что касается презентации, что вы привели, ну это реально дичь: автор явно путает две разные задачи - "как хранить" и "как быстро выбирать": я бы вот ни при каких условиях не стал бы хранить тэги (несущественные данные) в той же таблице где и часто-меняющиеся бизнес-данные (существенные), просто потому, что в обратном случае добавление тэга будет порождать конкуренцию, которая мне нафиг не нужна на ровном месте (отсылка к SO здесь неуместна - там монопольный доступ к редактированию темы), докладчик же по факту сделал откровенную дичь, не понимая, что "как хранить" и "как быстро выбирать" - это совершенно две несвязные задачи. Здорово, что вы поделились своим опытом,есть пара но. Акелла промахнулся, данную структуру предлагал не я, это было предложено mayton'ом в качестве легкого троллинга, чтобы довести до абсурда.Без Pk это вообще дичь, я с вами согласен. Я лишь говорил об полях JSON, в частном случае можно и про XML. Далее отделим мух от котлет, проблема с перезаписью чужих данных возникает не по причине, что формат хранения плохой, просто люди написали криво. Им что религия мешает менять только ЧАСТЬ узлов, так что опять пока мимо кассы. Где то было описано,что Так что, с вашего позволения подитожу: люди микроскопом забивали гвозди было не удобно и разбили прибор. Вывод: микроскопами никогда ни за что нельзя пользоваться. Вы же сами все правильно написали, часто меняющиеся данные в стандартных column'ах, статика нереляционная в json/xml. И все будет замечательно работать. В вашем примере max(id)+1 на больших данных будет бОльшим злом. В соседней ветке count-записей на 18млн таблице считают. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 10:02 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Андрей Панфилов mayton Пожалуйста господа. Расскажите как это все будет работать и перформить. У меня есть небольшой проект append only, где должно было использоваться 5 сущностей(1 сущ. -1 таблица, либо если сделать часть полей полупустыми то 4, при этом 1 сущность никак не связана 1 из них, но должна, Я вышел из ситуации, добавив вводную, что привязвываться будет к последней записи этой сущности. Для полного отображения информации в запросе в будут использованы 3 left join'а. Производительность ожидалась "потрясающей" как при чтении так и записи. Данных не много около 500 тыс. записей за тестовый период. Решил попробовать JSON Взял 1-ю сущность добавил к ней JSON и записывал в нее остальные 4. При этом проблема последней записи для привязки во ВСЕЙ таблице из прошлого примера свелась к поиску внутри этого же JSON'а. Все данные можно получить из 1-й таблицы без LEFT JOIN c помощью языка запросов JSON можно гибко получать нужные данные, данные для поиска отиндексированы. Общее кол-во записей всех сущностей уменьшилось до 70000. Писать запросы для выборки гораздо проще,при увеличении кол-во записей не будет резкого падения производительности на привязку сущностей. Да это слабый пример, но реальный живой кейс. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 10:33 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Troglodit просто люди написали криво. Им что религия мешает менять только ЧАСТЬ узлов Угу. Вместо готового движка работы со МНОЖЕСТВАМИ будем писать свой движок и оптимизировать работы с узлами. Troglodit Решил попробовать JSON Вон откуда ваше отстаивание. Каждый программист впервые в жизни в отрочестве пишут рукописный ОРМ, потом логгер, потом JSON в базе. Потом это проходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 12:09 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Вон откуда ваше отстаивание. Каждый программист впервые в жизни в отрочестве пишут рукописный ОРМ, потом логгер, потом JSON в базе. Потом это проходит. Я где то говорил, что надо забыть про реляционную структуру? И где я что-то отстаивал? Я лишь указал свой скромный опыт и указал на то, что уже лет 15 как в рсубд используют к месту и не к месту эти инструменты. Давайте закроем нашу с вами беседу, т.к. она оффтоп. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 12:29 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Troglodit Я где то говорил, что надо забыть про реляционную структуру? посмотри свой первый пост. Для данной задачи (на наносекунды) не подходит РСУБД. Другое можешь предложить? Мы в Java. Troglodit Давайте закроем нашу с вами беседу, т.к. она оффтоп. OK ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 12:51 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
PetroNotC Sharp посмотри свой первый пост. Для данной задачи (на наносекунды) не подходит РСУБД. Другое можешь предложить? Мы в Java. Первый пост не мой. Задача автора получить в запросе измененные данные, почему это нельзя решить в РСУБД? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 13:02 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Troglodit Первый пост не мой. Troglodit Задача автора получить в запросе измененные данные, почему это нельзя решить в РСУБД? Вам трое в топике возражали. И я в том числе. В магазине, если менеджер упёрся в один пылесос, то он неадекватен. Проехали. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 13:20 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Первый ВАШ пост не ваш? Вам трое в топике возражали. И я в том числе. В магазине, если менеджер упёрся в один пылесос, то он неадекватен. Проехали. да пропустил одно слово. ) Я написал пример реализации через notify listen, кто мне написал, что это не возможно? Покажите, где мой пылесос? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 13:35 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Troglodit Я написал пример реализации через notify listen, кто мне написал, что это не возможно? Мы на форуме sql_ru. То есть клиент-серверные приложения. Извещения клиента от субд - плохой стиль в данной концепции. Troglodit Покажите, где мой пылесос? :) Вот он Troglodit notify listen ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 13:40 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Troglodit Я написал пример реализации через notify listen, кто мне написал, что это не возможно? Мы на форуме sql_ru. То есть клиент-серверные приложения. Извещения клиента от субд - плохой стиль в данной концепции. Troglodit Покажите, где мой пылесос? :) Вот он Troglodit notify listen И где мы этот пылесос обсуждали? И кто возражал кроме вас? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 13:47 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Troglodit Акелла промахнулся ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 14:40 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Андрей Панфилов Это как промахнулся? Видосик приложили же вы с претензией на некую "научную новизну", а там у докладчика начиная с третьей модели (7:00) начинается деградация СУБД, а не эволюция, а завтра молодняк попрет писать свои собственные нетленки вдохновившись подобными "докладами" (вообще я всегда считал, что HiLoad - это что-то про PHP, а тут чет про оракл вещают, но уровень тот же) Я что то сказал про новизну тем более научную? Это DataArt-у них много очень неоднозначных докладов. Видео показывает, как народ шел к "успеху". Мне нравится их смотреть, чтобы не наступать на их грабли. Сама конференция очень даже годная была раньше. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 14:46 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Troglodit Я что то сказал про новизну тем более научную? Это DataArt-у них много очень неоднозначных докладов. Видео показывает, как народ шел к "успеху". Мне нравится их смотреть, чтобы не наступать на их грабли. Сама конференция очень даже годная была раньше. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 15:23 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Андрей Панфилов Меня в институте так учили, что в любом докладе/статье должна присутствовать "научная новизна" ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 16:45 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Basil A. Sidorov ... вот только прикладное программирование - ремесло, а не наука. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 17:12 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
"Всяк кулик ..." и "Шо маемо ..." Исследовательская работа для бизнеса - сильно нецелевое направление. Ну и результат соответствующий: попали ваши интересы в узкий случай - хорошо, не попали - а никто и не обещал ничего. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 18:11 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Аффтар, начинай опять с прошлой твоей темы. Очередность в наносекундах при параллельных работах. Ты прошлую тему не закрыл. PetroNotC Sharp да. Согласен. Проблема в людях. Не закрыл постановку задачи в прошлом топике и брослся кодировать. Причем тут наносекунды и чего ВАМ далась прошлая тема? Данный топик никак не связан с прошлой темой. Тем более в той теме я описался, на чем пока остановилась реализация. Там своя часть, тут своя. Я очень рад, что есть такие люди как Вы, которые на раз-два решают любую задачу, но для меня форум как раз для того, чтобы задавать вопросы и понимать где есть ошибки в коде/логике и как их обходить/убирать/менять. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 14:36 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
qi_ip, А по теме что будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 14:59 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
qi_ip, Будь добр, ответь каждому в этой теме и не пропадай. Ты же ТС. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 15:02 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
qi_ip, Тебе тут нужен какой-нибудь java.util.concurrent.BlockingQueue а не устраивать гонки с базой. Зачем это вообще? Ты хотел базу использовать как хранилище? Ради чего? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2019, 12:06 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
crutchmaster, +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2019, 12:22 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
crutchmaster qi_ip, Тебе тут нужен какой-нибудь java.util.concurrent.BlockingQueue а не устраивать гонки с базой. Зачем это вообще? Ты хотел базу использовать как хранилище? Ради чего? В Postgresql есть нативная отличная очередь можно сказать из коробки. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2019, 22:40 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Troglodit В Postgresql есть нативная отличная очередь можно сказать из коробки. Просвящай что за очередь из коробки? order by? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2019, 22:53 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Здравствуйте. Это sql.ru? У вас часто тут бывают срачи двухзвенка vs трехзвенка? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 04:24 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Troglodit, Не всегда целесообразно пихать всё в субд. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 07:06 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
crutchmaster, Слабак он для срача. Да ещё чисто по архитектурному вопросу. В котором тесты писал не он, а он вообще не при делах. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 07:18 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Да я б тоже с удовольствием послушал про очереди внутри dbms. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 15:25 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
mayton PetroNotC Sharp, Да я б тоже с удовольствием послушал про очереди внутри dbms. Имеется ввиду механизм оповещений, встроенный в Postgres. Почитать можно тут либо в офийиальной доке. На основе этого удобно строить процесс CDC(change data capture) модный сейчас ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 15:36 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
забыл ник механизм оповещений Ничего нового и есть наверно во всех базах. Вадя тут нотификацию веб сокетов делает. Кто на чём). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 15:54 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
PetroNotC Sharp забыл ник механизм оповещений Ничего нового и есть наверно во всех базах. Вадя тут нотификацию веб сокетов делает. Кто на чём). Хм. Ну дай пруфы на бесплатные push нотификаторы для оракл либо mysql ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 16:09 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
забыл ник, Я не случайно вставил слово наверно. В сиквеле уже 10 лет как было. А в оракле никогда наверно не требовался это изврат. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 16:21 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
забыл ник, Согласись что очередь из коробки и оповещения это совсем разные вещи. Чтобы хвалить автора топика. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 16:23 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
mayton PetroNotC Sharp, Да я б тоже с удовольствием послушал про очереди внутри dbms. Теперь ждем про наносекунды. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 16:24 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
забыл ник, Мне кажется он построил очередь из таблицы бд. А не то что ты подумал. Имхо. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 16:25 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
забыл ник Хм. Ну дай пруфы на бесплатные push нотификаторы для оракл либо mysql Что понимается под push-нотификаторами не очень понимаю, но вроде DBMS_AQ вполне себе "бесплатный" по крайне мере в As of Oracle release 9.2, AQ is bundled with Standard Edition and Enterprise Edition at no extra cost. в 10 и 11 не уверен в 12 его обратно выделили отдельным пакетом Change notification изменений в БД работают банально на уровне Net80/OCI т.ч. тоже ничего покупать не нужно AFAIK p.s. лицензионная политика зависит от версии, лицензи. используемого функционала и прочих договоренностей. Точную и официальную информацию может дать только Ваш sales manager в представительстве Oracle Co. ))) p.p.s. а если у компании например куплен OeBS ))), то в графе цена (или в примечание под табличкой) для огромного кол-ва продуктов Oracle вообще написано "купившим OeBS, все бесплатно" ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 16:26 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Troglodit В Postgresql есть нативная отличная очередь можно сказать из коробки. Просвящай что за очередь из коробки? order by? С вами разговор окончен. Ищите себе другого, кто будет вам рассказывать как "корабли бороблят космическое пространство". ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 23:37 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
mayton Да я б тоже с удовольствием послушал про очереди внутри dbms. Ну как бы pgq-надежная давняя можно сказать почти родная, разный тулзы на ней построены. Вопрос нужна ли она автору, я не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 23:39 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
забыл ник mayton PetroNotC Sharp, Да я б тоже с удовольствием послушал про очереди внутри dbms. Имеется ввиду механизм оповещений, встроенный в Postgres. Почитать можно тут либо в офийиальной доке. На основе этого удобно строить процесс CDC(change data capture) модный сейчас Кто создатель этого замечательного продукта? Почему он не в домене https://www.postgresql.org ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 23:49 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Troglodit Ищите себе другого, кто будет вам рассказывать Troglodit Ну как бы pgq-надежная давняя можно сказать почти родная, разный тулзы на ней построены. Вопрос нужна ли она автору, я не знаю. Это ты типо рассказал что то новое. Добро пожаловать в публичный форум. Тут все равны как в бане. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 08:13 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Troglodit Ищите себе другого, кто будет вам рассказывать Troglodit Ну как бы pgq-надежная давняя можно сказать почти родная, разный тулзы на ней построены. Вопрос нужна ли она автору, я не знаю. Это ты типо рассказал что то новое. Добро пожаловать в публичный форум. Тут все равны как в бане. Вы ошиблись. ЧСВ отпускается в соседнем отделе, хотя у вас его и так через край. Если читали через строку,повторюсь: докапывайтесь до других, ваше эго в разговоре мне не интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 08:59 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Troglodit, Мы тут по теме все пишем. У вас есть что по теме, а не про меня лично? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 09:04 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Troglodit ЧСВ Как будто что-то плохое. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 09:07 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
crutchmaster Как будто что-то плохое. Я не говорил что это плохо. Просто в данном контексте для меня контрпродуктивно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 22:41 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
Troglodit crutchmaster Как будто что-то плохое. Я не говорил что это плохо. Просто в данном контексте для меня контрпродуктивно. Слово коллекция в оперативке изучил? Java программист. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 08:47 |
|
Mybatis+PostgreSQL паралелльные потоки
|
|||
---|---|---|---|
#18+
ИТОГ решения проблемы: 1) для нахождения места проблемы было написано тестовое приложение, которое содержала часть логики проблемного кода: одновременно инсертились и читались большое количество записей в БД. 2) в БД была включена аналитика мониторинга по запросам: pg_stat_statements В логах изначально ничего замечано не было, потому что при включении уровня DEBUG/TRACE, ошибка не проявлялась. В результате оказалось, что проблема была смешанная: БД и код (по большей части логика). При работе в определенный момент select из базы данных работал долго (до 90 мс и больше) и если в этот момент иницировалось добавление элемента в очередь, то этот элемент игнорировался и не добавлялся в очередь для селекта. И соответственно, когда запрос возвращал результат, то он был пустой. Спасибо большое Всем, кто участвовал в разборе топика! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2019, 12:10 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120990]: |
0ms |
get settings: |
21ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
2175ms |
get tp. blocked users: |
2ms |
others: | 369ms |
total: | 2663ms |
0 / 0 |