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

StackOverflow https://stackoverflow.com/questions/35017

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

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

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

Из FAQ по SQLite

  

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top