PHP → Разработка масштабируемых PHP-приложений с использованием MongoDB
Содержание
- Что такое NoSQL?
- Что такое документо-ориентированная база данных?
- MongoDB
- Установка
- Основы использования
- Поддержка индексов
- Реальные приложения
- Хранение файлов в MongoDB
- Map-Reduce
- Авто-партиционирование (sharding)
- Заключение и планы на будущее
Что такое NoSQL?
NoSQL — это база данных, которая, в отличие от реляционных БД, не предоставляет SQL-интерфейса для управления данными. Обычно данные в NoSQL-бд организованы другим образом.NoSQL базы данных делятся на три категории: column-oriented, пара ключ-значение и документо-ориентированные. Эта статья про третий тип БД — документо-ориентированные, так как они являются лучшим решением для большинства веб-сайтов.
Реляционные базы данных плохо масштабируются, когда они разделены по разным частям кластера. Разделение данных не так то просто осуществить, когда приложение использует JOIN-запросы и транзакции.
NoSQL базы данных не являются чем-то новым. Вообще говоря, они были базами, основанными на принципе пар ключ-значение до того как реляционные БД приобрели популярность.
MySQL → «Странное» поведение MySQL
Писал как-то я PHP-скрипт, и надо было мне вычесть из одного поля БД другое, и результат записать в третье поле, чтобы потом производить по нему сортировку. Но выяснилось, что при выполнении такого запроса:
UPDATE `items` SET `s_diff`=`s_in`-`s_out`иногда получаются очень странные результаты. Например, если s_in = 10, а s_out = 20, то вместо ожидаемого -10 в поле s_diff будет записано число 2147483647 (Примечание: поля s_in и s_out имеют тип UNSIGNED INT).