Your SlideShare is downloading. ×
0
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
MongoDB - Ekino PHP
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

MongoDB - Ekino PHP

5,910

Published on

Overview mongodb in application with PHP. …

Overview mongodb in application with PHP.

Sub-annexe:
http://www.ekino.com/
http://www.florentdenis.net/
https://github.com/pokap/pool-dbm

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
5,910
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Qu'est-ce que le no-sql ?
    Tout ce qui n'est pas SQL
    Le no-sql a toujours existé
  • Clé-valeur
    Orienté columns
    Orienté document
  • Pas de transaction
    Terminologie :
    Table = Collection,
    Ligne = Document,
    Index = Index
    Collections de collections
    Mongo: ACID ? ~Atomic (update)~, cohérent, isolation, durable
  • Pas de schéma
    Donnée hétérogènes (éviter M coll)
    Atomicité par document
    Terminologie :
    Jointure = Données embarquées
  • Obligatoire
    Clé 12 bits
    4 – timestamp
    3 – id machine
    2 – id process
    3 – compteur
    Non brut visible en hexa 24 caractères
  • Donne une idée de l'implémentation de mongo dans PHP
  • Pas besoin de createdAt avec l'id
  • Upsert : insert if unexists
    Multiple : all for request
    J : false : force sync with disk, else journal
  • Groupe de process mongo maintiens les mêmes données (master/slave)
  • Process stockage de donnée entre plusieurs machine.
    Si une machine ne tiens pas la charge (I/O)
    Haute-disponibilité avec la réplication
  • Qu'est-ce que le no-sql ?
    Tout ce qui n'est pas SQL
    Le no-sql a toujours existé
  • Compatible : Mac, windows et Linux
  • - ne pas l'utiliser juste pour le plaisir
    - pas adapté aux environnements transactionnels critiques
  • Transcript

    • 1. MongoDB – Partie 1
    • 2. What the no-sql ?
    • 3. Introduction
    • 4. Introduction PHPCR
    • 5. MongoDB
    • 6. MongoDB – Infos MongoDB ("humongous") 10gen 2007 – start project 2009 – open source C++ Licence : GNU AGPL v3.0 (drivers: Apache licence) Easy, scalability and Big DATA Geolocalisation
    • 7. Data MongoDB MySQL SGDB > databases > collections > documents SGDB > databases > tables > lignes No structure Dynamic schema Structure Static schema
    • 8. Data BSON = Binary JSON Lightweight, traversable and UTF-8 { FirstName: Address: Children: {Name: {Name: {Name: {Name: ] } "Jonathan", "15 Wanamassa Point Road", [ "Michael", Age: 10}, "Jennifer", Age: 8}, "Samantha", Age: 5}, "Elena", Age: 2}
    • 9. Key _id: ObjectId 12 bits : - 4 bits – Timestamp (Unix) - 3 bits – ID machine - 2 bits – ID process - 3 bits – Count } Similar UUID Example : 52af1a617e0b18d9448b4567 (hexa) DBRefs - collection - _id - db (optional)
    • 10. Map reduce Map : select process per document Reduce : combining data function mapFunction() { emit(this.user_id, this.price); } function reduceFunction(keyUserId, valuePrice) { return Array.sum(valuePrice); } db.runCommand({ mapReduce: 'my_collection', map: mapFunction, Reduce: reduceFunction, out: 'map_reduce_results_collection', query: { old_date: { $gt: new Date('17/08/2005') } } })
    • 11. V8 JavaScript engine ECMAscript V8 JavaScript Engine standardized JSON strict mode
    • 12. Installation (Debian) & shell
    • 13. Installation $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 $ echo 'deb http://downloadsdistro.mongodb.org/repo/debian-sysvinit dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list $ sudo apt-get update $ sudo apt-get install mongodb-10gen $ sudo /etc/init.d/mongodb {status|start|stop|restart| reload|force-reload}
    • 14. Installation $ mongo MongoDB shell version 2.4.9 connection to : test > show databases default 0.203125GB test 0.203125GB local 0.078125GB reseau 0.203125GB > use reseau switched to db reseau > show collections network system.indexes traffic > db.traffic.count() 8
    • 15. MongoDB – Drivers Client libraries ● ● ● ● ● ● ● ● ● ● ● ● ● C C++ C# Go Erlang Java JavaScript Node.js Perl PHP Python Ruby Scala Community Supported Drivers ● ● ● ● ● ● ● ● ● ● ● ● ● ● ActionScript3 ColdFusion D Dart Delphi Groovy Lips Lua Objective C Ocaml Opa PowerShell R Smalltalk http://docs.mongodb.org/ecosystem/drivers/
    • 16. PHP - installation $ $ $ $ sudo sudo sudo sudo apt-get update apt-get install php5-dev pecl install mongo php5enmod mongo
    • 17. Client PHP
    • 18. PHP – classes & types ● MongoClient ● MongoId ● MongoDB ● MongoCode ● MongoCollection ● MongoDate ● MongoCursor ● MongoRegex ● MongoBinData ● MongoInt32 ● MongoInt64 ● MongoDBRef ● MongoGridFS ● MongoMinKey ● MongoGridFSFile ● MongoMaxKey ● MongoGridFSCursor ● MongoTimestamp
    • 19. PHP – examples Create <?php $someDoc = [ 'author' 'content' 'nbComment' 'dateCreated' ]; => => => => 'ekino', 'mongod', 5, new MongoDate() $client = new MongoClient("mongodb://localhost/"); $database = $client->demoDb; $collection = $database->demoCollection; $collection->insert($someDoc); echo (string) $someDoc['_id']; // 52af1a617e0b18d9448b4567
    • 20. PHP – examples $ mongo MongoDB shell version: 2.4.8 connecting to: test > show databases demoDb 0.203125GB local 0.078125GB > use demoDb switched to db demoDb > db.demoCollection.find(); { "_id" : ObjectId("52af1a617e0b18d9448b4567"), "author" : "ekino", "content" : "mongod", "nbComment" : 5, "dateCreated" : ISODate("2013-12-16T15:21:05.212Z") } > exit Bye $ php -r 'var_dump(date("Y-m-d H:i:s", hexdec("52af1a61")));' string(19) "2013-12-16 16:21:05"
    • 21. Installation $ ls -lGh /var/lib/mongodb drwxr-xr-x 2 mongodb 4,0K déc. -rw------- 1 mongodb 64M déc. -rw------- 1 mongodb 16M déc. -rwxr-xr-x 1 mongodb 5 déc. drwxr-xr-x 2 mongodb 4,0K déc. 16 16 16 16 16 16:21 10:10 10:10 10:10 16:21 journal local.0 local.ns mongod.lock _tmp
    • 22. PHP – examples $ ls -lGh /var/lib/mongodb -rw------- 1 mongodb 64M déc. -rw------- 1 mongodb 128M déc. -rw------- 1 mongodb 16M déc. drwxr-xr-x 2 mongodb 4,0K déc. -rw------- 1 mongodb 64M déc. -rw------- 1 mongodb 16M déc. -rwxr-xr-x 1 mongodb 5 déc. drwxr-xr-x 2 mongodb 4,0K déc. 16 16 16 16 16 16 16 16 16:21 16:21 16:21 16:21 10:10 10:10 10:10 16:21 demoDb.0 demoDb.1 demoDb.ns journal local.0 local.ns mongod.lock _tmp
    • 23. PHP – examples Retrieve <?php $client = new MongoClient("mongodb://localhost/"); $database = $client->demoDb; $collection = $database->demoCollection; $collection->findOne(['nbComment' => ['$gt' => 3]]; $cursor = $collection->find(); $cursor->count(); // number of documents $cursor = $cursor->sort(['author' => 1]); $cursor = $cursor->limit(10); foreach ($cursor as $demo) { // iterator ... }
    • 24. PHP – examples Update <?php $client = new MongoClient("mongodb://localhost/"); $database = $client->demoDb; $collection = $database->demoCollection; $query = ["author" => "ekino"]; $newdata = [ '$set' => [ "keywords" => "excellent ta_vu" ] ]; $options = [ 'upsert' => true, 'multiple' => false, 'j' => false // or fsync ]; $collection->update($query, $newdata, $options);
    • 25. PHP – examples Delete <?php $client = new MongoClient("mongodb://localhost/"); $database = $client->demoDb; $collection = $database->demoCollection; $options = ["justOne" => true, "j" => false]; $collection->remove(['author' => 'ekino'], $options);
    • 26. Administration
    • 27. Package components ● mongod : primary daemon process for the MongoDB system ● mongos : routing service for MongoDB shard ● mongo : interactive JavaScript shell interface ● mongodump : creating a binary export ● mongorestore : writes data from a binary database dump ● ● mongostat : provides a quick overview of the status similar vmstat mongoperf : check disk I/O performance independently of MongoDB
    • 28. Replication
    • 29. Sharding
    • 30. Tools
    • 31. Interface - metric MMS - 10gen
    • 32. Interface - GUI Robomongo https://github.com/paralect/robomongo
    • 33. Conclusion
    • 34. Intégration
    • 35. Intégration SQL et/ou NoSQL ? Source : http://www.commitstrip.com/en/2012/04/10/what-do-you-mean-its-oversized/
    • 36. Annexes Pool-DBM : PHP Library to create relationships between DBMS. Work with Doctrine Library. https://github.com/pokap/pool-dbm Source images : http://askdba.org/weblog/images/technical/nosql http://www.generation-trafic.fr/wp-content/uploads/2012/07/geolocalisation.jpg http://www.kchodorow.com/blog/wp-content/uploads/2010/03/sharding.png http://www.commitstrip.com/en/2012/04/10/what-do-you-mean-its-oversized/ http://www.pixelboy.fr/wp-content/uploads/2011/11/Firefox1.png http://robomongo.org/ http://nyccto.files.wordpress.com/2011/03/mysql_to_mongodb.gif http://www.elektronique.fr/cours/porte-logique/images/porte-logique-et.png

    ×