Как стать автором
Обновить
1.72
Рейтинг

MongoDB *

Документо-ориентированная система управления БД

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

Транзакции в MongoDB

Java *NoSQL *MongoDB *
Tutorial
image MongoDB — замечательная база данных, которая становится все популярнее в последнее время. Все больше людей с SQL опытом начинают её использовать, и один и первых вопросов, который у них возникает: MongoDB transactions?.

Если поверить ответам со stackoverflow, то все плохо.

MongoDB doesn't support complex multi-document transactions. If that is something you absolutely need it probably isn't a great fit for you.
If transactions are required, perhaps NoSQL is not for you. Time to go back to ACID relational databases.
MongoDB does a lot of things well, but transactions is not one of those things.
Но мы не поверим и реализуем транзакции (ACID*) основанные на MVCC. Ниже будет рассказ о том, как эти транзакции работают, а тем, кому не терпится посмотреть код — добро пожаловать на GitHub (осторожно, java).

Пост не о MongoDB, а о том, как использовать compare-and-set для создания транзакций, а durability обеспчивается ровно в той степени, в которой её обеспечивает хранилище.
Читать дальше →
Всего голосов 52: ↑43 и ↓9 +34
Просмотры 44K
Комментарии 35

MongoDB для разработчиков

MongoDB *
Tutorial
Всемирно известная компания 10gen, разрабатывающая опенсорсную базу данных MongoDB, представляет уникальный курс по MongoDB для разработчиков. Вы научитесь всему необходимому для создания вашего приложения на основе MongoDB. Курс позволит вам овладеть навыками установки, работы с JSON, созданием схем, запросов, сохранения данных, индексации и работы с языковыми драйверами. В процессе курса вы будете строить платформу для блога, основанного на MongoDB.
Shut up, and take my money!
Всего голосов 79: ↑75 и ↓4 +71
Просмотры 37K
Комментарии 41

Графовая база данных Neo4j в PHP

PHP *NoSQL *MongoDB *
Из песочницы
В последнее время я все чаще слышу о NoSQL и о графовых базах данных в частности. Но воспользовавшись хабропоиском с удивлением обнаружил, что статей на эту тему не так и много, а по запросу «Neo4j», так вообще 4 результата, где косвенно упоминается это название в тексте статей.

Что такое Neo4j?


image
Neo4j — это высокопроизводительная, NoSQL база данных основанная на принципе графов. В ней нет такого понятия как таблицы со строго заданными полями, она оперирует гибкой структурой в виде нод и связей между ними.

Как я докатился до этого?


Уже более года я не использовал в своих проектах SQL, с того времени, как попробовал документо-ориентированную СУБД "MongoDB". После MySQL моей радости не было предела, как все просто и удобно можно делать в MongoDB. За год, в нашей студии создания сайтов, переписали тройку CMS, использующих основные фишки Mongo c её документами, и с десяток сайтов работающих на их основе. Всё было хорошо, и я уже начал забывать, что такое писать запросы в полсотни строк на каждое действие с БД и все бы ничего пока на мою голову не свалился проект с кучей отношений, которые ну никак не укладывались в документы. Возвращаться к SQL очень не хотелось, и пару дней я потратил чисто на поиск NoSQL решения, позволяющего делать гибкие связи — на графовые СУБД. И по ряду причин мой выбор остановился на Neo4j, одна из главных причин — это то, что мой движок был написан на PHP, а для неё был написан хороший драйвер "Neo4jPHP", который охватывает почти 100% REST-интерфейса, предоставляющегося сервером Noe4j.
Читать дальше →
Всего голосов 64: ↑63 и ↓1 +62
Просмотры 55K
Комментарии 45

Релиз MongoDB 2.2.0

NoSQL *MongoDB *
Вчера состоялся долгожданный релиз NoSQL базы данных MongoDB 2.2.0.
Среди самых важных нововведений стоит отметить:

Aggregation Framework
Инструмент, оптимизирующего обработку больших массивов данных без map-reduce (больше информации на хабре)

TTL-коллекций
TTL-коллекции позволяют удалять из коллекции данные, у которых вышло время жизни, установленое с помощью специального индекса(удобно, например, для хранения логов, сессий и подобной информации). При использовании таких коллекций создается дополнительный фоновый процесс для реализации соответсвующей проверки
docs.mongodb.org/manual/release-notes/2.2
Читать дальше →
Всего голосов 33: ↑30 и ↓3 +27
Просмотры 2.5K
Комментарии 6

Приведение к типам в Yii::app()->request

PHP *Yii *MongoDB *
Всем привет!

Хочу поделиться с вами небольшим решением проблемы, с которой столкнулся при переносе части данных проекта в mongodb.
Изначально у нас использовалась только Mysql и все параметры приходящие от клиента вполне себе позволяли получать данные из базы без каких-либо проблем.

<?php
   $id = Yii::app()->request->getParam('id', 0);
   $data = Data::getForId($id);
?>

А суть в том, что для mysql нет разницы [select * from data where id = 1] или [select * from data where id = '1'].
Но mongodb типы данных различает, по этому нельзя найти запись используя условие id == '1' если id в mongodb является числом.

посмотреть решение
Всего голосов 19: ↑11 и ↓8 +3
Просмотры 21K
Комментарии 19

MongoDb в действии — интернет магазин

Разработка веб-сайтов *MongoDB *
Скоро будет год с момента моего знакомства с MongoDb. Я был далеко не первым, кто начал с ней работать, но, тем не менее, эта технология все еще воспринимается как экспериментальная.

В целом скажу так: работать с MongoDB удобнее чем с MS SQL. Регулярно встречаются сценарии, которые требуют больше усилий по сравнению с SQL, однако, в результате ты больше знаешь о том, как устроена твоя база данных и лучше контролируешь что будет тормозить, а что — нет.

На хабре полно приложений в стиле «Hello World», так что инициализацию среды опустим и перейдем сразу к более продвинутым вопросам, а именно:
  • Почему удобнее хранить весь объект целиком, а не по таблицам?
  • Как бороться с реляциями?


Читать дальше →
Всего голосов 53: ↑45 и ↓8 +37
Просмотры 26K
Комментарии 93

MongoDB и C#. Новые возможности и неочевидные проблемы

.NET *MongoDB *C# *

Введение


В начале июля вышла очередная версия(1.5) официального драйвера MongoDB для C#. Среди нововведений стоит отметить поддержку типизированных запросов. Теперь появилась возможность использовать лямбда-функции в связке с Expression.
В этой статье я покажу примеры нового синтаксиса, который мне очень нравится(а мне вообще Expression в C# очень нравится), а также продемонстрирую примеры запросов, где, увы, Expression нам ничем не поможет и придется вернуться к привычным строкам. Также я порассуждаю, почему оно так, и будет ли когда-нибудь всё прекрасно в С# при работе с MongoDB.
Если интересно, то читайте дальше
Всего голосов 21: ↑19 и ↓2 +17
Просмотры 15K
Комментарии 19

MongoDB: производительность запросов на диапазонах

MongoDB *
Перевод
Если вы путешествовали по территории индексов MongoDB, вы возможно слышали принцип: Если ваши запросы содержат сортировку, то добавте сортированное поле в конец индекса который используется в этих запросах.

Во многих случаях когда запросы содержат условия равенства как например {“name”: “Charlie”}, принцип который выше очень полезен. Но что о нем можно сказать со следующим примером:

Запрос:
db.drivers.find({"country": {"$in": ["A", "G"]}).sort({"carsOwned": 1})
Индекс:
{"country": 1, "carsOwned": 1}

Эта связка является не эффективной, хотя принцип соблюдается. Потому что тут есть ловушка в которую вас может привести этот принцип.
Ниже мы рассмотрим причины возниконвения этой ловушки и к концу статьи вы будете иметь новое правило которое будет вам помогать при индексировании.
Читать дальше →
Всего голосов 35: ↑26 и ↓9 +17
Просмотры 13K
Комментарии 15

Моделирование данных в MongoDB

NoSQL *MongoDB *
Перевод
imageОдна из самых разрекламированных фич MongoDB — это гибкость. Я сам не раз подчеркивал это в бесчисленных разговорах о MongoDB. Однако, гибкость — это палка о двух концах: большая гибкость подразумевает более широкий выбор решений для моделирования данных. Тем не менее, мне нравится гибкость, которую предоставляет MongoDB, просто нужно иметь ввиду некоторые рекомендации, прежде чем начать разрабатывать модель данных.

В этой статье мы рассмотрим, как смоделировать структуру, содержащую списки рассылок и данные о людях, которые входят в эти списки.
Читать дальше →
Всего голосов 51: ↑50 и ↓1 +49
Просмотры 50K
Комментарии 44

Секреты MongoDB — масштабируемость и производительность — мастер-класс 10 июня

Блог компании DevConf Разработка веб-сайтов *MongoDB *

Привет, Дерик! Кто является целевой аудиторией твоего мастер-класса?

Привет! Все, кто слышал или не слышал о MongoDB и NoSQL и хочет узнать, когда их стоит применять и как правильно это делать. Я также расскажу о другом типе мышления, который необходим для того, чтобы перестроить данные в более подходящие «документы», сравнительно с реляционными БД.
Читать дальше →
Всего голосов 9: ↑4 и ↓5 -1
Просмотры 6.5K
Комментарии 0

Zabbix, мониторим MongoDB

MongoDB *
Из песочницы
Доброе время суток!
… заказчик востребовал мониторинг MongoDB. Покопавшись в просторах интернета, наткнулся на статью про онлайн систему мониторинга MongoDB (MMS), но данный вариант не совсем подходит так как: во первых данные статистики не должны уходит дальше своих серверов, во вторых в компании была поднята отличная на мой взгляд система мониторинга Zabbix. На оф сайте MobgoDB в разделе мониторинг и диагностика было упоминание за готовый плагин к Zabbix’у от Mikoomi «MongoDB Plugin».
Читать дальше →
Всего голосов 17: ↑17 и ↓0 +17
Просмотры 17K
Комментарии 15

MongoDB: Запросы

MongoDB *
Хоть и некоторые писали относительно моего предыдущего топика MongoDB: Создание, обновление и удаление документов, что это пересказ офф. документации, я с этим не полностью согласен. Мне показалось, что информация в нём оказалось кому-то полезной, поэтому выкладываю продолжение.

Find — аналог SELECT в MySQL. Используется для выборки документов из MongoDB. Возвращает массив документов в виде коллекции, если документов нет — пустую коллекцию. Пример:

> db.users.find();

Вернёт всех пользователей из коллекции.

> db.users.find( { age: 27 } );

Вернёт всех пользователей, у которых возраст равен 27.
Читать дальше →
Всего голосов 70: ↑48 и ↓22 +26
Просмотры 183K
Комментарии 38

MongoDB: Создание, обновление и удаление документов

MongoDB *
Из песочницы
В рамках чтения мной книги “MongoDB: The Definitive Guide” Kristina Chodorow and Michael Dirolf, решил выписывать основные моменты из глав, для лучшего освоения материала. Возможно, кому-то это тоже будет полезно.

Insert



Insert — базовый метод для добавление информации в MongoDB. Для того, чтоб добавить документ в коллекцию делаем вот так:

> db.foo.insert( { “bar” : “baz” } );

В таких ситуациях, когда нужно добавить несколько документов, для более быстрой вставки желательно использовать, так называемые, batch insert’ы (групповая вставка)

> db.foo.insert( { “arr” : [ { a : 1 , b : 1 } , { a : 2 , b : 2 } ] } );

Грубо говоря, просто вставляем массив.
Читать дальше →
Всего голосов 57: ↑38 и ↓19 +19
Просмотры 66K
Комментарии 22

MongoDB 2.0

MongoDB *
Good news, everyone. Любите вы SQL, или не любите SQL (любите NoSQL?), но сегодня (ой, уже вчера) вышли как PostgreSQL 9.1 (про которую, пока я пишу этот пост, наверняка кто-нибудь тоже напишет), так и MongoDB 2.0!

И что же там нового?
Всего голосов 65: ↑62 и ↓3 +59
Просмотры 3K
Комментарии 31

Перевод документации MongoDB

MongoDB *
Буквально сегодня увидел у себя в Facebook сообщение о том, что команда из 10gen, занимающаяся разработкой, ставшей причиной долгих и упорных споров, MongoDB, набирает добровольцев для перевода актуальной документации к этой БД.

Вот полный список языков, на которые планируется перевод:
  • Chinese
  • French
  • German
  • Hebrew
  • Hungarian
  • Indonesian
  • Italian
  • Japanese
  • Korean
  • Portuguese
  • Russian
  • Serbian
  • Spanish
  • Swedish
  • Vietnamese

Читать дальше →
Всего голосов 33: ↑32 и ↓1 +31
Просмотры 6.4K
Комментарии 3

Первая встреча клуба DZ – MongoDB, Clojure, MapReduce и Azure

Разработка веб-сайтов *MongoDB *Microsoft Azure Clojure *
Вчера побывал на интересном мероприятии и хотел поделиться впечатлениями. Мероприятие представляло из себя неформальную встречу с открытыми обсуждениями, общением и множеством практической информации.

С некоторой статистикой вы можете ознакомиться в ЖЖ главного организатора Дмитрия Завалишина из Digital Zone.

Вкратце по темам – MongoDB, Clojure, MapReduce и Azure. В ходе первоначального знакомства всех пришедших стало известно, что основная часть людей пришла послушать про мир без SQL в лице MongoDB.
Подробнее...
Всего голосов 26: ↑19 и ↓7 +12
Просмотры 1K
Комментарии 5

Вклад авторов