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

PHP i MongoDB iz prve ruke

DaFED
August 08, 2016

PHP i MongoDB iz prve ruke

DaFED#46
Speaker: Nebojša Kamber
Iskustva iz trogodišnjeg rada sa MongoDB bazom na sajtovima Infostud grupe. Akcenat na PHP drajveru. Prednosti, mane i razlike u novim verzijama.

DaFED

August 08, 2016
Tweet

More Decks by DaFED

Other Decks in Programming

Transcript

  1. PHP & MongoDB
    Iz prve ruke

    View full-size slide

  2. O predavaču
    Nebojša Kamber
    @nebkam

    View full-size slide

  3. ✘ Senior PHP programer, u Infostudu 5 godina
    ✘ Sertifikovan za rad sa MongoDB od 2013.
    ✘ Radio sa PHP i NodeJS drajverima prve i druge generacije

    View full-size slide

  4. Nastanak MongoDB
    ✘ Proizvod kompanije 10gen Inc, rezultat iskustva iz DoubleClick
    ✘ Nastao nakon 12 custom DB rešenja

    View full-size slide

  5. MongoDB verzije
    ✘ Open source od 2007.
    ✘ Komercijalna verzija od 2010.
    ✘ MongoDB Atlas od ove godine

    View full-size slide

  6. Poznato okruženje
    JSON
    Dokumenti i upiti
    CLI
    Primarni za
    administraciju baze
    Javascript
    SpiderMonkey engine

    View full-size slide

  7. Name Version Created
    MySQL 5.7 1995-05-23
    SQLite 3.13 2000-08-01
    Dokumentno-orijentisan data model
    {
    name: "MongoDB",
    author: {
    name: "10gen Inc"
    },
    version: [3, 2, 0]
    }

    View full-size slide

  8. Hosting baze
    Self-hosted
    Više kontrole
    Komplikovano
    Cloud
    Skalabilno
    Potrebno konfigurisati
    DBaaS
    Konfigurisano
    Monitoring

    View full-size slide

  9. PHP Drajver (2015)
    C ekstenzija
    Composer
    biblioteka

    View full-size slide

  10. Povezivanje
    $client = new MongoDB\Client("mongodb://localhost:27017")
    $collection = $client->selectCollection($dbName, "events");
    Kolekcija ≈ Tabela

    View full-size slide

  11. Dodavanje dokumenata
    $event = new Event(...);
    try {
    $collection->insertOne($event);
    } catch (Exception $exc) {}
    Dokument ≈ Red

    View full-size slide

  12. Pretraga dokumenata
    $event = $collection->findOne(["title" => "DaFED"]);
    $events = $collection
    ->find(["city" => "Novi Sad"])
    ->toArray();

    View full-size slide

  13. Automatska serijalizacija
    PHP
    class Event {
    public $title = "DaFED";
    public $when = new \DateTime();
    public $city = "Novi Sad";
    }
    MongoDB
    {
    __pclass: BinData(...)
    title: "DaFED",
    when: UTCDateTime("2016-08-03"),
    city: "Novi Sad"
    }

    View full-size slide

  14. Tips & Tricks
    ✘ Za razliku od PHP i MySQL, koristi striktne tipove (2 != "2")
    ✘ UTF-8 je jedini encoding

    View full-size slide

  15. Kada koristiti MongoDB?
    ✘ Raznorodni podaci
    ✘ Prototyping
    ✘ Obrada eksternih podataka
    ✘ Logovanje

    View full-size slide

  16. Kada ne koristiti?
    ✘ Podaci sa striktnom šemom
    ✘ Kada je akcenat na relacijama između podataka
    ✘ Puno agregiranja

    View full-size slide

  17. Hvala na pažnji
    Pitanja?
    @nebkam

    View full-size slide