SlideShare une entreprise Scribd logo
Les bases NoSQL et Python Youenn Boussard
Les bases de données Avant 1960 : organisation classique sous forme de fichier
1960 : 1er base de donnée : militaire , hiérarchique, sous forme d'arbre
1970 : Théorie sur l'algèbre relationnelle de Codd
1980 : troisième génération des sgbd :  les bases de données orientées objets
Le développement Internet 1962 – Premier concept d'internet
1969 – RFC
1974 – Mise au point de la norme IP
1981 – 213 ordinateurs connectés
1989 – Naissance du World wide Web
2004 – Web 2.0, Facebook
2006 – twitter
186,7 millions de sites web
Web 2.0 et les limites des modèles relationnels Beaucoup de données Digg 3TB
Facebook 50TB
Ebay 2PB Beaucoup d'utilisateurs
Beaucoup de trafic
Et les bases relationnelles pour gérer tout cela ?
Le cas de  Partition verticale maître-esclave avec
Maître esclave Réplication Maître esclave Un unique maître
Un ou plusieurs esclave
Toute les écritures vont sur le maître, répliquer sur les esclaves
Les lectures sont réparties entre les différents maîtres et esclaves Cela implique Le maître est critique
Le maître est le point d'engorgement du système
Partition Horizontale Réparties sur plusieurs noeuds
Les jointures sont déportées au niveau de l'application
Cela implique On n'est plus relationnel
Le fonctionnel devient compliqué
La maintenance aussi !!
Et la disponibilité !! Des centaines de millions de  lignes Des millions de  lignes 14sec
Sytème distribué : Trois états C comme Consistence
A comme Availability (Disponibilité)
P comme Partition tolérance  Dr. Eric Brewer CAP THEOREM = On ne peut avoir que  2 états en simultanée dans un système distribué
ACID contre BASE Atomique
Cohérente
Isolée
Durable Basically Available
Soft state
Eventually consistent
Non relationnelle
Distribuée
Open source
Scalable horizontablement Une nouvelle Génération de base de donnée
 
 
CouchDB est Orienté document -> Pas de schéma, représentation des données telle quelle
Accessible via RESTful
Distribué, réplication incrémental, résolution de conflit bi directionnel
Donnée indexable et requetable suivant des vues
Ecrit en
Un document Un document est un objet contenant un ensemble de clés valeurs Une base de données couchdb est une collection à plat de ces documents
RESTFul API REST est basé sur le protocole HTTP Lecture : GET /somedatabase/some_doc_id
Ecriture / update : PUT
Créer : POST
Supprimer : DELETE
Robuste N'écrase pas une donnée « commité »
Si le serveur tombe, il faut juste redémarrer CouchDB -> pas de « repair »
On peut prendre des snapshots avec des simples cp
Plusieurs niveaux de durabilité :  Choix entre synchroniser à toutes les mises à jours ou à la demande
Vues Méthodes pour aggréger et requeter les documents de la base de donnée
Les vues sont définies par des documents spéciaux les « designs documents »
Les vues sont écrites en javascript.

Contenu connexe

PDF
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
強力なグラフィック機能を備えた組版処理システムTwightの開発
PDF
Cost-based Query Optimization in Apache Phoenix using Apache Calcite
PDF
Spark (v1.3) - Présentation (Français)
PDF
Cours JavaScript
PDF
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
PDF
How to Use JSON in MySQL Wrong
PDF
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
強力なグラフィック機能を備えた組版処理システムTwightの開発
Cost-based Query Optimization in Apache Phoenix using Apache Calcite
Spark (v1.3) - Présentation (Français)
Cours JavaScript
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
How to Use JSON in MySQL Wrong
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)

Tendances (20)

PDF
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
PPTX
やってはいけない空振りDelete
PPTX
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
PDF
Cache-Oblivious データ構造入門 @DSIRNLP#5
PPT
Les Contraintes | SQL Oracle
PPTX
Apache Spark Architecture
PPT
20090107 Postgre Sqlチューニング(Sql編)
PPTX
The Volcano/Cascades Optimizer
PPTX
re:Invent 2022 DAT326 Deep dive into Amazon Aurora and its innovations
PDF
Les BD NoSQL
PPTX
spark_intro_1208
PDF
Parquet - Data I/O - Philadelphia 2013
PDF
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
PDF
シンプルでシステマチックな Oracle Database, Exadata 性能分析
PDF
PostgreSQLコミュニティに飛び込もう
PPTX
The Impala Cookbook
PDF
Why you should care about data layout in the file system with Cheng Lian and ...
PDF
Wait! What’s going on inside my database?
PPT
DataGuard体験記
PDF
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
やってはいけない空振りDelete
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
Cache-Oblivious データ構造入門 @DSIRNLP#5
Les Contraintes | SQL Oracle
Apache Spark Architecture
20090107 Postgre Sqlチューニング(Sql編)
The Volcano/Cascades Optimizer
re:Invent 2022 DAT326 Deep dive into Amazon Aurora and its innovations
Les BD NoSQL
spark_intro_1208
Parquet - Data I/O - Philadelphia 2013
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
シンプルでシステマチックな Oracle Database, Exadata 性能分析
PostgreSQLコミュニティに飛び込もう
The Impala Cookbook
Why you should care about data layout in the file system with Cheng Lian and ...
Wait! What’s going on inside my database?
DataGuard体験記
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
Publicité

En vedette (20)

KEY
Python et les bases de données non sql
PPTX
Formation python
PDF
Cours python
PDF
Chap XIII : calcul scientifique avec python
PDF
Cours python avancé
PDF
Algorithmique_et_programmation_part2
PPTX
Python et son intégration avec Odoo
PDF
Les systèmes de base de donnée
PPTX
Python après 15 ans de JAVA
PDF
Introduction à Python - Achraf Kacimi El Hassani
PPTX
2 m72 groupe4_présentation
PPS
Photographies Historiques
PDF
Cypyth formation-programmation-objet-en-langage-python
PDF
OpenStack Havana, tour d'horizon
DOCX
La sabiduría
PDF
Solucion y Psicologia del Bienestar
PDF
4 annexe3 etudeoa_hypotheses_amenagement_2013-06-03_arret
PDF
Python debugger
PDF
Algorithmique_et_programmation_part3_V2
PDF
SeSQL : un moteur de recherche en Python et PostgreSQL
Python et les bases de données non sql
Formation python
Cours python
Chap XIII : calcul scientifique avec python
Cours python avancé
Algorithmique_et_programmation_part2
Python et son intégration avec Odoo
Les systèmes de base de donnée
Python après 15 ans de JAVA
Introduction à Python - Achraf Kacimi El Hassani
2 m72 groupe4_présentation
Photographies Historiques
Cypyth formation-programmation-objet-en-langage-python
OpenStack Havana, tour d'horizon
La sabiduría
Solucion y Psicologia del Bienestar
4 annexe3 etudeoa_hypotheses_amenagement_2013-06-03_arret
Python debugger
Algorithmique_et_programmation_part3_V2
SeSQL : un moteur de recherche en Python et PostgreSQL
Publicité

Similaire à Base NoSql et Python (20)

ODP
Coat::Persistent at FPW2009
PDF
SSL 2011 : Présentation de 2 bases noSQL
PDF
Adopte une BDD
PPT
Java Database Connectivity
PPT
Hibernate
PPTX
mix-it 2011
PPTX
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
PDF
Oxalide Academy : Workshop #3 Elastic Search
PDF
Oxalide Workshop #3 - Elasticearch, an overview
DOCX
Résumkbjnnbuhb.jhyhuhuhhhhhhhhhhhhhhhhhhhhhhhé.docx
PDF
Base de données graphe, Noe4j concepts et mise en oeuvre
PPT
Développement Web
PPT
Cartographie de l'information
PDF
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
PDF
Présentation langage de programmationHive.pdf
PPT
Linq et Entity framework
PPT
RDF en quelques slides
PPTX
Ado.net vs jpa
PPTX
ElasticSearch : Architecture et Développement
PDF
Spark SQL principes et fonctions
Coat::Persistent at FPW2009
SSL 2011 : Présentation de 2 bases noSQL
Adopte une BDD
Java Database Connectivity
Hibernate
mix-it 2011
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Oxalide Academy : Workshop #3 Elastic Search
Oxalide Workshop #3 - Elasticearch, an overview
Résumkbjnnbuhb.jhyhuhuhhhhhhhhhhhhhhhhhhhhhhhé.docx
Base de données graphe, Noe4j concepts et mise en oeuvre
Développement Web
Cartographie de l'information
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
Présentation langage de programmationHive.pdf
Linq et Entity framework
RDF en quelques slides
Ado.net vs jpa
ElasticSearch : Architecture et Développement
Spark SQL principes et fonctions

Base NoSql et Python

Notes de l'éditeur

  • #3: Les données sont apparues avec les programmes. L'exploitation des ces données est la raison d'être de l'informatique. Avec la gestion automatique des données, l'entreprise et les états peuvent évoluer et rivaliser avec leur concurrent à l'aide de nouveaux moyens. Base de donnée relationnelle : données dans de simple tables à deux dimentions -> Suffisant pour toutes les applications ? Milieu des années 80 : conviction que tout les problemes seront résolue par les bases de donnée avec leur structure logique et physique, indépendante des applications. Année 90 avenement des technologies objets : Des estimations montrent en effet que les développeurs de programmes OO utilisant des bases de données relationnelles passent entre 25 et 40 % de leur temps à écrire un code mappant les objets aux tables relationnelles.
  • #4: L’histoire de l’Internet remonte au développement des premiers réseaux de télécommunication. L’idée d’un réseau informatique, permettant aux utilisateurs de différents ordinateurs de communiquer, se développa par de nombreuses étapes successives. 1 Licklider présente l'ordinateur comme un outil de communication et de partage des ressources. C'est le concept de l'Internet. 2 Request for comment – mise en place des norme qui régiront internet 4 Dès les années 1980, les techniques que nous reconnaissons maintenant comme les fondements de l’Internet moderne commencèrent à se répandre autour du globe 5 - La tendance depuis 2004 est l'apparition d'applications web 2.0 pour lesquelles l'internaute joue un rôle participatif.
  • #5: Digg est un site Internet communautaire qui a pour but de faire voter les utilisateurs pour une page web intéressante et proposée par un utilisateur Facebook
  • #6: Lorsque l'on veux scaler une base de données,une première solution peut être le partitionnement : Vertical : une base pour les livres, une base pour les CDs, etc Horizontal : une base pour les livre de A-M et une pour les livres de N-Z, …
  • #8: On renonce à la normalisation des données Frais de gestion importante La scabilité a un coup qui devient important
  • #10: consistence -> tout les noeuds ont les meme données en meme temps disponible -> le systeme est toujours disponible tant qu'il y a un noeud tolérance à la partition -> le systeme continue à fonctionner malgré la perte de message
  • #11: Certaines données nous paraissent logiques d'être consistantes mais cela est souvent du à notre inertie d'esprit. Prenons le cas d'une valeur indiquant le stock d'un article. Si deux serveurs ont des valeurs non consistantes, il peut arriver qu'un serveur considère qu'il en reste un alors qu'un autre qui a était mis à jour, sait qu'il n'en reste plus. Lorsque vous faites un achat et si par malchance vous acheter un livre qui n'est plus en stock, le site marchand à deux possibilités : vous rembourser ou réapprovisionner le stock (je ne sais pas vous, mais cela m'est déjà arrivé de recevoir un mail en disant que le produit était épuisé,après l'avoir commandé) les sites ont fait leur choix ! Amazon a d'ailleurs constaté qu'un dixième de seconde de latence leur fait diminuer les ventes de 1%, et Google a remarqué qu'une demi seconde de latence fait chuter le trafic d'un cinquième.
  • #12: Nosql : not only sql schema-free, easy replication support, simple API, eventually consistent / BASE (not ACID)
  • #13: Les différents types de base de donnée : Relationnel -> ACID Key-value -> support get, put, delete sur leur cle Orientée colonne -> utilise des tables mais pas de joins, les données sont stockées par colonne opposé aux traditionnels données stocké en ligne Orientée document -> stocke des documents structurée en JSON ou en XML : facil de mapper avec des langages orientée objets CA : ont des difficultés avec les partitions et doivent répliquer leurs données (base de donnée) CP : ont des difficultés avec la disponibilités en gardant consistante leurs données sur l'ensemble des noeuds AP : eventuellement consitant avec la replication et les verifications.
  • #15: Elle est conçue avant tout pour les applications web Chaque document est composé de propriétés. Il n’y a aucune contrainte sur le nombre de propriétés d’un document, sur le type de ces propriétés... Le protocole permettant d’accéder à un serveur CouchDB est basé sur HTTP, avec une interface REST. Erlang est langage fonctionnel concurrent, temps réel et distribué basé sur le modèle d'acteur. Il possède des fonctionnalités de tolérance aux pannes et de mise à jour du code à chaud permettant le développement d'applications à haute disponibilité.
  • #16: Il y a trois clés qui sont imposées par CouchDB : ● _id : l’identifiant unique du document ; ● _rev : le numéro de révision du document, géré automatiquement par le moteur CouchDB ; ● _attachments : les éventuels fichiers attachés à ce document. Stockée sous la forme de texte json ( Javascript Standard Object Notation) sérialisation d'objet une chaîne de caractères doit être mise entre quotes : "ceci est un string". ● un objet (qui supporte des données de type "clé" => valeur") est représenté par des accolades : { "key1": "value1", "key2":"value2" }. ● une liste de valeurs (un tableau) est représenté par des crochets : [ "value1","value2"]. ● JSON supporte les booléens : true et false ainsi que null. ● JSON supporte les nombres flottants : 21.34576. MVCC : multiversion concurrency control
  • #17: REST : Representational State Transfer, est connu comme une alternative simple au protocole SOAP, pour interfacer des web services. Rest n’est pas un protocole, c’est un style d’architecture.
  • #18: CouchDB uses an "optimistic concurrency" model Ie Couchdb rejete le document si celui si n'est pas celui que vous avez envoyer ! Retrieve the document, take note of the _rev property that CouchDB sends along Decrement the quantity field, if it's greater than zero Send the updated document back, using the _rev property If the _rev matches the currently stored number, be done! If there's a conflict (when _rev doesn't match), retrieve the newest document version
  • #20: Map Par exemple, considérons une liste de notes d'examen, où chaque note est 1 point trop élevée. Une fonction map de s - 1 pourrait être appliquée sur chaque note s. Reduce comment faire si l'on souhaite connaître la moyenne de la classe ? On peut définir une fonction de réduction qui diminue de moitié la liste par ajout d'une entrée dans la liste des voisins, récursivement, on continue jusqu'à ce qu'il y ait seulement une (grosse) entrée, et divise la somme totale par l'entrée originale d'éléments pour avoir la moyenne).
  • #33: 1 – Le plus gros cluster cassandra utilise 100 TB de donnée répartie sur 150 machine 2 – Les donnée sont automatiquement repliqués dur des mutliples noeud . La replication entre plusieurs data center est supporter . Les noeuds mort sont remplacer sans rupture de service 3 – Tout les noeuds sont identiques. Pas de point de failure 4 – Vous avez le choix entre une replication assynchrone et synchone pour chaque mis à jour 5 – Modele oriente colonne 5 – les lectures et les écritures augmente lineairement lorsqu'on ajoute des machines 6 – Procedure via un commitlog de ne perdre aucune donnée
  • #52: 1 – Au lieu de travailler sur des statc et rigide table avec des lignes et des colonnes vous travailler sur un graph flexible qui s'adapte a vos besoin en ayant a votre disposition des noeud , des relation et des propriétés. 2 – C'est l'application qui embarque la base de donnée neo4j 3 – Une gestion de stokage optimiser pour stocker plusieurs billion de noeud, de relaction , de proprietes. La base de donnée peut etre répartie sur plusieurs disque 4 framework performant de traversé.