2009-02-22 3 views
1

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

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

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

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

+0

@hansen j: В настоящее время вы используете слой ORM? Если да, то какой? –

+0

"переносной, то есть он не требует установки." Извините, я не думаю, что есть что-то, что не требует установки. – jshen

+0

«Установка» как в отдельном серверном процессе - это гораздо более крупная сделка, чем «должны иметь определенные библиотеки Python». –

ответ

7

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

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

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

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

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

+0

Мне очень нравится лицензия.Они всегда решаются для меня при принятии решения ... – torial

2

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

+0

BDB привязки находятся в стандартной библиотеке, фактически, используются полками, anydbm и другими. –

+0

К сожалению, стандартные привязки библиотек обесцениваются в Python 2.6 и удалены в Python 3.0 –

3

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

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

+0

Описание crouchDB звучит очень хорошо, но переносимо ли оно? – hasen

+0

Существует бета-версия двоичного установщика для доступных здесь окон: http://wiki.apache.org/couchdb/Windows_binary_installer Я только запускал его на OS X и Linux. – Hank

+0

Я бы не сказал, что на этом этапе он особенно портативен. Я полагаю, зависит от того, что вы подразумеваете под переносным. Не могли бы вы считать Mysql и Postgresql переносимыми, учитывая количество операционных систем, на которых он работает, но это тяжелая установка? – Evan

3

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

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

+0

Я хочу, чтобы он был без схемы, поэтому я могу изменить модели в своем коде без запуска sql-команды. sql-lite отлично звучит, но это реляционный! – hasen

+0

@hasen j: вы можете легко управлять своей схемой из своего приложения - вам не нужны профессиональные DBA для этого. Если вы используете SQLAlchemy, вы используете схему управления почти прозрачно для вашего приложения. –

+0

Если вы действительно хотите, чтобы пары имя-значение имели простую схему, вы можете сделать это в SQLite, сохраняя при этом свою легкость, переносимость, блокировку, транзакции и т. д .: CREATE TABLE simple (id INTEGER PRIMARY KEY, имя UNIQUE, значение); CREATE INDEX idx_simple_name ON simple (name); – 2009-02-23 23:55:55

0

Вы посмотрели Zope Object Database?

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


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

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

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

+0

I _am_ используя django, это просто так, что каждый раз Я меняю модель, я должен пойти и изменить базу данных! – hasen

+0

Я только что видел ваш комментарий к ответу Пате. Не могли бы вы объяснить, как SQLite делает управление схемой прозрачным? – hasen

+0

@hansen j: «Если вы используете SQLAlchemy, управление схемой почти прозрачно для вашего приложения» - это то, что я сказал. Не SQLite, а SQLAlchemy ORM над SQLite. Но если вы используете Django, у вас будет тот же набор проблем. Пожалуйста, обновите свой вопрос фактом Django. –

5

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

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

+0

+1. Метакит классный. Жаль, что он слишком стар. – muhuk

+0

+1. Согласитесь с muhuk ... – torial

0

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

+0

shelve рассоливает объекты в bsddb (Berkeley), поэтому, если вам нужна простая настойчивость, это может быть решением. –

 Смежные вопросы

  • Нет связанных вопросов^_^