Показаны сообщения с ярлыком mongoalchemy. Показать все сообщения
Показаны сообщения с ярлыком mongoalchemy. Показать все сообщения

воскресенье, 20 марта 2011 г.

MongoAlchemy - Внимание! Опасность!

Как и обещал, покопался малость в MongoAlchemy. Больше всего меня волновал вопрос поддержки отношений в базе. MongoAlchemy имеет поле DocumentField, как раз для встраивания документов.

Для проверки его работы, я решил написать небольшой тест. С двумя документами, который включает один в другой. В итоге, выяснил, что на самом деле, это не DBRef вовсе. MongoAlchemy просто копирует документ в другой документ, а не вставляет DBRef, и не dereference его.

В итоге, если использовать MongoAlchemy в базе, где так или иначе используют отношения, то весьма вероятна ситуация излишнего копирования данных. И в зависимости от данных, оно может быть очень излишним. Второй проблемой будет, если какие из объектов, на которые ссылаются - будут изменены. Копии то, останутся не тронутыми. Это может привести к поломкам базы.

Исследуя эту проблему, я не упустил возможность заглянуть в трекер MongoAlchemy на GitHub. У них уже пятый месяц висит задача на реализацию поддержки DBRef, и судя по всему, оно еще не реализовано.

Вывод: используйте MongoAlchemy аккуратно. Если ваш проект гарантирует то, что данные в базе не будут требовать отношений, то можете ее использовать. Но в любом случае, преимуществом будет использовать MongoKit, который на данный момент является лучшей ORM для MongoDB.

пятница, 18 марта 2011 г.

Краткий обзор ORM для MongoDB на Python

Постепенно интересуясь альтернативами MongoKit, я решил глянуть на альтернативы, и на то, что они предлагают. К сожалению, на данный момент, альтернатив в области Python MongoDB ORM мало, и они, не будем кривить душой, пока слабы. Но даже для их молодости, они уже вполне юзабельны, и могут использоваться. Во многом, здесь заслуга самой MongoDB, и разработчиков PyMongo.

Также хочу отметить, что в посте, интересное найдут либо новички, либо те, кто пока ищут инструменты для работы с MongoDB на Python (хотя думаю, они это найдут и без этого поста), либо кто просто так, со стороны интересуется положением дел. Пост абсолютно не претендует на экспертную оценку, и не описывает подробно достоинства, возможности и недостатки, тех или иных инструментов. Если вы заинтересовались - прошу под кат.