Предложение базы данных файлов с поддержкой нескольких одновременных пользователей - PullRequest
2 голосов
/ 29 августа 2008

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

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

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

Ответы [ 9 ]

6 голосов
/ 29 августа 2008

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

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

5 голосов
/ 02 сентября 2008

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

Из FAQ по SQLite

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

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

5 голосов
/ 29 августа 2008

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

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

2 голосов
/ 29 августа 2008

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

2 голосов
/ 29 августа 2008

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

1 голос
/ 14 октября 2008

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

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

1 голос
/ 17 сентября 2008

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

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

1 голос
/ 16 сентября 2008

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

Те, кто не может запустить Jet MDB с 20 одновременными пользователями, просто не компетентны давать советы по использованию Jet в качестве хранилища данных. Это вполне выполнимо, если следовать передовой практике. В дополнение к веб-странице Microsoft Best Practices я бы порекомендовал Рекомендации Tony Toews и Tony's Corruption FAQ (т. Е. То, чего вы хотите избежать, чтобы иметь стабильное приложение) .

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

1 голос
/ 30 августа 2008

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

...