Рубрика:
Разработка /
Проектирование
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
АЛЕКСАНДР КАЛЕНДАРЕВ, программист, РБК Медиа, akalend@mail.ru
Концепции моделирования MongoDb на примере разработки социальных игр
Подход к проектированию данных в документно-ориентированных БД немного отличается от подобной работы в традиционных СУБД. Суть этих отличий мы сегодня и рассмотрим
MongoDb – яркий представитель документно-ориентированной базы данных, реализованой на С++, являющийся Open Source-продуктом, что еще больше повышает ее популярность, распространяется под лицензией GNU AGPL v3.0. Название составлено из части слова «humongous», что значит «большой», «значительный», а Db – сокращение от «DataBase».
Первый релиз был выпущен фирмой 10 Gen в 2008 году. Текущей версией является 2.4. В настоящее время MongoDb используют более 10 миллионов компаний и стартапов, в том числе такие гиганты ИТ-индустрии, как SourceForge.net, foursquare (социальная сеть), the New York Times, MTV, Cisco и многие другие.
В отличие от традиционных СУБД MongoDb не может делать операции объединения, JOIN-таблицы или, в терминологии MongoDb, коллекции. Поэтому MongoDb подходит в случае слабосвязанных или слабоструктурированных данных. Если схема данных представляет сложные семантические связи, то лучше использовать другой класс NoSQL-хранилищ: «графовые БД».
Основные концепции
В основе концепции MongoDb лежит понятие документ. Документ представляет набор поименованных полей, где каждое поле выглядит как пара «ключ-значение».
Внешнее представление документа сделано в виде формата JSON (Java Script Object Notation), а внутренняя организация хранения и передачи данных между клиентом и сервером осуществляется в его бинарном представлении: BSON (Binary-encoded serialization of JSON).
Пример JSON-документа:
{
"user_id" : 1,
"nickname" : "Bob",
"level" : 3,
"pvp_level": 17 ,
"awards" : ["hero-I","gold star"]
}
Документ содержит множество поименованных полей с их содержанием. По сути, каждый документ содержит в себе схему описания. Это позволяет хранить «гибкие» структуры данных, что является некоторым преимуществом перед традиционными РСУБД.
Множество документов сгруппированы в коллекции. Так, например, множество данных о пользователях может быть объединено в коллекцию users. А каждый элемент коллекции users является документом, описывающим конкретного пользователя.
Все документы в пределах коллекции проиндексированы по первичному ключу в BTree-индекс. BTree-индекс позволяет делать выборки по условию «больше и меньше». Также MongoDb позволяет индексировать документы по вторичному индексу.
Множество коллекций должно быть объединено в одну из баз данных. Один запущенный экземпляр MongoDB может поддерживать несколько разных баз данных. Концептуально база данных соответствует понятию базы данных в MySQL или схемы в Oracle.
Для лучшего понимания мы можем сделать сравнение в терминах традиционных РСУБД (см. таблицу 1).
Таблица 1. Сравнение традиционной РСУБД и MongoDb
РСУБД |
MongoDb |
База данных, Схема данных |
База данных |
Таблица |
Коллекция |
Строка данных, Таблицы |
Документ |
Колонка строки |
Поле документа |
Курсор |
Курсор в хранимых процедурах
|
Статью целиком читайте в журнале «Системный администратор», №3 за 2014 г. на страницах 46-49.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|