Привет всем! Я тут задумался, насчёт Котлин expose...
# russian
a
Привет всем! Я тут задумался, насчёт Котлин exposed в связке с h2 и корутинами. Понимаю, что вопрос ламерский и все же. Если асинхронно писать в бд, допустим в 2 разные таблицы, не возникнет ли проблем? Если асинхронно работать с одной таблицей, то я догадываюсь, что все ляжет. А вот с разными не понятно. Если кто-то подскажет буду рад:) Спасибо!
v
Мне кажется ты немного перемешал асинхронность и параллельнось. Асинхронность не связана с нагрузкой системы - можно хоть 1000 корутин поставить писать в одну таблицу асихронно, и все будет ок.
g
Все это мне кажется крайне мало относится к асинхронности и корутинам. Там что корутины, что треды, что коллбэки просто пользовательский API Это все на совести базы, то как она и ее драйвер сделаны. Так то ничего лечь не должно само по себе и в одной таблице, вопрос ещё что с таблицей делать и как транзакциями пользоваться
a
Данил, пожалуй ты прав, я действительно думал про паралельную запись и удаление в пределах таблицы. Надо расширять горизонт по этой теме. Спасибо!
Андрей, как я написал выше, имел ввиду запись и удаление, которые выполняются асинхронно. После первого ответа стало не по себе) Ушел читать
g
Это решается ведь на уровне база, условно удаление и запись могут блокировать табилцу (транзакция на таблицу), а могет блокировать запись, все это вопрос имплементации базы данных. И по факту хоть 100 тредов и 10000 корутин будут что-то писать удалять, все будет в итоге просто очередью транзакций, ACID принцип же. Так что тут не про связску с корутинами надо смотреть, а на саму базу, не могу ничего про H2 конкретного сказать, тут только смотреть доки и читать что пользователи пишут, как себя база ведет под разной нагрузкой. Вот первое что нашлось в гугле по H2 http://www.h2database.com/html/advanced.html#transaction_isolation Там интересный абзац “Table Level Locking” Но опять же, эток к корутинам/тредам/коллбэкам не относится, они просто работают с драйвером базы данных
a
Андрей, спасибо за хорошее объяснение, буду пробовать
t
H2 не очень умеет в многопоточность, т.е. параллельные транзакции очень часто вываливаются в дедлоки или локвейты, что сразу уменьшает пропускную способность и делает выполнение почти синхронным.
+Exposed пока что не умеет с корутинами работать, есть ишью https://github.com/JetBrains/Exposed/issues/255