SlideShare a Scribd company logo
MongoDB

Области применения, преимущества и узкие места,
тонкости использования в высоконагруженных системах.



                Александр Чайка <marco.manti@gmail.com>, 06/2012
                                                               1
Что такое NoSQL?

Основная цель подхода —
  расширить возможности
  базы данных там, где SQL
  недостаточно гибок…


                             2
В основе идей NoSQL лежит следующее:
1. Нереляционная модель данных;

 RDBMS              NoSQL




                                       3
2. Открытый
   исходный код;

3. Хорошая горизонтальная
   масштабируемость “из коробки”;

MySQL Community      MongoDB
   4 nodes         1’000 nodes
                                    4
Установка
Windows – качаем и ставим:
 > mongod --logpath /var/log --logappend
 --dbpath /var/data --install

Ubuntu/Linux – ставим в ручную:
  https://github.com/mongodb/mongo.git
  apt-get install mongodb
                                           5
Проблемы репозиториев
MongoDB database versions
• Ubuntu 10.04 LTS (AWS default) - 1.2.2
• Mongodb.org – 2.0.5

MongoDB PHP driver versions
• PEAR channel – 1.2.1
• GITHub official – 1.2.5

                                           6
Динамические базы и коллекции
1. Не надо знать, существует ли база;
2. Не надо знать структуру базы;
3. Не надо знать имя коллекции
   (таблицы);
4. У каждого документа (строки)
   может быть своя структура.
                                    7
Динамические базы и коллекции
$mongo = new Mongo;
$mongo->database->collection->insert(array(
    “id” => 1,
    “name” => “user”,
    “pass” => “pass”
));
$mongo->database->collection->insert(array(
    “id” => 1,
    “action” => “control”,
    “desc” => “description”
));
                                              8
Динамические базы и коллекции
$mongo->database->collection->find(array(“id”:1));
  array(
      “id” => 1,
      “name” => “user”,
      “pass” => “pass”
  );
  array(
      “id” => 1,
      “action” => “control”,
      “desc” => “description”
  );
                                                 9
JSON-style and JavaScript
• Весь синтаксис запросов построен на основе
  JSON-объектов:
  > use database
  > db.collection
    .find({ id: {$ne: 1}}, { name: 1})
    .sort(, ‘group.id’:-1, id:-1})
    .limit(10);
• Для внутреннего хранения используется
  BSON – бинарное представление JSON.
                                               10
SQL to Mongo mapping chart




                             11
MySQL Join vs. Embed document




                                12
2 таблицы = одна коллекция
MySQL                             MongoDB

TABLE USER                        {
id INT (10) AUTO_INCREMENT            id : 1,
group_id INT (10) NOT NULL            username: user,
username VARCHAR (255) NOT NULL       password: somepass,
password VARCHAR (32) NOT NULL        group: {
                                         id : 1,
TABLE GROUP                              name: administrator
id INT (10) AUTO_INCREMENT            }
name VARCHAR (255) NOT NULL       }


                                                               13
Область применения




                     14
Производительность и масштабиремость



                       Memcached / Key-value



 MongoDB / NoSQL




                    MySQL / RDBMS



Функциональность          Целостность данных
                                               15
{
    "id": "1234567893",
    "at": 2,
    "tmax": 120,
    "imp": [
       {
          "id": "1",
          "video": {
             "mimes": [ "video/x-flv", "video/mp4"],
             "minduration": 5,
             "protocol": [ 1, 2, 3, 4],
             "w": 640,
             "h": 480,
             "maxextended": 30,
             "minbitrate": 300,
             "pos": 1,
          }
       }
    ],
    "site": {
       "id": "1345135123",
       "name": "Site ABCD",
       "domain": "siteabcd.com",
       "device": {
          "ip": "64.124.253.1",
          "ua": "Mozilla/5.0(MacOSX10.6)",
          "os": "OSX",
          "flashversion": "10.1",
          "js": 1
       },
       "user": {
          "uid": "456789876567897654678987656789",
          "buyeruid": "545678765467876567897654",
       }
    }
}
                                                       16
Multiple INSERT – возможно ли это?




                                     17
Multiple INSERT – возможно ли это?

• MySQL: из коробки – НЕТ,
  использовать “хуки” – ДА;




                                     18
Multiple INSERT – возможно ли это?

• Oracle – ДА, но цена?




                                     19
Multiple INSERT – возможно ли это?

• NoSQL/MongoDB – а зачем?
     > db.collection.insert({
         id : 1,
         username: user,
         password: somepass,
         group: {
            id : 1,
            name: administrator
         }
       });
                                     20
Ключи и индексы




                  21
Индексы: типы, опции и комманды
• Индексные ключи
  db.collection.ensureIndex(,‘group.name’:1-);
• Уникальные “unique” ключи
  db.collection.ensureIndex(,‘group.name’:1-,,unique:true});
• Опция “dropDups”;
• Разбросанные “sparse” ключи;
          MEMORY

           User country: BLR      User country: GBR      User country: USA

            Pointer to uid = 1     Pointer to uid = 2     Pointer to uid = 3

            Pointer to uid = 4     Pointer to uid = 5     Pointer to uid = 6

            Pointer to uid = 7     Pointer to uid = 8     Pointer to uid = 9

            Pointer to uid = 10    Pointer to uid = 11    Pointer to uid = 12




• db.collection.totalIndexSize();
                                                                                22
Оптимизация и масштабирование

Memory Mapped Files
прямое отображение
байлов в память
“сквозь” буфер обмена;




                                 23
Оптимизация и масштабирование
• Capped collections /
  Round-robin Database:

                  При заполнении
                  всего отведенного
                  места, записи
                  удаляются по
                  принципу FIFO
                                  24
Оптимизация и масштабирование

• Mater / Slave replication;
• Replica set;




                                 25
Оптимизация и масштабирование
• Sharding (sparse):
Shard servers
 Shard key              Shard key             Shard key
 “country: BLR”         “country: GBR”        “country: USA”

  Pointer to uid = 1    Pointer to uid = 2    Pointer to uid = 3

  Pointer to uid = 4    Pointer to uid = 5    Pointer to uid = 6

  Pointer to uid = 7    Pointer to uid = 8    Pointer to uid = 9

  Pointer to uid = 10   Pointer to uid = 11   Pointer to uid = 12


                                                                    26
Тонкости и нюансы




                    27
1. Все возвращаемые объекты в PHP по умолчанию
   являются ассоциативными массивами;




                                                 28
2. Индексы должны помещаться в память
   db.collection.totalIndexSize();
3. Чем больше объект, тем ниже скорость
   записи (экпоненциально)
   db.collection.batchInsert(*,…-, ,…-,..+);

       1’000 записей
     x
     =
       1Kb документ
       1Mb пакет
                                               29
4. Чем больше подключений, тем больше
   памяти расходуется (линейно);
5. Очень медленно работает REMOVE.
   После каждого атомарного удаления
   перестраивается индекс?
   db.collection.dropIndexes();
   db.collection.remove({id:{$lte:100}});
   db.collection.ensureIndex({id:1});
   Используйте DROP;
   db.collection.drop();
6. Для обновления используйте Safe Mode.
                                            30
Вывод
• MongoDB – быстрая и легко
  масштабируемая база данных;
• Понятный синтаксис
  (JSON/JavaScript);
• Адаптирована для
  высоконагруженных систем;
• Избыточна, без “foreign keys”.
                                   31
Спасибо за внимание.
Вопросы?




                       32

More Related Content

What's hot (20)

PDF
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
Ontico
 
PPTX
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Ontico
 
PPTX
Анализируем данные с Clickhouse
Александр Сигачев
 
PPTX
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
HOWWEDOIT
 
PDF
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
Ontico
 
PPT
Алексей Чумаков. Apache Cassandra на реальном проекте
Volha Banadyseva
 
PPTX
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Ontico
 
PDF
Обзор перспективных баз данных для highload / Юрий Насретдинов
Ontico
 
PDF
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
Ontico
 
PPTX
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Ontico
 
PPTX
Введение в Apache Cassandra
Alexander Tivelkov
 
PPTX
Cassandra: быстрая запись данных в высоконагруженных системах
Alexander Mezhov
 
PPTX
Mysql vs postgresql
Daniel Podolsky
 
PPTX
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
Technopark
 
PPTX
Поиск наизнанку
Nikolay Sivko
 
PDF
Алексей Захаров "Архитектура Яндекс.Фоток"
Yandex
 
PDF
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Ontico
 
PDF
Опыт использования Spark, Основано на реальных событиях
Vasil Remeniuk
 
PDF
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
Mikhail Tabunov
 
PDF
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
Nikolay Samokhvalov
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
Ontico
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Ontico
 
Анализируем данные с Clickhouse
Александр Сигачев
 
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
HOWWEDOIT
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
Ontico
 
Алексей Чумаков. Apache Cassandra на реальном проекте
Volha Banadyseva
 
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Ontico
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Ontico
 
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
Ontico
 
Промышленное ускорение сайтов / Николай Мациевский (Айри.рф)
Ontico
 
Введение в Apache Cassandra
Alexander Tivelkov
 
Cassandra: быстрая запись данных в высоконагруженных системах
Alexander Mezhov
 
Mysql vs postgresql
Daniel Podolsky
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
Technopark
 
Поиск наизнанку
Nikolay Sivko
 
Алексей Захаров "Архитектура Яндекс.Фоток"
Yandex
 
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Ontico
 
Опыт использования Spark, Основано на реальных событиях
Vasil Remeniuk
 
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
Mikhail Tabunov
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
Nikolay Samokhvalov
 

Viewers also liked (20)

PPTX
Преимущества NoSQL баз данных на примере MongoDB
UNETA
 
PPTX
Документо-ориентированные базы даннах
racoons
 
PPT
MongoDB Pros and Cons
johnrjenson
 
PPT
Boeing 747-8F AirBridge Cargo
Artem Katranzhi
 
PDF
Intro to MongoDB and datamodeling
rogerbodamer
 
KEY
Building your first application w/mongoDB MongoSV2011
Steven Francia
 
PDF
The Fine Art of Schema Design in MongoDB: Dos and Don'ts
Matias Cascallares
 
PPTX
Believe in your call centre
Plantronics Europe and Africa
 
PDF
MongoDB and Schema Design
Matias Cascallares
 
PDF
Java BigData Full Stack Development (version 2.0)
Alexey Zinoviev
 
KEY
MongoDB Aggregation Framework
Tyler Brock
 
PDF
MongoDB Performance Tuning
MongoDB
 
KEY
Strengths and Weaknesses of MongoDB
lehresman
 
PDF
Facetz DMP English 2014
Kirill Chistov
 
PPTX
Agg framework selectgroup feb2015 v2
MongoDB
 
PDF
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Ontico
 
PDF
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
Ontico
 
PDF
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
Ontico
 
PDF
"Пути развития Java разработчика" Дмитрий Соколов
Fwdays
 
PDF
Webinar: 10-Step Guide to Creating a Single View of your Business
MongoDB
 
Преимущества NoSQL баз данных на примере MongoDB
UNETA
 
Документо-ориентированные базы даннах
racoons
 
MongoDB Pros and Cons
johnrjenson
 
Boeing 747-8F AirBridge Cargo
Artem Katranzhi
 
Intro to MongoDB and datamodeling
rogerbodamer
 
Building your first application w/mongoDB MongoSV2011
Steven Francia
 
The Fine Art of Schema Design in MongoDB: Dos and Don'ts
Matias Cascallares
 
Believe in your call centre
Plantronics Europe and Africa
 
MongoDB and Schema Design
Matias Cascallares
 
Java BigData Full Stack Development (version 2.0)
Alexey Zinoviev
 
MongoDB Aggregation Framework
Tyler Brock
 
MongoDB Performance Tuning
MongoDB
 
Strengths and Weaknesses of MongoDB
lehresman
 
Facetz DMP English 2014
Kirill Chistov
 
Agg framework selectgroup feb2015 v2
MongoDB
 
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Ontico
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
Ontico
 
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
Ontico
 
"Пути развития Java разработчика" Дмитрий Соколов
Fwdays
 
Webinar: 10-Step Guide to Creating a Single View of your Business
MongoDB
 
Ad

Similar to MongoDB. Области применения, преимущества и узкие места, тонкости использования в высоконагруженных системах (20)

PDF
MongoDB@addconf
Sergei Tulentsev
 
PDF
Nosql and Mongodb
Eduard Antsupov
 
PDF
Базы данных. MongoDB
Vadim Tsesko
 
PPT
Introduction to MongoDB
Iurii Ogiienko
 
PPTX
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
Ontico
 
PPTX
Sphinx + MongoDB: работаем вместе.
MageCloud
 
PDF
Моделирование для NoSQL БД
Andrew Sovtsov
 
PPTX
DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)
it-people
 
PDF
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Dev_Party
 
PPTX
Cтрах и ненависть в MongoDB
Dmitry Viskov
 
PDF
NoSQL pain
Ivan Grishaev
 
PPT
MongoDB. Фокус на тестирование
Uladzimir Kryvenka
 
PPTX
Основы MongoDB + NodeJS
Alexander Konovalov
 
ODP
Новое в Mongodb 2.4
Gleb Lebedev
 
PDF
Дмитрий Долгов
CodeFest
 
PDF
Сравнение систем СУБД
Sergey Ryabenko
 
PDF
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Yandex
 
PDF
ekbpy'2012 - Алексей Кирпичников - Я не люблю Mongo
it-people
 
PDF
Юрий Буянов «Архитектура Goozy»
e-Legion
 
PDF
YuryByyanov (e-legion) @ CodeCamp2011
CodeCamp
 
MongoDB@addconf
Sergei Tulentsev
 
Nosql and Mongodb
Eduard Antsupov
 
Базы данных. MongoDB
Vadim Tsesko
 
Introduction to MongoDB
Iurii Ogiienko
 
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
Ontico
 
Sphinx + MongoDB: работаем вместе.
MageCloud
 
Моделирование для NoSQL БД
Andrew Sovtsov
 
DUMP-2012 - Базы данных - "MongoDB" Тимофей Миронов (Timeliner)
it-people
 
Денис Противенский, Percona — Percona Server for MongoDB: обзор возможностей
Dev_Party
 
Cтрах и ненависть в MongoDB
Dmitry Viskov
 
NoSQL pain
Ivan Grishaev
 
MongoDB. Фокус на тестирование
Uladzimir Kryvenka
 
Основы MongoDB + NodeJS
Alexander Konovalov
 
Новое в Mongodb 2.4
Gleb Lebedev
 
Дмитрий Долгов
CodeFest
 
Сравнение систем СУБД
Sergey Ryabenko
 
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Yandex
 
ekbpy'2012 - Алексей Кирпичников - Я не люблю Mongo
it-people
 
Юрий Буянов «Архитектура Goozy»
e-Legion
 
YuryByyanov (e-legion) @ CodeCamp2011
CodeCamp
 
Ad

More from phpdevby (10)

PPT
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
phpdevby
 
PPT
Использование AMQP в основе архитектуры бэкенда для мобильного приложения
phpdevby
 
PPTX
Современная разработка сайтов на CMF Drupal.
phpdevby
 
PPTX
Php архитектор - кто он?
phpdevby
 
PPT
Как удержать проект от анархии с помощью Git
phpdevby
 
PPT
Как удержать проект от анархии с помощью Git
phpdevby
 
PPT
Sphinx в реальных проектах: шишки и плюшки
phpdevby
 
ODP
Как удержать проект от анархии с помощью Git.
phpdevby
 
PPTX
PHP 5.4: Что нового?
phpdevby
 
PDF
Сайт на Zend Framework в составе промышленной системы
phpdevby
 
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
phpdevby
 
Использование AMQP в основе архитектуры бэкенда для мобильного приложения
phpdevby
 
Современная разработка сайтов на CMF Drupal.
phpdevby
 
Php архитектор - кто он?
phpdevby
 
Как удержать проект от анархии с помощью Git
phpdevby
 
Как удержать проект от анархии с помощью Git
phpdevby
 
Sphinx в реальных проектах: шишки и плюшки
phpdevby
 
Как удержать проект от анархии с помощью Git.
phpdevby
 
PHP 5.4: Что нового?
phpdevby
 
Сайт на Zend Framework в составе промышленной системы
phpdevby
 

MongoDB. Области применения, преимущества и узкие места, тонкости использования в высоконагруженных системах

  • 1. MongoDB Области применения, преимущества и узкие места, тонкости использования в высоконагруженных системах. Александр Чайка <[email protected]>, 06/2012 1
  • 2. Что такое NoSQL? Основная цель подхода — расширить возможности базы данных там, где SQL недостаточно гибок… 2
  • 3. В основе идей NoSQL лежит следующее: 1. Нереляционная модель данных; RDBMS NoSQL 3
  • 4. 2. Открытый исходный код; 3. Хорошая горизонтальная масштабируемость “из коробки”; MySQL Community MongoDB 4 nodes 1’000 nodes 4
  • 5. Установка Windows – качаем и ставим: > mongod --logpath /var/log --logappend --dbpath /var/data --install Ubuntu/Linux – ставим в ручную: https://github.com/mongodb/mongo.git apt-get install mongodb 5
  • 6. Проблемы репозиториев MongoDB database versions • Ubuntu 10.04 LTS (AWS default) - 1.2.2 • Mongodb.org – 2.0.5 MongoDB PHP driver versions • PEAR channel – 1.2.1 • GITHub official – 1.2.5 6
  • 7. Динамические базы и коллекции 1. Не надо знать, существует ли база; 2. Не надо знать структуру базы; 3. Не надо знать имя коллекции (таблицы); 4. У каждого документа (строки) может быть своя структура. 7
  • 8. Динамические базы и коллекции $mongo = new Mongo; $mongo->database->collection->insert(array( “id” => 1, “name” => “user”, “pass” => “pass” )); $mongo->database->collection->insert(array( “id” => 1, “action” => “control”, “desc” => “description” )); 8
  • 9. Динамические базы и коллекции $mongo->database->collection->find(array(“id”:1)); array( “id” => 1, “name” => “user”, “pass” => “pass” ); array( “id” => 1, “action” => “control”, “desc” => “description” ); 9
  • 10. JSON-style and JavaScript • Весь синтаксис запросов построен на основе JSON-объектов: > use database > db.collection .find({ id: {$ne: 1}}, { name: 1}) .sort(, ‘group.id’:-1, id:-1}) .limit(10); • Для внутреннего хранения используется BSON – бинарное представление JSON. 10
  • 11. SQL to Mongo mapping chart 11
  • 12. MySQL Join vs. Embed document 12
  • 13. 2 таблицы = одна коллекция MySQL MongoDB TABLE USER { id INT (10) AUTO_INCREMENT id : 1, group_id INT (10) NOT NULL username: user, username VARCHAR (255) NOT NULL password: somepass, password VARCHAR (32) NOT NULL group: { id : 1, TABLE GROUP name: administrator id INT (10) AUTO_INCREMENT } name VARCHAR (255) NOT NULL } 13
  • 15. Производительность и масштабиремость Memcached / Key-value MongoDB / NoSQL MySQL / RDBMS Функциональность Целостность данных 15
  • 16. { "id": "1234567893", "at": 2, "tmax": 120, "imp": [ { "id": "1", "video": { "mimes": [ "video/x-flv", "video/mp4"], "minduration": 5, "protocol": [ 1, 2, 3, 4], "w": 640, "h": 480, "maxextended": 30, "minbitrate": 300, "pos": 1, } } ], "site": { "id": "1345135123", "name": "Site ABCD", "domain": "siteabcd.com", "device": { "ip": "64.124.253.1", "ua": "Mozilla/5.0(MacOSX10.6)", "os": "OSX", "flashversion": "10.1", "js": 1 }, "user": { "uid": "456789876567897654678987656789", "buyeruid": "545678765467876567897654", } } } 16
  • 17. Multiple INSERT – возможно ли это? 17
  • 18. Multiple INSERT – возможно ли это? • MySQL: из коробки – НЕТ, использовать “хуки” – ДА; 18
  • 19. Multiple INSERT – возможно ли это? • Oracle – ДА, но цена? 19
  • 20. Multiple INSERT – возможно ли это? • NoSQL/MongoDB – а зачем? > db.collection.insert({ id : 1, username: user, password: somepass, group: { id : 1, name: administrator } }); 20
  • 22. Индексы: типы, опции и комманды • Индексные ключи db.collection.ensureIndex(,‘group.name’:1-); • Уникальные “unique” ключи db.collection.ensureIndex(,‘group.name’:1-,,unique:true}); • Опция “dropDups”; • Разбросанные “sparse” ключи; MEMORY User country: BLR User country: GBR User country: USA Pointer to uid = 1 Pointer to uid = 2 Pointer to uid = 3 Pointer to uid = 4 Pointer to uid = 5 Pointer to uid = 6 Pointer to uid = 7 Pointer to uid = 8 Pointer to uid = 9 Pointer to uid = 10 Pointer to uid = 11 Pointer to uid = 12 • db.collection.totalIndexSize(); 22
  • 23. Оптимизация и масштабирование Memory Mapped Files прямое отображение байлов в память “сквозь” буфер обмена; 23
  • 24. Оптимизация и масштабирование • Capped collections / Round-robin Database: При заполнении всего отведенного места, записи удаляются по принципу FIFO 24
  • 25. Оптимизация и масштабирование • Mater / Slave replication; • Replica set; 25
  • 26. Оптимизация и масштабирование • Sharding (sparse): Shard servers Shard key Shard key Shard key “country: BLR” “country: GBR” “country: USA” Pointer to uid = 1 Pointer to uid = 2 Pointer to uid = 3 Pointer to uid = 4 Pointer to uid = 5 Pointer to uid = 6 Pointer to uid = 7 Pointer to uid = 8 Pointer to uid = 9 Pointer to uid = 10 Pointer to uid = 11 Pointer to uid = 12 26
  • 28. 1. Все возвращаемые объекты в PHP по умолчанию являются ассоциативными массивами; 28
  • 29. 2. Индексы должны помещаться в память db.collection.totalIndexSize(); 3. Чем больше объект, тем ниже скорость записи (экпоненциально) db.collection.batchInsert(*,…-, ,…-,..+); 1’000 записей x = 1Kb документ 1Mb пакет 29
  • 30. 4. Чем больше подключений, тем больше памяти расходуется (линейно); 5. Очень медленно работает REMOVE. После каждого атомарного удаления перестраивается индекс? db.collection.dropIndexes(); db.collection.remove({id:{$lte:100}}); db.collection.ensureIndex({id:1}); Используйте DROP; db.collection.drop(); 6. Для обновления используйте Safe Mode. 30
  • 31. Вывод • MongoDB – быстрая и легко масштабируемая база данных; • Понятный синтаксис (JSON/JavaScript); • Адаптирована для высоконагруженных систем; • Избыточна, без “foreign keys”. 31