Александр Кошелев
Александр Кошелев Python-разработчик

Питонячьи библиотеки для CouchDB

По большому счету кроме urllib2 больше ничего и не надо. Но если хочется каких-то более удобных оберток над CouchDB REST API то есть из чего выбрать. Мне на глаза попадались три различные реализации и в начале разработки проекта пришлось потратить время на то чтобы выбрать подходящую.

Сразу оговорюсь, что все они очень похожи и делают одинаковые вещи - оборачивают в объекты основные сущности, которые предоставляет API – сервер, база, документ и вьюха. Все совместимы с последним релизом самого CouchDB – 0.10.

Первая из библиотек – couchdb-python. Самая старая из появившихся. Можно сказать референсная реализаци. Имеет все полезные абстракции и даже чуть боьлше. Это “больше” заключается в возможности задать схему документа в декларативном Django-like стиле и реализация питонячьего view-сервера. Первое нужно чтобы как-то структурировать документы и работу с ними, а второе для того чтобы использовать python как язык для map/reduce обработчиков вместо штатного JavaScript. Умеет работать как с simplejson так и с быстрой cjson библиотекой. Так же хочет чтобы балы httplib2.

Следующий кандидат это couchdbkit. Умеет практически всё тоже самое, но имеет чуть больше хелперов и экстеншенов с адаптерами к популярными библиотекам вроде Django. Тянет за собой в зависимостях restkit (как видно из названия – REST-клиент библиотека от того же автора) и умную библиотеку для выбора оптимального json пакета в системе. Недостатком является отсутствие view-сервера (хотя обещают, что “на днях” появится) и начало синдрома “большого проекта” у автора.

couchquery – из всех самая мало известная. Есть все базовые вещи плюс view-сервер как отдельный пакет. Откровенно говоря, самая слабая из всех.

В итоге я всё-таки выбрал couchdb-python. Написал какие-то вспомогательные функции по менеджменту баз и вьюх. Провязал их с подсистемой тестирования в Джанге. Понравилась работать со схемами – всё довольно просто и прозрачно, и дает возможность легко наворачивать функционал вокруг.

Возможно вы знаете ещё какие-то интересные реализации или аргуметы за/провит описанных мною, поэтому прошу поделить вашим опытом. Чем вы руководствовались и как выбирали CouchDB библиотеки для своих проектов?

comments powered by Disqus