Переносимая нереляционная база данных

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

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

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

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

9 ответов

Решение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ссылки:

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

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

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


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

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

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

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