Предложение файловой базы данных с поддержкой нескольких одновременных пользователей

Мне нужна база данных, которая могла бы храниться на сетевом диске и позволяла бы нескольким пользователям (до 20) использовать ее без какого-либо серверного программного обеспечения.

Я рассматриваю MS Access или Berkeley DB.

Можете ли вы поделиться своим опытом работы с файловыми базами данных?
Какой из них вы пользовались, были ли с ним проблемы?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
2
0
1 710
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Доступ может быть сукой. Я был в ситуации, когда мне приходилось обходить 20-50 человек, чтобы закрыть доступ, чтобы я мог перейти в «режим дизайна», чтобы изменить дизайн форм и, возможно, столбца. Совсем не весело. (Старый доступ, возможно, это просто плохая настройка)

Ответ принят как подходящий

Я бы предложил SQLite, потому что вся база данных хранится в одном файле, и она вполне безопасно обрабатывает несколько пользователей, обращающихся к ней одновременно. Существует несколько различных библиотек, которые вы можете использовать для своего клиентского приложения, при этом серверное программное обеспечение не требуется.

Одна из сильных сторон заключается в том, что он настолько точно имитирует серверы SQL, что, если вам нужно перейти от использования файла базы данных к полноценному серверу SQL, большинство ваших запросов в вашем клиенте не нужно будет изменять. Вам просто нужно будет перенести данные в новую базу данных сервера (что я не удивлюсь, если есть программы для преобразования баз данных SQLite, например, в базы данных MySQL).

Дэниел, я так понимаю, что SQLite использует блокировку на уровне файлов, когда вы выполняете обновления, что (а) просто, (б) убивает одновременную запись - даже в разные таблицы. Или идея, что всего с 20 пользователями это не проблема?

SquareCog 12.11.2008 07:56

Я действительно не думаю, что файловые базы данных могут масштабироваться более чем на полдюжины пользователей. В последний раз, когда у меня была база данных Access (правда, это было довольно давно), мне пришлось очень много работать, чтобы заставить ее работать для 8-9 человек.

На самом деле гораздо проще установить Ubuntu на старый мусорный компьютер с PostgreSQL или MySQL. Это то, что мне приходилось делать, даже когда я сохранял интерфейс Access.

Айенде недавно пытался принять аналогичное решение и попробовал несколько так называемых встроенных баз данных. Надеюсь, его наблюдения сможет вам помочь.

Я использую Access в течение некоторого времени и в самых разных ситуациях, в том числе онлайн. Я обнаружил, что Access работает хорошо, если он правильно настроен в соответствии с руководящие указания. Одним из преимуществ Access является то, что он включает в себя все в одном пакете: формы, создание запросов, отчеты, управление базами данных и VBA. Кроме того, он хорошо работает со всеми другими приложениями Office. Среду выполнения Access 2007 можно получить бесплатно из здесь, что снижает стоимость распространения. Доступ, конечно, непригоден для больших операций, но для двадцати пользователей он должен быть вполне подходящим. Обновлено: Microsoft помещает количество одновременных пользователей в 255.

Остерегайтесь любых файловых баз данных, все они могут иметь одни и те же проблемы. Ваша ситуация действительно требует решения клиент / сервер.

Из FAQ по SQLite

A good rule of thumb is that you should avoid using SQLite in situations where the same database will be accessed simultaneously from many computers over a network filesystem.

http://www.sqlite.org/whentouse.html

Исходный вопрос для меня не имеет смысла, поскольку варианты несовместимы. BerkeleyDB - это только ядро ​​базы данных, а Access - это инструмент разработки приложений, который поставляется с ядром базы данных по умолчанию на основе файлов (т. Е. Не серверным) (Jet). Благодаря размещению Access с Беркли кажется очевидным, что нужен Только, механизм базы данных, а не приложение вообще, но как конечные пользователи используют Berkeley DB без внешнего интерфейса, я не знаю (я использовал только это из командной строки).

Те, кто не может запустить Jet MDB с 20 одновременными пользователями, просто не компетентны давать советы по использованию Jet в качестве хранилища данных. Это вполне выполнимо, если следовать лучшим практикам. Я бы порекомендовал в дополнение к веб-странице Microsoft Best Practices, Лучшие Лрактики Тони Тэйвса и Часто задаваемые вопросы о коррупции Тони (то есть вещей, которых вы хотите избежать, чтобы иметь стабильное приложение).

Я сильно сомневаюсь, что исходный вопросник не создает интерфейсного приложения, но, поскольку он не указывает, какой интерфейс задействован, трудно рекомендовать бэкенд, который будет работать с ним. Преимущество Access заключается в том, что вы получаете обе части уравнения, и при правильном использовании он совершенно надежен для нескольких пользователей.

Можно ли настроить Access для поддержки 10-20 пользователей? Да. Однако он, как и все файловые базы данных, использует файловую систему для блокировки и управления параллелизмом. Кроме того, файлы данных Access более восприимчивы к повреждению базы данных, чем серверы баз данных. И хотя вы можете настроить его для этого, вы ДОЛЖНЫ, как упоминал Дэвид Фентон выше, следовать передовым методам, если вы хотите получить надежную систему.

Лично я считаю, что с учетом трудностей, которые необходимо преодолеть, чтобы убедиться, что решение Access достаточно безотказно, гораздо проще реализовать экземпляр MSDE / SQL Server Express или postgreSql.

Berkeley DB поддерживает высокую степень параллелизма (намного больше 20), но делает это в основном за счет использования общей памяти и мьютексов (возможно, даже репликации) - средств, которые не работают, когда BDB развернут как файл, хранящийся на сетевом диске.

Чтобы воспользоваться возможностями параллелизма DBD, вам нужно будет создать на его основе приложение.

Другие вопросы по теме