Каких-то особых требований нет, и я бы наверное предпочёл SQLite, но он вроде не даёт одновременного доступа к одной БД из разных процессов. Хочется что-то такое же легко, не требующее отдельной установки, чтобы можно было с собой и базу и движок таскать, но позволяющее шарить БД между процессами
UPD Сорян, что-то забыл вот еще что. От самой СУБД сказал что хочу, а вот то, что я хочу из джавы и из плюсиков использовать — забыл. Из джавы — много-много писатель и редко-редко читатель, из плюсиков — наоборот
Здравствуйте, Marty, Вы писали:
M>Каких-то особых требований нет, и я бы наверное предпочёл SQLite, но он вроде не даёт одновременного доступа к одной БД из разных процессов. Хочется что-то такое же легко, не требующее отдельной установки, чтобы можно было с собой и базу и движок таскать, но позволяющее шарить БД между процессами
Здравствуйте, Marty, Вы писали:
M>Каких-то особых требований нет,
Раз требований нет, бери любую
M>Хочется что-то такое же легко, не требующее отдельной установки, чтобы можно было с собой и базу и движок таскать, но позволяющее шарить БД между процессами
Ну и бери SQLite, вот тут пишут
Yes SQLite can support multiple users at once. It does however lock the whole database when writing, so if you have lots of concurrent writes it is not the database you want (usually the time the database is locked is a few milliseconds — so for most uses this does not matter). But it is very well tested and very stable (and widely used) so you can trust it.
Может еще чего-нибудь хочется? Ну там изолированных транзакций из коробки?
Здравствуйте, gyraboo, Вы писали:
M>>Каких-то особых требований нет, и я бы наверное предпочёл SQLite, но он вроде не даёт одновременного доступа к одной БД из разных процессов. Хочется что-то такое же легко, не требующее отдельной установки, чтобы можно было с собой и базу и движок таскать, но позволяющее шарить БД между процессами
G>А если коннекшн закрывать после запроса?
Да можно, но кто гарантирует, что несколько процессов не захотят одновременно что-то записать? Или SQLite содержит защиту от этого, как-то лочит файл базы? Мне почему-то казалось, что там и такого нет
Здравствуйте, Dym On, Вы писали:
M>>Каких-то особых требований нет, DO>Раз требований нет, бери любую
M>>Хочется что-то такое же легко, не требующее отдельной установки, чтобы можно было с собой и базу и движок таскать, но позволяющее шарить БД между процессами DO>Ну и бери SQLite, вот тут пишут DO>
DO>Yes SQLite can support multiple users at once. It does however lock the whole database when writing, so if you have lots of concurrent writes it is not the database you want (usually the time the database is locked is a few milliseconds — so for most uses this does not matter). But it is very well tested and very stable (and widely used) so you can trust it.
Хм, вполне норм. А что будет, интересно, если одновременно есть писатель и читатели?
DO>Может еще чего-нибудь хочется? Ну там изолированных транзакций из коробки?
Здравствуйте, Marty, Вы писали:
M>Хм, вполне норм. А что будет, интересно, если одновременно есть писатель и читатели?
Надо смотреть. Я лично опыта не имел. В принципе можно прикрутить какую-нибудь приблуду, типа диспетчер запросов, через которую лазать непосредственно в базу. Ну или поискать, может уже кто-то прикрутил
Здравствуйте, Dym On, Вы писали:
M>>Хм, вполне норм. А что будет, интересно, если одновременно есть писатель и читатели? DO>Надо смотреть. Я лично опыта не имел. В принципе можно прикрутить какую-нибудь приблуду, типа диспетчер запросов, через которую лазать непосредственно в базу. Ну или поискать, может уже кто-то прикрутил
Так этот диспечер надо наверно выносить в отдельный процесс? Опять геммор
Здравствуйте, Marty, Вы писали:
M>Здравствуйте, gyraboo, Вы писали:
M>>>Каких-то особых требований нет, и я бы наверное предпочёл SQLite, но он вроде не даёт одновременного доступа к одной БД из разных процессов. Хочется что-то такое же легко, не требующее отдельной установки, чтобы можно было с собой и базу и движок таскать, но позволяющее шарить БД между процессами
G>>А если коннекшн закрывать после запроса?
M>Да можно, но кто гарантирует, что несколько процессов не захотят одновременно что-то записать? Или SQLite содержит защиту от этого, как-то лочит файл базы? Мне почему-то казалось, что там и такого нет
Движок лочит файл бд на время коннешна, поэтому второй процесс не сможет подключиться и можно сделать чтобы он ожидал освобождения файла.
И ещё, на всякий случай, делай составные запросы в транзакциях, чтобы избежать неконсистентности.
Здравствуйте, gyraboo, Вы писали:
G>Движок лочит файл бд на время коннешна, поэтому второй процесс не сможет подключиться и можно сделать чтобы он ожидал освобождения файла. G>И ещё, на всякий случай, делай составные запросы в транзакциях, чтобы избежать неконсистентности.
Вроде бы блокировка на запись настраивается. Либо ключами, либо самому с директивами пересобрать. Либо делать отдельный процесс для бд.
Здравствуйте, Dym On, Вы писали:
DO>Здравствуйте, varenikAA, Вы писали:
AA>>если java, то AA>>https://www.h2database.com/html/main.html DO>На OpenJDK заведется? Или ей только Oracle нужен?
M>Хм, вполне норм. А что будет, интересно, если одновременно есть писатель и читатели?
писатели читателям не мешают (если WAL режим). может быть одновременно много читателей, они другу другу тоже не мешают.
чтоб упереться в эксклюзивную запись, это надо достаточно высокую нагрузку иметь.
у меня в продакшине используется, на 300 юзеров на одной базе, более 5лет, 30Гб база. проблем нет.
Здравствуйте, Sharov, Вы писали:
G>>Движок лочит файл бд на время коннешна, поэтому второй процесс не сможет подключиться и можно сделать чтобы он ожидал освобождения файла. G>>И ещё, на всякий случай, делай составные запросы в транзакциях, чтобы избежать неконсистентности.
S>Вроде бы блокировка на запись настраивается. Либо ключами, либо самому с директивами пересобрать. Либо делать отдельный процесс для бд.
Ну да.
А ещё у неё есть шифрование (правда тоже нужна пересборка).
В итоге выходит, что найти альтернативу будет очень тяжело.
Я для всех своих шароварных проектов именно её использую.
Хотя один раз работал в проекте десктопного приложения, который Postgres использует, и это сделано прозрачно для юзера — т.е. никаких запусков серверов, всё скрыто от юзера. В этом плане постгрес конечно круче sqlite по многим параметрам.
Здравствуйте, white_znake, Вы писали:
vsb>>PostgreSQL
_>Странно, человек раздумывает об inproc бд, а ты ему навороченную бд в клиент серверной архитектуре предлагаешь.
Вообще-то я написал, что найти альтернативу sqlite трудно.
Про постгрес упомянул просто как ремарка на полях, т.к. работал в проекте, где постгрес был интегрирован с программой совершенно бесшовно и без всей тяжести клиент-серверной архитектуры — запуск серверов, проброс портов докера и прочих телодвижений. Причем у программы есть и десктопная версия, и мобильные сборки для андроида и ios. И какого-то клиент-серверного оверхеда я не наблюдал — всё работало очень шустро, запуск программы — буквально за пару секунд. Рекомендовать такой подход не стану, т.к. не знаю всех деталей реализации, возможно там есть какие-то ноу-хау.
Здравствуйте, Marty, Вы писали:
M>Каких-то особых требований нет, и я бы наверное предпочёл SQLite, но он вроде не даёт одновременного доступа к одной БД из разных процессов. Хочется что-то такое же легко, не требующее отдельной установки, чтобы можно было с собой и базу и движок таскать, но позволяющее шарить БД между процессами
Под твоё описание идеально подходит Firebird Embedded. Полноценный SQL-сервер. В редакции Embedded устанавливается файловым копированием.
Здравствуйте, gyraboo, Вы писали:
G>Здравствуйте, white_znake, Вы писали:
vsb>>>PostgreSQL
_>>Странно, человек раздумывает об inproc бд, а ты ему навороченную бд в клиент серверной архитектуре предлагаешь.
G>Вообще-то я написал, что найти альтернативу sqlite трудно.
G>Про постгрес упомянул просто как ремарка на полях, т.к. работал в проекте, где постгрес был интегрирован с программой совершенно бесшовно и без всей тяжести клиент-серверной архитектуры — запуск серверов, проброс портов докера и прочих телодвижений. Причем у программы есть и десктопная версия, и мобильные сборки для андроида и ios. И какого-то клиент-серверного оверхеда я не наблюдал — всё работало очень шустро, запуск программы — буквально за пару секунд. Рекомендовать такой подход не стану, т.к. не знаю всех деталей реализации, возможно там есть какие-то ноу-хау. Зато возможности для программы открывались широкие — при необходимости можно было подключаться к удаленному бд серверу совершенно так же, как к локальному (естественно, что в терминах программы фигурировал не БД-сервер, а "хранилище данных"). С sqlite так просто удаленный доступ не организовать.