Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MongoDb в современных веб-сервисах

fwdays
November 14, 2011

MongoDb в современных веб-сервисах

* NoSql, общее описание концепций
* Отличия от реляционных БД, храним объекты
* MongoDb + PHP (Zend Framework)
* MongoDb и Sphinx
* Оптимизация работы MongoDb
* Шардинг, репликация
* Производительность MongoDb

fwdays

November 14, 2011
Tweet

More Decks by fwdays

Other Decks in Programming

Transcript

  1. MongoDb + PHP ?  Установка pecl install mongo 

    Документация http://php.net/mongo  Код https://github.com/mongodb/mongo-php-driver
  2. MongoDb + PHP (native driver) // соединяемся $m = new

    Mongo(); // выбираем БД $db = $m->myDb; // получаем коллекцию $collection = $db->myCollection; // добавляем запись $obj = array( "title" => "One", "description" => "Number one" ); $collection->insert($obj); // выбираем все $cursor = $collection->find(); // смотрим что выбрали foreach ($cursor as $obj) { echo $obj["title"] . "\n"; }
  3. MongoDb + PHP + Zend Framework  Doctrine Object Document

    Mapper http://www.doctrine-project.org/docs/mongodb_odm/1.0/en/  Shanty Mongo https://github.com/coen-hyde/Shanty-Mongo
  4. Shanty Mongo  Простота  Гибкость  Вложенные объекты 

    DocumentSets  Наследование моделей  Хуки  Batch Inserting
  5. Shanty Mongo class Product extends Shanty_Mongo_Document { protected static $_db

    = 'shop'; protected static $_collection = 'product'; protected static $_requirements = array( 'name' => 'Required', 'price' => 'Required', ); }
  6. Shanty Mongo // создаем новый продукт $product = new Product();

    $product->name = 'Megabibus'; $product->count = 0; $product->params = array( 'size' => 'XL', 'color' => 'red', ); $product->save(); // получаем продукт по id $product = Product::find($id); // инкремент $product->inc('count', 1); // выборка $products = Product::all(array('params.size' => 'XL'));
  7. Храним объекты { name : "Product name", descr : "Long

    text", price : 3000, params: { size : "XL", color: "red" } }
  8. Храним объекты { name : "Product name", descr : "Long

    text", price : 3000, params: { size : "XL", color: "red" }, comments : [ {name : "Alex", text : "Good"}, {name : "Pavel", text : "Bad"} . . . ] }
  9. Шардинг  Автошардинг mongos + config server + mongod 

    Горячее добавление шард  Произвольный ключ
  10. Оптимизация  Индексы - unique - sparse  Количество БД

     Названия свойств  Журналирование
  11. ?