Comments 22
А какой вообще смысл от schemaless базы, если классы моделей все равно ограничивают набор полей?..
Поработав с Mongo через Java, я склоняюсь к мнению что либо должен быть ORM фреймворк, либо надо оперировать голыми DBObject'ами, которые возвращает база без заведения отдельных классов моделей. Безусловно, второй случай менее строг и это может быть минусом. Но зато он предоставляет хорошую гибкость.
В вашем случае задолбаешься руками писать копирование значений из объекта, возвращаемого базой, в объект модели.
Поработав с Mongo через Java, я склоняюсь к мнению что либо должен быть ORM фреймворк, либо надо оперировать голыми DBObject'ами, которые возвращает база без заведения отдельных классов моделей. Безусловно, второй случай менее строг и это может быть минусом. Но зато он предоставляет хорошую гибкость.
В вашем случае задолбаешься руками писать копирование значений из объекта, возвращаемого базой, в объект модели.
В случае изменения задачи надо менять только классы моделей. В SQL БД надо менять схему с downtime и шансом что-нибудь сломать в процессе.
«оперировать голыми DBObject'ами» лишает Вас гибкости в принципе. Если про БД знают все уровни приложения впроть до шаблонов страниц мельчайшее изменение в требованиях порождает непрдсказуемое количество геморроя.
«оперировать голыми DBObject'ами» лишает Вас гибкости в принципе. Если про БД знают все уровни приложения впроть до шаблонов страниц мельчайшее изменение в требованиях порождает непрдсказуемое количество геморроя.
А какой вообще смысл от schemaless базы, если классы моделей все равно ограничивают набор полей?
Ну смысл-то в быстродействии. Т.е. быстродействии базы.
Но я согласен, что ORM должен быть. Без него конечно в 2011 году тяжеловато, кода и так много в java лишнего пишется.
Кстати, а можно ли при при insert узнать внутренний id, присвоенный документу?
Обычно если id и правда интересен логике приложения хорошей идеей будет его генерировать самому.
Интересны комментарий. Поясните?
Ну если он несёт какой-то смысл, то его можно сгенерировать самому, сохраняя этот самый смысл. Это позволяет например подготовить все данные для нескольких связанных операций и выполнять их параллельно, не дожидаясь выполнения одной. Кроме того сгенерированный id скорее всего будет компактнее и читабельнее (ObjectId имеет противную особенность, что уникальные внутри коллекции знаки находятся где-то в середине).
Значение для _id, если оно не задано, генерится при сохранении объекта драйвером доступа к БД. Как при этом получаются уникальные значения можно почитать в доке или посмотреть сорцы драйвера.
Так что, после сохранения объекта в базу, можно просто прочесть его поле _id, в которое будет записан индификатор.
Так что, после сохранения объекта в базу, можно просто прочесть его поле _id, в которое будет записан индификатор.
И как всегда описан только «нормальный» режим работы. А ведь в java-коннекторе для MongoDB самое главное это обработка исключений. Так вот, этот java-коннектор обожает кидать RuntimeException'ы из самых неожиданных мест. А если вы, например, работаете с базой асинхронно из выделенных потоков, то неожиданные экспешены, убивающие треды в пуле, вам ни к чему.
А зачем тут конверсии в/из DBObject? Ява что сама не умеет сериализовывать классы?
Мне теоритически интересна возможность использования noSQL хранилиш, для хранения настроек пользователя на серврер приложений к примеру ну и много чего еще.
Мне вот правда интересно пару ньансов, возможно кто-то может прояснить:
-0- А что если положить в noSQL хранилише несколько миллионов записей?? Насколько эффективно будет извлекать запись по некоему ключу ??
-1- В кластеризованой среде мне необходим отдельный сервре для устаноки на него noSQL базы, не так ли ??
Мне вот правда интересно пару ньансов, возможно кто-то может прояснить:
-0- А что если положить в noSQL хранилише несколько миллионов записей?? Насколько эффективно будет извлекать запись по некоему ключу ??
-1- В кластеризованой среде мне необходим отдельный сервре для устаноки на него noSQL базы, не так ли ??
Sign up to leave a comment.
Использование MongoDB в Java EE 6