mongodb - ekino php
TRANSCRIPT
MongoDB Partie 1
What the no-sql?
Introduction
Qu'est-ce que le no-sql?Tout ce qui n'est pas SQLLe no-sql a toujours exist
Introduction
PHPCRCl-valeurOrient columnsOrient document
MongoDB
MongoDB InfosMongoDB ("humongous")10gen2007 start project2009 open sourceC++Licence: GNU AGPL v3.0 (drivers: Apache licence)Easy, scalability and Big DATAGeolocalisation
Data
MongoDB MySQL
SGDB > databases > collections > documents
SGDB > databases > tables > lignes
No structureDynamic schema
StructureStatic schema
Pas de transaction
Terminologie :Table = Collection,Ligne = Document,Index = Index
Collections de collections
Mongo: ACID? ~Atomic (update)~, cohrent, isolation, durable
Data{ FirstName: "Jonathan", Address: "15 Wanamassa Point Road", Children: [ {Name: "Michael", Age: 10}, {Name: "Jennifer", Age: 8}, {Name: "Samantha", Age: 5}, {Name: "Elena", Age: 2} ]}BSON = Binary JSON
Lightweight, traversable and UTF-8Pas de schmaDonne htrognes (viter M coll)
Atomicit par document
Terminologie :Jointure = Donnes embarques
Key_id: ObjectId
12 bits:- 4 bits Timestamp (Unix)- 3 bits ID machine- 2 bits ID process- 3 bits Count
Example: 52af1a617e0b18d9448b4567 (hexa)
DBRefs- collection- _id- db (optional)
}
Similar UUID
Obligatoire
Cl 12 bits4 timestamp3 id machine2 id process3 compteur
Non brut visible en hexa 24 caractres
Map reduceMap: select process per documentReduce: 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') } }})
V8 JavaScript engineV8 JavaScript engine
ECMAscript
V8 JavaScript Engine
standardized JSON
strict mode
Installation (Debian) & shell
Installation
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10$ echo 'deb http://downloads-distro.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}
Installation
$ mongoMongoDB shell version 2.4.9connection to: test> show databasesdefault 0.203125GBtest 0.203125GBlocal 0.078125GBreseau 0.203125GB> use reseauswitched to db reseau> show collectionsnetworksystem.indexestraffic> db.traffic.count()8
MongoDB DriversClient libraries
C
C++
C#
Go
Erlang
Java
JavaScript
Node.js
Perl
PHP
Python
Ruby
Scala
http://docs.mongodb.org/ecosystem/drivers/
Community Supported Drivers
ActionScript3
ColdFusion
D
Dart
Delphi
Groovy
Lips
Lua
Objective C
Ocaml
Opa
PowerShell
R
Smalltalk
PHP - installation
$ sudo apt-get update$ sudo apt-get install php5-dev$ sudo pecl install mongo$ sudo php5enmod mongo
Client PHP
PHP classes & typesMongoClient
MongoDB
MongoCollection
MongoCursor
MongoId
MongoCode
MongoDate
MongoRegex
MongoBinData
MongoInt32
MongoInt64
MongoDBRef
MongoMinKey
MongoMaxKey
MongoTimestamp
MongoGridFS
MongoGridFSFile
MongoGridFSCursor
Donne une ide de l'implmentation de mongo dans PHP
PHP examples