переносимая нереляционная база данных - PullRequest
2 голосов
/ 22 февраля 2009

Я хочу поэкспериментировать / поиграться с нереляционными базами данных, было бы лучше, если бы решение было:

  • переносимый, то есть не требует установки. в идеале, просто скопируйте каталог в другое место, чтобы он работал. Я не против, если это требует редактирования некоторых файлов конфигурации или запуска инструмента конфигурации для первого использования.
  • доступно из питона
  • работает как на Windows, так и на Linux

Что вы можете порекомендовать для меня?

По сути, я хотел бы иметь возможность установить эту систему на общем Linux-сервере, где у меня мало пользовательских привилегий.

Ответы [ 9 ]

7 голосов
/ 23 февраля 2009

Рекомендую рассмотреть BerkelyDB с учетом вопросов лицензирования.

Я очень устал от людей, которые рекомендуют BerkleyDB без квалификации - вы можете распространять системы BDB только под лицензией GPL или какой-то неизвестной и не публично видимой платой за лицензирование от Oracle.

Для "локальной" игры, где она не используется внешними сторонами, это, вероятно, хорошая идея. Просто знайте, что вас ожидает лицензия.

Это также напоминание о том, что когда вы спрашиваете о технических рекомендациях, рекомендуется указать, является ли GPL приемлемым.

Из моего собственного вопроса о переносимой базе данных C API, хотя был предложен ряд других продуктов, ни один из встроенных не имеет привязок Python.

5 голосов
/ 23 февраля 2009

Metakit - интересная нереляционная встроенная база данных, поддерживающая Python.

Для установки требуется просто скопировать одну общую библиотеку и файл .py. Он работает на Windows, Linux и Mac и имеет открытый исходный код (лицензия MIT).

4 голосов
/ 22 февраля 2009

Если вы привыкли думать, что реляционная база данных должна быть огромной и тяжелой, как PostgreSQL или MySQL, SQLite вас приятно удивит.

Он реляционный, очень маленький, использует один файл, имеет привязки Python, не требует дополнительных привилегий и работает на Linux, Windows и многих других платформах.

4 голосов
/ 22 февраля 2009
3 голосов
/ 22 февраля 2009

Вы смотрели на CouchDB ? Он нереляционный, данные можно переносить с относительной легкостью, и он имеет API-интерфейс Python в виде couchdb-python . У него есть довольно необычные зависимости в виде Spidermonkey и Erlang .

Что касается решений на чистом Python, я не знаю, как далеко продвинулся PyDBLite , но, тем не менее, возможно, стоит проверить.

2 голосов
/ 22 февраля 2009

BerkeleyDB: (похоже, существует привязка API к python: http://www.jcea.es/programacion/pybsddb.htm)

0 голосов
/ 25 марта 2018

Добавление ссылки на TinyDB здесь, так как эта страница показывается вверху многих поисков. Это переносимая нереляционная база данных в Python. Он хранит python dicts в локальном файле json и делает их доступными для операций с базами данных, подобных mongodb. Он также имеет расширение для порта для команд mongodb, с той разницей, что вместо работы на другом системном сервере вы будете работать с локальным файлом json.

И в отличие от выбранного в настоящее время ответа, он находится под разрешительной открытой лицензией MIT.

Ссылки:

0 голосов
/ 23 февраля 2009

Если вы только приходите и уходите из Python, вы можете подумать об использовании Pickle для сериализации объектов. Не будет работать, если вы хотите использовать другие инструменты для доступа к тем же данным, конечно. Он встроен в python, поэтому у вас не должно быть никаких привилегированных проблем, но это не настоящая база данных, поэтому она может не соответствовать потребностям вашего эксперимента.

0 голосов
/ 22 февраля 2009

Вы смотрели База данных объектов Zope ?

Кроме того, SQLAlchemy или Слой ORM в Django делает управление схемами через SQLite практически прозрачным.


Редактировать

Начните с http://www.sqlalchemy.org/docs/05/ormtutorial.html#define-and-create-a-table чтобы увидеть, как создавать таблицы SQL и как они отображаются на объекты Python.

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

...