Я встраиваю Monetdbe в многопоточное приложение C++.
У меня есть несколько потоков, работающих на стороне сервера моего приложения, и каждый поток открывает свой собственный экземпляр той же базы данных Monetdb, т.е. каждый поток выполняет следующий код:
monetdbe_database db = NULL;
if (monetdbe_open(&db, url /* inmemory database */, NULL /* no options */)) {
fprintf(stderr, "Failed to open database\n");
return -1;
}
Каждый поток выполняет запросы MonetDB, отправленные клиентами, подключенными к серверу. следовательно, к базе данных может быть подключено несколько клиентов одновременно, и они могут одновременно отправлять запросы на доступ / обновление одних и тех же базовых таблиц. Я просто хочу убедиться, что Monetdb был разработан для работы с этим сценарием.
Я понимаю, что Monetdb не предназначен для высокой транзакционной базы данных, и мой вариант использования более аналитический, но у меня есть несколько клиентов, которые будут подключены к серверу, и иногда они могут запускать запросы к одним и тем же таблицам базы данных одновременно. время. Это правильный способ запускать многопоточные приложения с Monetdbe?





Согласно этой проблеме на github (https://github.com/MonetDBSolutions/monetdbe-examples/issues/11) и этому примеру (https://github.com/MonetDBSolutions/monetdbe-examples/blob/master/C/concurrent.c).
Если вы не используете один и тот же monetdbe_database для каждого подключения, все в порядке.