powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Mybatis+PostgreSQL паралелльные потоки
115 сообщений из 115, показаны все 5 страниц
Mybatis+PostgreSQL паралелльные потоки
    #39892134
qi_ip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую! Использую связку 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.
SqlSession sqlSession = SqlMapHelper.getSqlSessionFactory().openSession(true);
try {
	List<HashMap> messagesMapList = new ArrayList<>();
	for (Long el : messageList) {
		HashMap map = new HashMap();
		map.put("id", UUID);
		map.put("body", "Here example text");
		messagesMapList.add(map);
	}

	sqlSession.insert("insertMessageList", messagesMapList);
	sqlSession.commit();
	push();
} catch (Exception e) {
	sqlSession.rollback();
} finally {
	sqlSession.close();
}



Код селекта:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SqlSession sqlSession = SqlMapHelper.getSqlSessionFactory().openSession(true);
try {
	List<Mess> messageList = sqlSession.selectList("selectMessages");
	for (Mess m : messageList ) {
		parse(m);
	}
} catch (Exception e) {
} finally {
	sqlSession.close();
}



Подскажите, может кто сталкивался, как это разруливается. Пробовал ставить в SqlMapHelper.getSqlSessionFactory().openSession isolation level READ COMMITED, но все равно не видит.

Спасибо!
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892137
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qi_ip,

Так все правильно!
Разные транзакции.
Транзакция для insert еще не закончилась, а транзакция для select уже началась.

Можно попробовать "грязное чтение", тогда возможно, будет работать как вам надо.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892147
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qi_ip
как это разруливается.
разве есть ошибка?
Код исправно ПАРАЛЛЕЛЬНО И НЕЗАВИСИМО работает.
Когда то первым будет чтение, когда то вставка.
Вам это не нравится.
В чем проблема?
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892167
qi_ip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mad_nazgul
qi_ip,

Так все правильно!
Разные транзакции.
Транзакция для insert еще не закончилась, а транзакция для select уже началась.

Можно попробовать "грязное чтение", тогда возможно, будет работать как вам надо.

Метод push() по коду вызывается уже после того, как произошел sqlSession.commit(); , поэтому теоретически select из другого потока должен (не факт) видеть сохраненную запись? Или я не прав?
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892168
qi_ip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
qi_ip
как это разруливается.
разве есть ошибка?
Код исправно ПАРАЛЛЕЛЬНО И НЕЗАВИСИМО работает.
Когда то первым будет чтение, когда то вставка.
Вам это не нравится.
В чем проблема?

Ну проблема как раз выше описал, что сначала происходит sqlSession.commit(); , потом инициируется метод, где открывается новая транзакция для чтения этой записи, но ее не читает ))) хотя теоретически если commit не fail, то запись уже в БД. Но это только теория...
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892175
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qi_ip
поэтому теоретически select из другого потока должен (не факт) видеть сохраненную запись? Или я не прав?
должен.
Поставь логирование и дай сюда лог.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892235
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qi_ip
mad_nazgul
qi_ip,

Так все правильно!
Разные транзакции.
Транзакция для insert еще не закончилась, а транзакция для select уже началась.

Можно попробовать "грязное чтение", тогда возможно, будет работать как вам надо.

Метод push() по коду вызывается уже после того, как произошел sqlSession.commit(); , поэтому теоретически select из другого потока должен (не факт) видеть сохраненную запись? Или я не прав?


Не совсем.
Т.к. взаимодествие асинхронное, то нужно еще время для PostgreSQL, чтобы "закрыть" транзакцию.

Так что что будет и как - фиг его знает. Зависит еще от скорости PostgreSQL.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892251
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qi_ip,
попробуйте использовать одну сессию (если это возможно) и для инсерта и для селекта, т е вот этот код:
Код: java
1.
SqlSession sqlSession = SqlMapHelper.getSqlSessionFactory().openSession(true);


выполняйте только один раз
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892259
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov,
В разных потоках нельзя.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892272
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
В разных потоках нельзя.

- почему это? синхронизацию потоков ручками сделать и передавать инстанс SqlSession с комитом при выходе из синхронизированного куска кода
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892276
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SqlSession sqlSession = SqlMapHelper.getSqlSessionFactory().openSession(true);
try {
	List<HashMap> messagesMapList = new ArrayList<>();
	for (Long el : messageList) {
		HashMap map = new HashMap();
		map.put("id", UUID);
		map.put("body", "Here example text");
		messagesMapList.add(map);
	}

	sqlSession.insert("insertMessageList", messagesMapList);
	sqlSession.commit();
	
} catch (Exception e) {
	sqlSession.rollback();
} finally {
	sqlSession.close();
}
push();
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892279
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov,
Да он вообще ошибся со своей ошибкой. Должен быть видно все что закоммичено в другом соединении. А в этом и подавно.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892280
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
почему это?

1. Не потокобезопасен ни класс ни драйвер.
2. Можно синронизировать и тормозить БЛ. Зачем тогда параллелили?
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892281
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Kachalov,
Да он вообще ошибся со своей ошибкой. Должен быть видно все что закоммичено в другом соединении. А в этом и подавно.

Вообще зависит от реализации. Хз что commit() делает. Гарантированно данные будут записаны, когда закончится нативная транзакция у Postgres, а вот то что она закнчивается на commit() никто не гарантирует.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892283
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
1. Не потокобезопасен ни класс ни драйвер.

- еще раз: синхронизацию сделать самостоятельно
PetroNotC Sharp
2. Можно синронизировать и тормозить БЛ. Зачем тогда параллелили?

- а зачем селект после инсерта? такая бизнес логика
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892285
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
Хз что commit() делает. Гарантированно данные будут записаны, когда закончится нативная транзакция у Postgres, а вот то что она закнчивается на commit() никто не гарантирует.

- понятно что там еще кэши есть и у MyBatis, и дальше. Но на уровне кэша MyBatis в одной сессии данные врядли противоречивы
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892289
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
забыл ник
Хз что commit() делает. Гарантированно данные будут записаны, когда закончится нативная транзакция у Postgres, а вот то что она закнчивается на commit() никто не гарантирует.

- понятно что там еще кэши есть и у MyBatis, и дальше. Но на уровне кэша MyBatis в одной сессии данные врядли противоречивы

Наверное можно, но мне кажется проще правильно написать push - чтобы он уже отрабатывал когда сессия закрылась, тогда не важно будет из какой сессии идет селект
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892291
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qi_ip, современные базы данных оперируют не insert-ами а транзакциями. Транзакция это более общее
понятие. Обычно оно охватывает пакет изменений. Это сделано для того чтобы в сложной системе не было аномалий
типа ты переводил деньги с 1 счета на другой и деньги вдруг внезапно исчезли навсегда.

Тоесть чтение должно быть консистентным по отношению к бизнес-операциям. То о чем ты пишешь это dirty-read.
Это бывает когда работаешь с двоичными файлами.

Если ты хочешь организовать коммуникацию двух java-потоков эффективно (producer-consumer) то надо делать
чтобы продюсер уведомлял консюмера через очереди или JMS о том что он закончил порцию операций и она закоммичена
и с ней можно работать.

Но и даже в таком виде КПД твоей двухпоточной системы будет невысоким т.к. консюмер будет все равно вычитывать
объем инфы чуть больше чем ему надо на самом деле.

Как бороться с этим - я пока не знаю это глубоко архитектурный вопрос и надо понимать что ты делаешь на самом деле.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892310
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
надо делать
чтобы продюсер уведомлял консюмера через очереди или JMS о том что он закончил порцию операций и она закоммичена
и с ней можно работать.

- я так понял, что у ТС парадокс в том, что он примерно так все и сделал: закомитил (на уровне MyBatis), и оповестил что можно читать и тут облом - данных в базе еще нет
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892317
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
PetroNotC Sharp
Kachalov,
Да он вообще ошибся со своей ошибкой. Должен быть видно все что закоммичено в другом соединении. А в этом и подавно.

Вообще зависит от реализации. Хз что commit() делает. Гарантированно данные будут записаны, когда закончится нативная транзакция у Postgres, а вот то что она закнчивается на commit() никто не гарантирует.
конечно.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892319
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
а зачем селект после инсерта? такая бизнес логика
я и пишу - Странная логика.
То что нужно делать после не делают в другом потоке.
Пусть логи даст.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892324
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
Kachalov
пропущено...

- понятно что там еще кэши есть и у MyBatis, и дальше. Но на уровне кэша MyBatis в одной сессии данные врядли противоречивы

Наверное можно, но мне кажется проще правильно написать push - чтобы он уже отрабатывал когда сессия закрылась, тогда не важно будет из какой сессии идет селект

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

Проблема: сообщение о записи через шину приходит раньше, чем данные фактически попадают в БД и становятся доступны для чтения.

Пока вижу принципиально два решения (и оба не очень):

1) читать данные из общего кэша, т е до того как они фактически попали в БД и стали доступны для чтения;

2) проверять доступность данных в БД (тут варианты как, но все кривые) и уже тогда посылать извещение.

Еще идеи?
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892328
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov,
В SOA только второй вариант.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892329
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov,
Если он читает, а данных нет, значит их нет (с)
И никакой проблемы.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892344
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если он их закоммитил и следующая читающая транзакция их не видит значит либо режим изоляции
читающей транзакции таков. Либо нарушена какая-то причинно-следственная связь и читающий
находится в далёком будущем.

Я думаю что старик Эйнштейн с этим не согласится. И я тоже.

Поэтому надо логи. С точностью таймингов до милисекунд и будем разбираться.

Я не работал с SqlMapHelper и не вижу под капотом какие там режими изоляции. Поэтому надо также
чтоб кто-то знающий подтвердил что "оно так". Или "не так".
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892353
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
не вижу под капотом какие там режими изоляции
лучше сам пусть его не трогает.
Аффтор уже все решил и ушел))
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892377
qi_ip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
qi_ip
поэтому теоретически select из другого потока должен (не факт) видеть сохраненную запись? Или я не прав?
должен.
Поставь логирование и дай сюда лог.

Пока не знаю, какой лог нужно выложить. Смотрю на два параметра: 1) вызов метода select в логе 2) время инсерта строки в БД.
И что-то все равно из другого потока не видит заинсерченную строку. Еще есть варианты, когда запись сделана на 1-5 мс раньше, чем запустился читающий метод, но ее все равно не видно...


забыл ник
А так?
Код: java
1.
2.
3.
4.
....} finally {
	sqlSession.close();
}
push();



забыл ник

....Наверное можно, но мне кажется проще правильно написать push - чтобы он уже отрабатывал когда сессия закрылась, тогда не важно будет из какой сессии идет селект

Попробовал, все равно все также ((((

PetroNotC Sharp
Kachalov
а зачем селект после инсерта? такая бизнес логика
я и пишу - Странная логика.
То что нужно делать после не делают в другом потоке.
Пусть логи даст.

Один поток обрабатывает входные данные и пишет (таких потоков может быть несколько, зависит от количества входящих соединений). Другой поток - другой джоб, который отвечает только за обработку сохраненных сообщений.

PetroNotC Sharp
mayton
не вижу под капотом какие там режими изоляции
лучше сам пусть его не трогает.
Аффтор уже все решил и ушел))

Еще не решил ))) все еще тут.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892394
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov

Проблема: сообщение о записи через шину приходит раньше, чем данные фактически попадают в БД и становятся доступны для чтения.

А еще БД может работать в режиме нескольких реплик на чтение

Ну это классика же - если нужна консистентность данных то применяем распределенную транзакцию(медленно,но верно)
Если требования консистентности можно ослабить(eventual consistency) то вариантов несколько:

a) Если данные некритичны - то и хер с ним
б) Писать кастомную логику. Например, пришло сообщение с ID =123, делаем селект - если айди нету, то ждем, потом еще раз и еще.. пока не истечет таймааут по SLA - кидаем алерт в мониторинг

Пока вижу принципиально два решения (и оба не очень):
Kachalov

1) читать данные из общего кэша, т е до того как они фактически попали в БД и стали доступны для чтения;

Считай это и есть распределенная транзакция

Kachalov

2) проверять доступность данных в БД (тут варианты как, но все кривые) и уже тогда посылать извещение.

Кастомная логика, все правильно - только так
[/quot]
Kachalov

Еще идеи?

Есть тенденция, что программисты переоценивают степень важности консистентности. У многих бизнес процессов есть встроенные процедуры на реагирование в таких ситуациях. Просто при автоматизации окно, когда дерьмо может произойти(данные с одного офиса не доступны в другом) сокращается с часов до секунды и это вполне устраивает бизнес.

Универсального рецепта нет, надо рассматривать каждый конкретный случай в отдельности.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892401
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qi_ip
Пока не знаю, какой лог нужно выложить.
в смысле?
Тупо час целый думал какой лог нужен?
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892402
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Што там вообще за срочность? Диспетчерская аэропорта штоли?

В 80% можно согласовать ТЗ чтобы данные синкались в течение нескольких минут.
У нас вот справочники стран и валют вообще отстают на несколько дней. И ничо.
Бизнес терпит. Просто есть такие данные которые вобщем не срочные.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892405
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Што там вообще за срочность? Диспетчерская аэропорта штоли?
придуривается
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892406
qi_ip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Што там вообще за срочность? Диспетчерская аэропорта штоли?

В 80% можно согласовать ТЗ чтобы данные синкались в течение нескольких минут.
У нас вот справочники стран и валют вообще отстают на несколько дней. И ничо.
Бизнес терпит. Просто есть такие данные которые вобщем не срочные.

есть тесты-кейсы, которые из-за этого селекта фэйлятся - вся суть пройти эти тесты.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892407
qi_ip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Што там вообще за срочность? Диспетчерская аэропорта штоли?

В 80% можно согласовать ТЗ чтобы данные синкались в течение нескольких минут.
У нас вот справочники стран и валют вообще отстают на несколько дней. И ничо.
Бизнес терпит. Просто есть такие данные которые вобщем не срочные.

В тестах есть очередность, которую нужно соблюсти, вот она и не проходит из-за этого. Тесты не мои )
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892412
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qi_ip,
Тесты не ваши, а весь геморой придумали вы
22009173
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892427
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qi_ip
mayton
Што там вообще за срочность? Диспетчерская аэропорта штоли?

В 80% можно согласовать ТЗ чтобы данные синкались в течение нескольких минут.
У нас вот справочники стран и валют вообще отстают на несколько дней. И ничо.
Бизнес терпит. Просто есть такие данные которые вобщем не срочные.

В тестах есть очередность, которую нужно соблюсти, вот она и не проходит из-за этого. Тесты не мои )

Модульные тесты это не делают. Они простые как репа.
На вход подали управляющее воздействие. Получили выход.

Судя по всему ты залез в интеграцию. С интеграцией просто может быть всякое.
Например тупо очистка БД между кейсами. Тоесть ты запузырил insert в скоупе 1 теста
и почему-то понадеялся что состояние базы должно сохранится. Может да. Может нет.
Так оно или нет - сказать сложно. Надо изучать твой тестовый env.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892429
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже более того. Модульные иногда исполняются параллельно в потоках чтобы ускорить
тестирование. И это лакмус для плохого разработчика. Если они мерцают (flaky) тоесть
то проходят то валятся - то это признак того что разраб не понял задачу и втащил глобальное
состояние.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892431
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для Junit я иногда задавал явно Order как пишет Баелдунг

https://www.baeldung.com/junit-5-test-order

в тех случаях когда важно гарантировать порядок методов.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892433
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аффтар, начинай опять с прошлой твоей темы.
Очередность в наносекундах при параллельных работах.
Ты прошлую тему не закрыл.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892545
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov
Еще идеи?

Есть, СУБД отправляет необходимое сообщение в шину.

Тут недавно обсуждение было в проектировании БД на предмет стоит ли применять триггеры, так вот эта техническая задача как раз через них и решается или жависты по религиозным соображениям не пользуются инструментами СУБД?
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892553
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Они не знают как триггеры создавать через Hibernate. Поэтому для них триггеры - нечто запредельно невозможное.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892554
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDev,
В прошлой его теме обсудили и с бд и без бд.
На любой вкус.
Но автор проспал и добил в ТЗ наносекунды.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892555
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
В хибере тоже триггеры есть)
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892559
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шикарно. И как экземпляр 1-го хибернейта узнает о том что сработал триггер а 2-м экземпляре
(если 2 app-servers подключено к БД)?
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892563
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Я не знаю зачем тут вообще триггеры. Пусть расскажет.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892571
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сложно сказать. Такой код как автор пишет я-бы сделал не на Batis а JDBC.
Потому-что мотивация к использованию батиса очень слабая. Там есть свои
плюсы но тут они вообще не выражены никак.

Вот к примеру недавно мы словили OutOfMemory на постгресовском драйвере.
Пофиксилось следующим образом.

Код: java
1.
2.
PreparedStatement pst = con.prepareStatement(query, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.CLOSE_CURSORS_AT_COMMIT);
pst.setFetchSize(ROWS_BATCH_SIZE);



Явное указание курсора как FORWARD и размер пачки позволило тонко настроить то что надо
для задачи. Тоесть необходимый минимум.

Как-бы мы такое сделали на батисе - я не знаю. Может можно. Может и нет.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892597
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Я не знаю зачем тут вообще триггеры. Пусть расскажет.

В таблицу попадает запись от первого сервиса, триггер на таблице формирует сообщение для второго сервиса и помещает его в очередь сообщений, также создает джоб обработки очереди сообщений. По commit фиксируются все изменения в том числе джоб, т.е изменения подтверждены и обработка очереди сообщений для передачи сервисам стартовала. Можно сделать и без триггера, если сообщение от первого сервиса будет вставляться не напрямую в таблицу, а посредством вызова хранимой процедуры в БД, которая инкапсулирует всю обработку сообщения в БД.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892602
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDev
Можно сделать и без триггера, если сообщение от первого сервиса будет вставляться не напрямую в таблицу, а посредством вызова хранимой процедуры в БД, которая инкапсулирует всю обработку сообщения в БД.
конечно создавать job в триггере 5000 раз в сек еще то удовольствие).
Лучше уж в хранимке.
Правда непонятно что там инкапсулировать.
Субд создавали для транзакций. Где тут транзакции с откатами?
Субд создавади для модели данных со связями. Где ту модель кроме линецного списка?
Может вам просто файлик подойдёт?
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892609
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
конечно создавать job в триггере 5000 раз в сек еще то удовольствие).

Вставка одной записи и коммит 5000 раз в секунду, не а чё классная архитектура приложения))

PetroNotC Sharp
Субд создавали для транзакций. Где тут транзакции с откатами?

Проблемы ТС как раз из на них))

PetroNotC Sharp
Субд создавади для модели данных со связями. Где ту модель кроме линецного списка?
Может вам просто файлик подойдёт?

Понятия не имею, зачем ТС-у вставлять какую то запись в БД, передавать сообщение другому сервису, чтобы тот после этого прочитал из БД вставленную запись.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892651
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDev
Проблемы ТС как раз из на них))
да. Согласен. Проблема в людях.
Не закрыл постановку задачи в прошлом топике и брослся кодировать.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892847
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Может вам просто файлик подойдёт?

- даже если выкинуть MyBatis, базу и оставить файлик в которой один пишет, а другой читает, возможна описанная архитектурная коллизия: писатель считает что он уже написал и оповещает об этом читателя, а по факту данные в файл еще не попали и для чтения недоступны.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892857
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov,
Писатель не должен оповещать.
Есть подписчики. Есть оповещатели.
А писатель это техническая должность нижнего уровня.
Как вариант выше предложили его засунуть в хранимку.
Тогда коллизии не будет.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892859
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но он делает Протокол. Это вообще по другому делают.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892883
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Писатель не должен оповещать.

- вероятно Вы хотите сказать что мы наблюдаем архитектурную ошибку
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39892910
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov,
Угу.
Причем ошибся он еще в прошлом топике.
В оперативке надо было очередь делать.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893338
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не знаю, что вы так набросились на MyBatis, но меня он пока ни разу не подводил,
очень удобно мапить данные, быстрая и легкая библиотека, в отличии от hiber'a у меня
как то с ним готовка уже лет 10-15 не ладится.
По сути. Для уведомлений в разных субд есть , внезапно, уведомления.
Например в pg ,notify "Во-первых, если NOTIFY выполняется внутри транзакции, уведомления доставляются получателям после фиксирования транзакции и только в этом случае. "
Видел подобное в Firebird'е, так что это не экзотика.
А listener слушает, при получении события делает select. Должно работать.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893341
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troglodit
Видел подобное в Firebird'е, так что это не экзотика.

В субд есть xml, но хранение в нем экзотика
Есть EAV, но это экзотика
Есть JSON поля, но это экзотика.
Продолжать?
..
А батис тут никто не ругал
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893345
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp

В субд есть xml, но хранение в нем экзотика
Есть EAV, но это экзотика
Есть JSON поля, но это экзотика.
Продолжать?
..
А батис тут никто не ругал

а в чем лучше хранить json и xml или не жестко структурированные данные?
А уж обрабатывать xpath и jsonpath?-это чем не экзотичным и реляционным вы заменяете?
А валидация схемами документов. Мне продолжать?

Про MyBatis видимо было несколько страниц назад, я на даты не смотрел, возможно устаревшее сообщение.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893353
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troglodit,
OFF в блобе храни или спец XMLDB.
А зачем делвть из бд мусорку с неформализованными данными и моделю?
Мне продолжать?
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893373
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XML и JSON в БД хранить можно. Но следуя принципам реляционных теорий мы должны
объявить этот XML атомом в контексте решаемой нами задачи. Ежели он не таковой (не атом)
то мы - жалкие школьники и нас надо снова садить за 1 курс университета и проходить
Дейта и Кодда с нуля.

Еще мысль. Развивая идею проектирования баз на XML я просто могу спросить - а почему
вы остановились на 1 поле? Объявите всю data-row XML сущностью и тогда база
примет вид

Код: java
1.
create table universalEntity1(universalDataRow XMLTYPE);



И таким образом вся теория проектирования баз вырождается и превращается в профанацию.
Об этом кстати писал Том Кайт. XML - есть и поддерживается но решения на базе него - "нелетают".
Имеется в виду что низко перформят.

Ну и апофеозом проектирования можно сделать перенос всех таблиц в 1 большой XML документ.
Разумеется за кадром останутся техники DML - операций но тут я просто переведу стрелки
на тех кто за такое решение ратует.

Пожалуйста господа. Расскажите как это все будет работать и перформить.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893423
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
XML и JSON в БД хранить можно. Но следуя принципам реляционных теорий мы должны
объявить этот XML атомом в контексте решаемой нами задачи. Ежели он не таковой (не атом)
то мы - жалкие школьники и нас надо снова садить за 1 курс университета и проходить
Дейта и Кодда с нуля.

Еще мысль. Развивая идею проектирования баз на XML я просто могу спросить - а почему
вы остановились на 1 поле? Объявите всю data-row XML сущностью и тогда база
примет вид

Код: java
1.
create table universalEntity1(universalDataRow XMLTYPE);



И таким образом вся теория проектирования баз вырождается и превращается в профанацию.
Об этом кстати писал Том Кайт. XML - есть и поддерживается но решения на базе него - "нелетают".
Имеется в виду что низко перформят.

Ну и апофеозом проектирования можно сделать перенос всех таблиц в 1 большой XML документ.
Разумеется за кадром останутся техники DML - операций но тут я просто переведу стрелки
на тех кто за такое решение ратует.

Пожалуйста господа. Расскажите как это все будет работать и перформить.

Я не знаю, что у всех так горит, от того, что данные будут, о ужас, не реляционные.
Зачем идти в крайности. Посмотрите доклад датаарта про тэги на highload'е за прошлый год кажется, как они
жевали кактус и в итоге пришли к тому, что в конкретных кейсах nosql все таки мед, пусть и внутри классической рсубд.
А так могу вам алаверды, вы на больших данных тогда все должны нормализовать до каждой запятой, вы же за священные нормальные формы. Только когда поток пойдет, вас смоет из без денормализации ваш перфомас вынесет в ... какое-то очень неприятное место. Да, сейчас есть хак,а давайте купим еще n-серверов, ведь можно же, железо дешево, а dba-дорого. А потом на том же highload главный it-шник ozon'a говорит как им мешает легаси дисковая подсистема за 1(или 10 :) ) кажется лям неубитых и как они героически уходили от этого, а подсистема где то пылится.
Еще раз, если у вас студенты или стартаперы, которым еще 10 страниц дочитать, тогда ваша стратегия абсолютно верная. Если у вас квалифицированные DBA, то глупо в разумных дозах не использовать возможности СУБД.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893427
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ради бога. Пускай льют свои данные хоть тегами хоть json-ами.

Просто они у них не реляционные. Следовательно это не тема нашего топика.

У нас - Postgresql.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893429
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Да ради бога. Пускай льют свои данные хоть тегами хоть json-ами.

Просто они у них не реляционные. Следовательно это не тема нашего топика.

У нас - Postgresql.

Доклад был как они это делали не на PostgreSQL, я ошибся, но на Oracle.
YouTube Video
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893431
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем мне 35 минут видоса? Дайте хронометраж где звучит главная мысль и я посмотрю с удовольствием.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893459
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Зачем мне 35 минут видоса? Дайте хронометраж где звучит главная мысль и я посмотрю с удовольствием.

Там нет главной мысли. Там повесть. Мы начали так, стало плохо, сделали по другому опять поплохело, и т.д.
Нет желания вникать, я не навязываю, хотя в перемотке в 10 мин. управились бы.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893473
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troglodit
Зачем идти в крайности.
а сами чере 2 слова в крайности
Troglodit
вы на больших данных тогда все должны нормализовать до каждой запятой, вы же за священные нормальные формы.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893475
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А до какой НФ нормализовывать?
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893494
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
del
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893508
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troglodit

Я не знаю, что у всех так горит, от того, что данные будут, о ужас, не реляционные.
Зачем идти в крайности. Посмотрите доклад датаарта про тэги на highload'е за прошлый год кажется, как они
жевали кактус и в итоге пришли к тому, что в конкретных кейсах nosql все таки мед, пусть и внутри классической рсубд.
Ох жесть какая... Когда дизайнят модель в RDBMS, ее дизайнят в том числе таким образом, чтобы в каких-то местах избегать конкуренции, а в каких-то наоборот - порождать. Когда же ваша структура БД имеет вид (ну там, очевидно, PK не хватает):

Код: java
1.
create table universalEntity1(universalDataRow XMLTYPE);


в ней конкуренция есть всегда , я буквально на прошлой неделе смотрел подобное решение, сказать "мне не понравилось" - это совсем ничего не сказать, там у ребят помимо того, что одна транзакция тупо перетирала данные другой (представьте что вот на этом форуме мы решили всю тему хранить в XML/JSON - теперь при добавлении нового сообщения нам придется блокировать всю строку, чтобы сообщения не перетирались, что в свою очередь будет вести к увеличению нагрузки на БД, а по "классике" такого даже не будет), решение еще пестрило другими детскими болезнями, типа вычисления следующего идентификатора как max(id)+1. Если вам кажется, что вы изобрели серебряную пулю, вам в первую очередь стоит задуматься, действительно ли она такая серебряная и почему все поголовно ее уже не используют. Что касается презентации, что вы привели, ну это реально дичь: автор явно путает две разные задачи - "как хранить" и "как быстро выбирать": я бы вот ни при каких условиях не стал бы хранить тэги (несущественные данные) в той же таблице где и часто-меняющиеся бизнес-данные (существенные), просто потому, что в обратном случае добавление тэга будет порождать конкуренцию, которая мне нафиг не нужна на ровном месте (отсылка к SO здесь неуместна - там монопольный доступ к редактированию темы), докладчик же по факту сделал откровенную дичь, не понимая, что "как хранить" и "как быстро выбирать" - это совершенно две несвязные задачи.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893509
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Пожалуйста господа. Расскажите как это все будет работать и перформить.
Прекрасно будет работать до тех пор, пока кто-то не протеряет данные и не вломит бракоделам неиллюзорных п#здюлей
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893511
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфилов
Ох жесть какая... Когда дизайнят модель в RDBMS, ее дизайнят в том числе таким образом, чтобы в каких-то местах избегать конкуренции, а в каких-то наоборот - порождать. Когда же ваша структура БД имеет вид (ну там, очевидно, PK не хватает):

Код: java
1.
create table universalEntity1(universalDataRow XMLTYPE);


в ней конкуренция есть всегда , я буквально на прошлой неделе смотрел подобное решение, сказать "мне не понравилось" - это совсем ничего не сказать, там у ребят помимо того, что одна транзакция тупо перетирала данные другой (представьте что вот на этом форуме мы решили всю тему хранить в XML/JSON - теперь при добавлении нового сообщения нам придется блокировать всю строку, чтобы сообщения не перетирались, что в свою очередь будет вести к увеличению нагрузки на БД, а по "классике" такого даже не будет), решение еще пестрило другими детскими болезнями, типа вычисления следующего идентификатора как max(id)+1. Если вам кажется, что вы изобрели серебряную пулю, вам в первую очередь стоит задуматься, действительно ли она такая серебряная и почему все поголовно ее уже не используют. Что касается презентации, что вы привели, ну это реально дичь: автор явно путает две разные задачи - "как хранить" и "как быстро выбирать": я бы вот ни при каких условиях не стал бы хранить тэги (несущественные данные) в той же таблице где и часто-меняющиеся бизнес-данные (существенные), просто потому, что в обратном случае добавление тэга будет порождать конкуренцию, которая мне нафиг не нужна на ровном месте (отсылка к SO здесь неуместна - там монопольный доступ к редактированию темы), докладчик же по факту сделал откровенную дичь, не понимая, что "как хранить" и "как быстро выбирать" - это совершенно две несвязные задачи.

Здорово, что вы поделились своим опытом,есть пара но.
Акелла промахнулся, данную структуру предлагал не я, это было предложено mayton'ом в качестве легкого троллинга, чтобы довести до абсурда.Без Pk это вообще дичь, я с вами согласен. Я лишь говорил об полях JSON, в частном случае можно и про XML. Далее отделим мух от котлет, проблема с перезаписью чужих данных возникает не по причине, что формат хранения плохой, просто люди написали криво. Им что религия мешает менять только ЧАСТЬ узлов, так что опять пока мимо кассы.
Где то было описано,что
Так что, с вашего позволения подитожу: люди микроскопом забивали гвозди было не удобно и разбили прибор. Вывод: микроскопами никогда ни за что нельзя пользоваться.
Вы же сами все правильно написали, часто меняющиеся данные в стандартных column'ах, статика нереляционная в json/xml.
И все будет замечательно работать.
В вашем примере max(id)+1 на больших данных будет бОльшим злом. В соседней ветке count-записей на 18млн таблице считают.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893513
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфилов
mayton
Пожалуйста господа. Расскажите как это все будет работать и перформить.
Прекрасно будет работать до тех пор, пока кто-то не протеряет данные и не вломит бракоделам неиллюзорных п#здюлей

У меня есть небольшой проект append only, где должно было использоваться 5 сущностей(1 сущ. -1 таблица, либо если сделать часть полей полупустыми то 4, при этом 1 сущность никак не связана 1 из них, но должна, Я вышел из ситуации, добавив вводную, что привязвываться будет к последней записи этой сущности. Для полного отображения информации в запросе в будут использованы 3 left join'а. Производительность ожидалась "потрясающей" как при чтении так и записи. Данных не много около 500 тыс. записей за тестовый период.
Решил попробовать JSON
Взял 1-ю сущность добавил к ней JSON и записывал в нее остальные 4. При этом проблема последней записи для привязки во ВСЕЙ таблице из прошлого примера свелась к поиску внутри этого же JSON'а. Все данные можно получить из 1-й таблицы без LEFT JOIN c помощью языка запросов JSON можно гибко получать нужные данные, данные для поиска отиндексированы. Общее кол-во записей всех сущностей уменьшилось до 70000. Писать запросы для выборки гораздо проще,при увеличении кол-во записей не будет резкого падения производительности на привязку сущностей.
Да это слабый пример, но реальный живой кейс.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893532
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troglodit
просто люди написали криво. Им что религия мешает менять только ЧАСТЬ узлов

Угу. Вместо готового движка работы со МНОЖЕСТВАМИ будем писать свой движок и оптимизировать работы с узлами.
Troglodit
Решил попробовать JSON

Вон откуда ваше отстаивание.
Каждый программист впервые в жизни в отрочестве пишут рукописный ОРМ, потом логгер, потом JSON в базе.
Потом это проходит.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893544
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp

Вон откуда ваше отстаивание.
Каждый программист впервые в жизни в отрочестве пишут рукописный ОРМ, потом логгер, потом JSON в базе.
Потом это проходит.

Я где то говорил, что надо забыть про реляционную структуру?
И где я что-то отстаивал?
Я лишь указал свой скромный опыт и указал на то, что уже лет 15 как
в рсубд используют к месту и не к месту эти инструменты.
Давайте закроем нашу с вами беседу, т.к. она оффтоп.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893552
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troglodit
Я где то говорил, что надо забыть про реляционную структуру?

посмотри свой первый пост. Для данной задачи (на наносекунды) не подходит РСУБД.
Другое можешь предложить? Мы в Java.
Troglodit
Давайте закроем нашу с вами беседу, т.к. она оффтоп.

OK
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893561
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp

посмотри свой первый пост. Для данной задачи (на наносекунды) не подходит РСУБД.
Другое можешь предложить? Мы в Java.

Первый пост не мой.
Задача автора получить в запросе измененные данные, почему это нельзя решить в РСУБД?
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893570
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troglodit
Первый пост не мой.
Первый ВАШ пост не ваш?
Troglodit
Задача автора получить в запросе измененные данные, почему это нельзя решить в РСУБД?

Вам трое в топике возражали. И я в том числе.
В магазине, если менеджер упёрся в один пылесос, то он неадекватен.
Проехали.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893573
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
Первый ВАШ пост не ваш?

Вам трое в топике возражали. И я в том числе.
В магазине, если менеджер упёрся в один пылесос, то он неадекватен.
Проехали.

да пропустил одно слово. )
Я написал пример реализации через notify listen, кто мне написал, что это не возможно?
Покажите, где мой пылесос? :)
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893576
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troglodit
Я написал пример реализации через notify listen, кто мне написал, что это не возможно?

Мы на форуме sql_ru.
То есть клиент-серверные приложения.
Извещения клиента от субд - плохой стиль в данной концепции.
Troglodit
Покажите, где мой пылесос? :)

Вот он
Troglodit
notify listen
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893579
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
Troglodit
Я написал пример реализации через notify listen, кто мне написал, что это не возможно?

Мы на форуме sql_ru.
То есть клиент-серверные приложения.
Извещения клиента от субд - плохой стиль в данной концепции.
Troglodit
Покажите, где мой пылесос? :)

Вот он
Troglodit
notify listen

И где мы этот пылесос обсуждали?
И кто возражал кроме вас?
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893588
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troglodit

Акелла промахнулся
Это как промахнулся? Видосик приложили же вы с претензией на некую "научную новизну", а там у докладчика начиная с третьей модели (7:00) начинается деградация СУБД, а не эволюция, а завтра молодняк попрет писать свои собственные нетленки вдохновившись подобными "докладами" (вообще я всегда считал, что HiLoad - это что-то про PHP, а тут чет про оракл вещают, но уровень тот же)
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893590
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфилов
Это как промахнулся? Видосик приложили же вы с претензией на некую "научную новизну", а там у докладчика начиная с третьей модели (7:00) начинается деградация СУБД, а не эволюция, а завтра молодняк попрет писать свои собственные нетленки вдохновившись подобными "докладами" (вообще я всегда считал, что HiLoad - это что-то про PHP, а тут чет про оракл вещают, но уровень тот же)

Я что то сказал про новизну тем более научную? Это DataArt-у них много очень неоднозначных докладов. Видео показывает, как народ шел к "успеху". Мне нравится их смотреть, чтобы не наступать на их грабли.
Сама конференция очень даже годная была раньше.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893593
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troglodit
Я что то сказал про новизну тем более научную? Это DataArt-у них много очень неоднозначных докладов. Видео показывает, как народ шел к "успеху". Мне нравится их смотреть, чтобы не наступать на их грабли.
Сама конференция очень даже годная была раньше.
Меня в институте так учили, что в любом докладе/статье должна присутствовать "научная новизна"
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893616
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
Меня в институте так учили, что в любом докладе/статье должна присутствовать "научная новизна"
... вот только прикладное программирование - ремесло, а не наука.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893620
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
... вот только прикладное программирование - ремесло, а не наука.
Я специально "научная новизна" взял в кавычки, однако вы делаете упор на "научая", а не "новизна", в этом проблема: просто посмотреть доклады на этом HighLoad (первый раз неправильно написал), стоит неприлично больших денег и ожидание от докладов соответствующее, доклад типа: вот мы что-то там делали и выяснилирешили, что реляционная модель для данной задачи подходит плохо потому что там "джойны", а в Apache Solr все несколько иначе, скажем, так себе: идея о том что для быстрого поиска неплохо было бы кластеризовать данные - ну это никак не 21-й век, этот доклад можно было бы каким-то образом натянуть на исследование и сделать его интересным, но докладчик явно не тянет - в том же оракле есть условно подходящие под задачу и cluster table и bitmap join index и их сравнение было бы интересным, однако, мы остановились на том, что "джойны плохо - давайте превратим базу в помойку"
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893632
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Всяк кулик ..." и "Шо маемо ..."
Исследовательская работа для бизнеса - сильно нецелевое направление. Ну и результат соответствующий: попали ваши интересы в узкий случай - хорошо, не попали - а никто и не обещал ничего.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893966
qi_ip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
Аффтар, начинай опять с прошлой твоей темы.
Очередность в наносекундах при параллельных работах.
Ты прошлую тему не закрыл.


PetroNotC Sharp

да. Согласен. Проблема в людях.
Не закрыл постановку задачи в прошлом топике и брослся кодировать.


Причем тут наносекунды и чего ВАМ далась прошлая тема? Данный топик никак не связан с прошлой темой. Тем более в той теме я описался, на чем пока остановилась реализация. Там своя часть, тут своя.

Я очень рад, что есть такие люди как Вы, которые на раз-два решают любую задачу, но для меня форум как раз для того, чтобы задавать вопросы и понимать где есть ошибки в коде/логике и как их обходить/убирать/менять.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893988
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qi_ip,
А по теме что будет?
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39893992
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qi_ip,
Будь добр, ответь каждому в этой теме и не пропадай. Ты же ТС.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39894377
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qi_ip,

Тебе тут нужен какой-нибудь java.util.concurrent.BlockingQueue а не устраивать гонки с базой. Зачем это вообще? Ты хотел базу использовать как хранилище? Ради чего?
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39894392
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,
+1
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39894754
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster
qi_ip,

Тебе тут нужен какой-нибудь java.util.concurrent.BlockingQueue а не устраивать гонки с базой. Зачем это вообще? Ты хотел базу использовать как хранилище? Ради чего?

В Postgresql есть нативная отличная очередь можно сказать из коробки.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39894764
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troglodit
В Postgresql есть нативная отличная очередь можно сказать из коробки.
ну а дальше. Что остановился?
Просвящай что за очередь из коробки? order by?
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39894802
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

Здравствуйте. Это sql.ru? У вас часто тут бывают срачи двухзвенка vs трехзвенка?
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39894815
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troglodit,

Не всегда целесообразно пихать всё в субд.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39894820
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,
Слабак он для срача. Да ещё чисто по архитектурному вопросу.
В котором тесты писал не он, а он вообще не при делах.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39895117
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

Да я б тоже с удовольствием послушал про очереди внутри dbms.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39895124
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
PetroNotC Sharp,

Да я б тоже с удовольствием послушал про очереди внутри dbms.


Имеется ввиду механизм оповещений, встроенный в Postgres. Почитать можно тут либо в офийиальной доке.
На основе этого удобно строить процесс CDC(change data capture) модный сейчас
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39895129
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
механизм оповещений
про него все знают.
Ничего нового и есть наверно во всех базах.
Вадя тут нотификацию веб сокетов делает.
Кто на чём).
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39895134
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
забыл ник
механизм оповещений
про него все знают.
Ничего нового и есть наверно во всех базах.
Вадя тут нотификацию веб сокетов делает.
Кто на чём).

Хм. Ну дай пруфы на бесплатные push нотификаторы для оракл либо mysql
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39895142
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,
Я не случайно вставил слово наверно.
В сиквеле уже 10 лет как было. А в оракле никогда наверно не требовался это изврат.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39895143
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,
Согласись что очередь из коробки и оповещения это совсем разные вещи. Чтобы хвалить автора топика.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39895144
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
PetroNotC Sharp,

Да я б тоже с удовольствием послушал про очереди внутри dbms.
разобрплись))
Теперь ждем про наносекунды.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39895146
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,
Мне кажется он построил очередь из таблицы бд. А не то что ты подумал. Имхо.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39895147
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник

Хм. Ну дай пруфы на бесплатные 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, все бесплатно" )))
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39895297
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
Troglodit
В Postgresql есть нативная отличная очередь можно сказать из коробки.
ну а дальше. Что остановился?
Просвящай что за очередь из коробки? order by?

С вами разговор окончен. Ищите себе другого, кто будет вам рассказывать как "корабли бороблят космическое пространство".
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39895298
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton

Да я б тоже с удовольствием послушал про очереди внутри dbms.

Ну как бы pgq-надежная давняя можно сказать почти родная, разный тулзы на ней построены.
Вопрос нужна ли она автору, я не знаю.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39895300
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
mayton
PetroNotC Sharp,

Да я б тоже с удовольствием послушал про очереди внутри dbms.


Имеется ввиду механизм оповещений, встроенный в Postgres. Почитать можно тут либо в офийиальной доке.
На основе этого удобно строить процесс CDC(change data capture) модный сейчас

Кто создатель этого замечательного продукта? Почему он не в домене https://www.postgresql.org ?
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39895351
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troglodit
Ищите себе другого, кто будет вам рассказывать
а ты не способен рассказывать. Топик скучный для технарей.
Troglodit
Ну как бы pgq-надежная давняя можно сказать почти родная, разный тулзы на ней построены.
Вопрос нужна ли она автору, я не знаю.

Это ты типо рассказал что то новое.
Добро пожаловать в публичный форум. Тут все равны как в бане.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39895363
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
Troglodit
Ищите себе другого, кто будет вам рассказывать
а ты не способен рассказывать. Топик скучный для технарей.
Troglodit
Ну как бы pgq-надежная давняя можно сказать почти родная, разный тулзы на ней построены.
Вопрос нужна ли она автору, я не знаю.

Это ты типо рассказал что то новое.
Добро пожаловать в публичный форум. Тут все равны как в бане.

Вы ошиблись. ЧСВ отпускается в соседнем отделе, хотя у вас его и так через край.
Если читали через строку,повторюсь: докапывайтесь до других, ваше эго в разговоре мне не интересно.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39895364
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troglodit,
Мы тут по теме все пишем.
У вас есть что по теме, а не про меня лично?
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39895366
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troglodit
ЧСВ

Как будто что-то плохое.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39895973
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster

Как будто что-то плохое.

Я не говорил что это плохо. Просто в данном контексте для меня контрпродуктивно.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39896072
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troglodit
crutchmaster

Как будто что-то плохое.

Я не говорил что это плохо. Просто в данном контексте для меня контрпродуктивно.
Ты позови сюда программиста или пиши по теме топика.
Слово коллекция в оперативке изучил? Java программист.
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39901145
qi_ip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ИТОГ решения проблемы:
1) для нахождения места проблемы было написано тестовое приложение, которое содержала часть логики проблемного кода: одновременно инсертились и читались большое количество записей в БД.
2) в БД была включена аналитика мониторинга по запросам: pg_stat_statements

В логах изначально ничего замечано не было, потому что при включении уровня DEBUG/TRACE, ошибка не проявлялась.

В результате оказалось, что проблема была смешанная: БД и код (по большей части логика).

При работе в определенный момент select из базы данных работал долго (до 90 мс и больше) и если в этот момент иницировалось добавление элемента в очередь, то этот элемент игнорировался и не добавлялся в очередь для селекта. И соответственно, когда запрос возвращал результат, то он был пустой.

Спасибо большое Всем, кто участвовал в разборе топика!
...
Рейтинг: 0 / 0
Mybatis+PostgreSQL паралелльные потоки
    #39901153
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qi_ip
определенный момент select из базы данных работал долго (до 90 мс и больше) и
для базы это не долго. Такая у нее работа.
В тз следующий раз пишите цифру - отклик бд.
...
Рейтинг: 0 / 0
115 сообщений из 115, показаны все 5 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Mybatis+PostgreSQL паралелльные потоки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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