nichtrelaonale .datenbankenin web&anwendungen. · 2013-01-23 · nichtrelaonale .datenbanken(...
TRANSCRIPT
![Page 1: Nichtrelaonale .Datenbankenin Web&Anwendungen. · 2013-01-23 · Nichtrelaonale .Datenbanken( NoSQL) • Keine.festgelegten.Tabellenschemata. • Horizontal.skalierbar. • Opmiert](https://reader035.vdocuments.site/reader035/viewer/2022062920/5f02a6127e708231d40550e7/html5/thumbnails/1.jpg)
Nicht-‐rela+onale Datenbanken in Web-‐Anwendungen
![Page 2: Nichtrelaonale .Datenbankenin Web&Anwendungen. · 2013-01-23 · Nichtrelaonale .Datenbanken( NoSQL) • Keine.festgelegten.Tabellenschemata. • Horizontal.skalierbar. • Opmiert](https://reader035.vdocuments.site/reader035/viewer/2022062920/5f02a6127e708231d40550e7/html5/thumbnails/2.jpg)
Rela+onale Datenbanken
• Komplexe Abfragen per SQL möglich • Effizient bei kleinen Transak+onen • Benö+gen feste Tabellenschemata • Schwierig zu skalieren
![Page 3: Nichtrelaonale .Datenbankenin Web&Anwendungen. · 2013-01-23 · Nichtrelaonale .Datenbanken( NoSQL) • Keine.festgelegten.Tabellenschemata. • Horizontal.skalierbar. • Opmiert](https://reader035.vdocuments.site/reader035/viewer/2022062920/5f02a6127e708231d40550e7/html5/thumbnails/3.jpg)
Nicht-‐rela+onale Datenbanken (NoSQL)
• Keine festgelegten Tabellenschemata • Horizontal skalierbar • Op+miert für viele Schreib-‐/Leseanfragen • Viele verschiedene Datenbanken mit unterschiedlichem Focus
• Meist schwache Garan+e der Konsistenz (verzicht auf ACID-‐EigenschaUen)
![Page 4: Nichtrelaonale .Datenbankenin Web&Anwendungen. · 2013-01-23 · Nichtrelaonale .Datenbanken( NoSQL) • Keine.festgelegten.Tabellenschemata. • Horizontal.skalierbar. • Opmiert](https://reader035.vdocuments.site/reader035/viewer/2022062920/5f02a6127e708231d40550e7/html5/thumbnails/4.jpg)
Typen von NoSQL Datenbanken
Key-‐Value Stores Dokumentenorien+erte Datenbanken Spaltenorien+erte Datenbank
![Page 5: Nichtrelaonale .Datenbankenin Web&Anwendungen. · 2013-01-23 · Nichtrelaonale .Datenbanken( NoSQL) • Keine.festgelegten.Tabellenschemata. • Horizontal.skalierbar. • Opmiert](https://reader035.vdocuments.site/reader035/viewer/2022062920/5f02a6127e708231d40550e7/html5/thumbnails/5.jpg)
In-‐memory key-‐value store Sprache: C/C++ Protokoll: Telnet-‐ähnlich Besonderheiten: Kennt Transak+onen, Daten können expiren, Pub/Sub Unterstützung Anwendungsbeispiel: Häufig geänderte Daten mit absehbarer Größe – z.B. Börsenkurse, Logdaten, Messaging. Das bessere Memcache.
![Page 6: Nichtrelaonale .Datenbankenin Web&Anwendungen. · 2013-01-23 · Nichtrelaonale .Datenbanken( NoSQL) • Keine.festgelegten.Tabellenschemata. • Horizontal.skalierbar. • Opmiert](https://reader035.vdocuments.site/reader035/viewer/2022062920/5f02a6127e708231d40550e7/html5/thumbnails/6.jpg)
Ausprobieren auf: hap://try.redis.io
![Page 7: Nichtrelaonale .Datenbankenin Web&Anwendungen. · 2013-01-23 · Nichtrelaonale .Datenbanken( NoSQL) • Keine.festgelegten.Tabellenschemata. • Horizontal.skalierbar. • Opmiert](https://reader035.vdocuments.site/reader035/viewer/2022062920/5f02a6127e708231d40550e7/html5/thumbnails/7.jpg)
Indexed document store Sprache: C++ Protokoll: Eigenes, BSON encoded Besonderheiten: Dynamische Queries, kann große BLOBS speichern, serversei+ge Javascript Funk+onen, sharding und Master/Slave Replika+on Anwendungsbeispiel: Schnelle Zugriffe auf große Datenmengen. Ersatz für MySQL in vielen Web-‐Szenarien.
![Page 8: Nichtrelaonale .Datenbankenin Web&Anwendungen. · 2013-01-23 · Nichtrelaonale .Datenbanken( NoSQL) • Keine.festgelegten.Tabellenschemata. • Horizontal.skalierbar. • Opmiert](https://reader035.vdocuments.site/reader035/viewer/2022062920/5f02a6127e708231d40550e7/html5/thumbnails/8.jpg)
Ausprobieren: hap://www.mongodb.org -‐> Try it out
![Page 9: Nichtrelaonale .Datenbankenin Web&Anwendungen. · 2013-01-23 · Nichtrelaonale .Datenbanken( NoSQL) • Keine.festgelegten.Tabellenschemata. • Horizontal.skalierbar. • Opmiert](https://reader035.vdocuments.site/reader035/viewer/2022062920/5f02a6127e708231d40550e7/html5/thumbnails/9.jpg)
Map/reduce document store Sprache: Erlang Protokoll: HTTP / REST Besonderheiten: Abfragen per Map/Reduce, Datei-‐Aaachments an Dokumenten, behält Revisionen, Bi-‐direk+onale Replika+on! Anwendungsbeispiel: Datenbestand, der anwächst, aber nicht oU geändert wird. Mul+ Site deployments.
![Page 10: Nichtrelaonale .Datenbankenin Web&Anwendungen. · 2013-01-23 · Nichtrelaonale .Datenbanken( NoSQL) • Keine.festgelegten.Tabellenschemata. • Horizontal.skalierbar. • Opmiert](https://reader035.vdocuments.site/reader035/viewer/2022062920/5f02a6127e708231d40550e7/html5/thumbnails/10.jpg)
Map: func+on(doc) { if (doc.Type == "customer") { emit(doc.LastName, {FirstName: doc.FirstName, Address: doc.Address}); } } Map/Reduce: func+on map(doc) { if (doc.Type == ”rechnung") { emit(doc.Date, {sum: doc.Betrag}); } } func+on reduce(key, values, rereduce) { return sum(values); }
![Page 11: Nichtrelaonale .Datenbankenin Web&Anwendungen. · 2013-01-23 · Nichtrelaonale .Datenbanken( NoSQL) • Keine.festgelegten.Tabellenschemata. • Horizontal.skalierbar. • Opmiert](https://reader035.vdocuments.site/reader035/viewer/2022062920/5f02a6127e708231d40550e7/html5/thumbnails/11.jpg)
Column based database Sprache: Java Protokoll: ThriU Besonderheiten: Schreiben schneller als Lesen, Big Table Features, Daten können expiren, Map/Reduce mit Hadoop, Alle Nodes sind gleich Anwendungsbeispiel: Logging, Datananlyse, Banken, Versicherungen, Web-‐Analy+cs.
![Page 12: Nichtrelaonale .Datenbankenin Web&Anwendungen. · 2013-01-23 · Nichtrelaonale .Datenbanken( NoSQL) • Keine.festgelegten.Tabellenschemata. • Horizontal.skalierbar. • Opmiert](https://reader035.vdocuments.site/reader035/viewer/2022062920/5f02a6127e708231d40550e7/html5/thumbnails/12.jpg)
[default@DEMO] set Users[1234][name] = rick; !Value inserted. !Elapsed time: 10 msec(s). ![default@DEMO] set Users[1234][password] = geheim; !Value inserted. !Elapsed time: 10 msec(s). ![default@DEMO] get Users[1234]; !=> (column=name, value=rick, timestamp=13507691616840) !=> (column=password, value=geheim, timestamp=13507692451910) !!Returned 2 results. !Elapsed time: 67 msec(s). !
![Page 13: Nichtrelaonale .Datenbankenin Web&Anwendungen. · 2013-01-23 · Nichtrelaonale .Datenbanken( NoSQL) • Keine.festgelegten.Tabellenschemata. • Horizontal.skalierbar. • Opmiert](https://reader035.vdocuments.site/reader035/viewer/2022062920/5f02a6127e708231d40550e7/html5/thumbnails/13.jpg)
MongoDB & Rails 3
• Rails-‐Projekt ohne Ac+veRecord ini+alisieren rails new MyProject –-skip-active-record !
• Mongo Gem installieren MongoMapper -‐> hap://mongomapper.com oder Mongoid -‐> hap://mongoid.org
![Page 14: Nichtrelaonale .Datenbankenin Web&Anwendungen. · 2013-01-23 · Nichtrelaonale .Datenbanken( NoSQL) • Keine.festgelegten.Tabellenschemata. • Horizontal.skalierbar. • Opmiert](https://reader035.vdocuments.site/reader035/viewer/2022062920/5f02a6127e708231d40550e7/html5/thumbnails/14.jpg)
Datamodel mit Mongoid
!class Person ! include Mongoid::Document ! field :first_name, type: String ! field :middle_name, type: String ! field :last_name, type: String !end !
![Page 15: Nichtrelaonale .Datenbankenin Web&Anwendungen. · 2013-01-23 · Nichtrelaonale .Datenbanken( NoSQL) • Keine.festgelegten.Tabellenschemata. • Horizontal.skalierbar. • Opmiert](https://reader035.vdocuments.site/reader035/viewer/2022062920/5f02a6127e708231d40550e7/html5/thumbnails/15.jpg)
Rela+onen (embedded) class Band ! include Mongoid::Document ! embeds_many :albums !end !!class Album ! include Mongoid::Document ! embedded_in :band !end !
![Page 16: Nichtrelaonale .Datenbankenin Web&Anwendungen. · 2013-01-23 · Nichtrelaonale .Datenbanken( NoSQL) • Keine.festgelegten.Tabellenschemata. • Horizontal.skalierbar. • Opmiert](https://reader035.vdocuments.site/reader035/viewer/2022062920/5f02a6127e708231d40550e7/html5/thumbnails/16.jpg)
Rela+onen (referenced) class Band ! include Mongoid::Document ! has_many :albums !end !!class Album ! include Mongoid::Document ! belongs_to :band !end !
![Page 17: Nichtrelaonale .Datenbankenin Web&Anwendungen. · 2013-01-23 · Nichtrelaonale .Datenbanken( NoSQL) • Keine.festgelegten.Tabellenschemata. • Horizontal.skalierbar. • Opmiert](https://reader035.vdocuments.site/reader035/viewer/2022062920/5f02a6127e708231d40550e7/html5/thumbnails/17.jpg)
Indizes Defini+on: class Person ! include Mongoid::Document ! field :age, :index => true ! field :location, type: Array !! index({ location: "2d" }, { min: -200, max: 200 }) !end !!Erzeugen mit: > rake db:mongoid:create_indexes!
![Page 18: Nichtrelaonale .Datenbankenin Web&Anwendungen. · 2013-01-23 · Nichtrelaonale .Datenbanken( NoSQL) • Keine.festgelegten.Tabellenschemata. • Horizontal.skalierbar. • Opmiert](https://reader035.vdocuments.site/reader035/viewer/2022062920/5f02a6127e708231d40550e7/html5/thumbnails/18.jpg)
Queries Band.find("4baa56f1230048567300485c") Band.where(name: "Depeche Mode") Band. where(:founded.gte => "1980-‐1-‐1"). in(name: [ "Tool", "DeUones" ]). sort(:founded => 1). limit(10) !