Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
 Embedded databases = no concurrent connections ?  [new]
Chys
Member

Откуда:
Сообщений: 93
Правильно ли я понимаю, что embedded бд создаются с расчетом, что пользовать такую бд будет только одно application? То есть они не поддерживают concurrent connections? И если в проекте есть хотя бы два application, которые работают с бд, про embedded database можно забыть?

Интересная бд SQLite. Вроде как ее не советуют, если есть concurrent connections, но автор про нее пишет: "Of those (database engines) that are serverless, SQLite is the only one that this author knows of that allows multiple applications to access the same database at the same time". Хотя тут же на той же странице говорит о database engine that uses a server: "... because a server is a single persistent process, it is able control database access with more precision, allowing for finer grain locking and better concurrency."
28 июл 09, 06:55    [7466859]     Ответить | Цитировать Сообщить модератору
 Re: Embedded databases = no concurrent connections ?  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
Chys
Правильно ли я понимаю, что embedded бд создаются с расчетом, что пользовать такую бд будет только одно application? То есть они не поддерживают concurrent connections? И если в проекте есть хотя бы два application, которые работают с бд, про embedded database можно забыть?

Ну, раньше думал, что то, что Вы описали - однопользовательская. А вот embedded database куда-то типа встроенная. Думаю, что существуют различные взгляды от - типа встроена в программу - и низя с помощью других программ управлять ею, до всяких там типа лицензионных каких-то соглашений, определенным образом ограничивающих управление БД в системе, будь то хоть там система с Оракловой БД, сервером приложение и доброй сотней клиентов.
Впрочем, перегруженность терминов как бы нормальное дело в ИТ.
28 июл 09, 10:25    [7467332]     Ответить | Цитировать Сообщить модератору
 Re: Embedded databases = no concurrent connections ?  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30290
есть два типа понятия embedded СУБД

1. когда дистрибутив СУБД очень мал, но тем не менее является самодостаточным. Т.е. эдакий "микро-сервер". В этом случае обычно много приложений могут работать одновременно с таким сервером, как с обычным.

2. когда ядро СУБД поставляется в виде shared library - dll для Windows или so для Linux. В этом случае СУБД сама по себе (dll) работать не может, и может быть только прилинкована к приложению (exe). А если несколько exe одновременно попытаются подсоединиться к одному файлу БД, то получится не клиент-сервер, а файл сервер.
То есть, если сама встраиваемая СУБД является файл-сервером, то при многих exe ок. А вот если она клиент-серверная (например Firebird embedded), то облом. Потому что в последнем случае dll+exe и есть сервер СУБД. А несколько серверов (клиент-серверных) с одной БД обычно работать не могут.

Исходя из Вашей цитаты про SQLLite, приходим к выводу, что эта СУБД не клиент-серверная, а файл-серверная. Так оно и есть, собственно, тем более что SQLLite как отдельная самодостаточная БД (без exe) не существует.
28 июл 09, 10:56    [7467538]     Ответить | Цитировать Сообщить модератору
 Re: Embedded databases = no concurrent connections ?  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

Chys пишет:
> Правильно ли я понимаю, что embedded бд создаются с расчетом, что
> пользовать такую бд будет только одно application? То есть они не
> поддерживают concurrent connections?

Не обязательно. Думаю, кто-то поддерживает, кто-то может и нет.

И если в проекте есть хотя бы два
> application, которые работают с бд, про embedded database можно забыть?

Нет. Точно нет. Разные есть СУБД, и по-разному они embedded.
В принципе, embedded СУБД - это обычно библиотека, с которой
линкуентся приложение. Потом, когда оно запускается, часть
этого приложения работает как сервер БД. Из этого приложения
можно устанавливать внутренние коннекции к внутреннему серверу,
возможно, только одну, возможно несколько. Также возможно,
что внутренний сервер предоставляет возможность делать соединения
к БД извне, для внешних приложений. Т.е. для внешних приложений
ваше приложение выглядит ещё и как сервер СУБД. По крайней мере
одну СУБД, работающую по такой схеме я знаю.

> Интересная бд SQLite. Вроде как ее не советуют,

Про неё я к сожалению не знаю ничего.

Есть ещё MYSQL в embedded, кажется есть InterBase.

Posted via ActualForum NNTP Server 1.4

28 июл 09, 11:55    [7468006]     Ответить | Цитировать Сообщить модератору
 Re: Embedded databases = no concurrent connections ?  [new]
Chys
Member

Откуда:
Сообщений: 93
MasterZiv
Т.е. для внешних приложений ваше приложение выглядит ещё и как сервер СУБД. По крайней мере одну СУБД, работающую по такой схеме я знаю.

Я так понимаю из бесплатных бд MS SQL Server Compact работает по такой схеме?
28 июл 09, 17:13    [7470367]     Ответить | Цитировать Сообщить модератору
 Re: Embedded databases = no concurrent connections ?  [new]
landy
Member

Откуда:
Сообщений: 1557
тут неполный список
29 июл 09, 10:22    [7472248]     Ответить | Цитировать Сообщить модератору
Все форумы / Сравнение СУБД Ответить