Привет всем! Я тут задумался, насчёт Котлин exposed в связке с h2 и корутинами. Понимаю, что вопрос ламерский и все же. Если асинхронно писать в бд, допустим в 2 разные таблицы, не возникнет ли проблем? Если асинхронно работать с одной таблицей, то я догадываюсь, что все ляжет. А вот с разными не понятно. Если кто-то подскажет буду рад:) Спасибо!
v
voddan
07/12/2018, 9:02 PM
Мне кажется ты немного перемешал асинхронность и параллельнось. Асинхронность не связана с нагрузкой системы - можно хоть 1000 корутин поставить писать в одну таблицу асихронно, и все будет ок.
g
gildor
07/13/2018, 12:41 AM
Все это мне кажется крайне мало относится к асинхронности и корутинам. Там что корутины, что треды, что коллбэки просто пользовательский API
Это все на совести базы, то как она и ее драйвер сделаны.
Так то ничего лечь не должно само по себе и в одной таблице, вопрос ещё что с таблицей делать и как транзакциями пользоваться
a
Alexjok
07/13/2018, 5:39 AM
Данил, пожалуй ты прав, я действительно думал про паралельную запись и удаление в пределах таблицы. Надо расширять горизонт по этой теме. Спасибо!
Андрей, как я написал выше, имел ввиду запись и удаление, которые выполняются асинхронно. После первого ответа стало не по себе) Ушел читать
g
gildor
07/13/2018, 5:55 AM
Это решается ведь на уровне база, условно удаление и запись могут блокировать табилцу (транзакция на таблицу), а могет блокировать запись, все это вопрос имплементации базы данных. И по факту хоть 100 тредов и 10000 корутин будут что-то писать удалять, все будет в итоге просто очередью транзакций, ACID принцип же.
Так что тут не про связску с корутинами надо смотреть, а на саму базу, не могу ничего про H2 конкретного сказать, тут только смотреть доки и читать что пользователи пишут, как себя база ведет под разной нагрузкой. Вот первое что нашлось в гугле по H2
http://www.h2database.com/html/advanced.html#transaction_isolation
Там интересный абзац “Table Level Locking”
Но опять же, эток к корутинам/тредам/коллбэкам не относится, они просто работают с драйвером базы данных
a
Alexjok
07/13/2018, 6:51 AM
Андрей, спасибо за хорошее объяснение, буду пробовать
t
tapac
07/13/2018, 10:47 AM
H2 не очень умеет в многопоточность, т.е. параллельные транзакции очень часто вываливаются в дедлоки или локвейты, что сразу уменьшает пропускную способность и делает выполнение почти синхронным.