Wir sind aber nicht Twitter

1,186
-1

Published on

Was alternative Datenbanken jenseits von Skalierung bieten. NoSQL Datenbanken bieten sich an, um hochskalierende Anwendungen auf Hunderten von Nodes zu realisieren. Stimmt. Das ist aber nicht alles. Nicht-relationale Datenbanken bieten jenseits von Performanz interessante Features, die man auch in Projekten gebrauchen kann, die nicht die Nutzerzahlen von Twitter und Facebook erreichen. Dieser Vortrag greift Aspekte wie Schemafreiheit, Multi-Model-Datemodellierung und "Database as application server" auf und zeigt, wie man diese sinnvoll in Projekten einsetzen kann und was dabei zu beachten ist.

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

No Downloads
Views
Total Views
1,186
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Wir sind aber nicht Twitter

  1. 1. Wir sind aber nicht TwitterWas alternative Datenbanken jenseits von Skalierung bieten. Frank CellerDeveloper Week 2013Nürnbergwww.arangodb.org (c) f.celler@triagens.deMittwoch, 26. Juni 13
  2. 2. Die NoSQL Bewegungwww.arangodb.org (c) f.celler@triagens.deMittwoch, 26. Juni 13
  3. 3. www.arangodb.org (c) f.celler@triagens.dehttp://www.strozzi.it/cgi-bin/CSA/tw7/I/en_US/nosql/Home%20PageNoSQLA Relational Database Management SystemNoSQL is a fast, portable, relational database management system without arbitrary limits,(other than memory and processor speed) that runs under, and interacts with, the UNIX1Operating System. It uses the "Operator-Stream Paradigm" described in "Unix Review", March,1991, page 24, entitled "A 4GL Language". There are a number of "operators" that eachperform a unique function on the data. The "stream" is supplied by the UNIX Input/Outputredirection mechanism. Therefore each operator processes some data and then passes it along tothe next operator via the UNIX pipe function. This is very efficient as UNIX pipes areimplemented in memory. NoSQL is compliant with the "Relational Model".Carlo Strozzi, 1998Mittwoch, 26. Juni 13
  4. 4. www.arangodb.org (c) f.celler@triagens.deTraffic,Traffic,TrafficMittwoch, 26. Juni 13
  5. 5. www.arangodb.org (c) f.celler@triagens.dehttp://www.allthingsdistributed.com/2007/10/amazons_dynamo.htmlDynamo: Amazon’s Highly Available Key-value StoreGiuseppe DeCandia, Deniz Hastorun, Madan Jampani, Gunavardhan Kakulapati, Avinash Lakshman, Alex Pilchin, Swaminathan Sivasubramanian, Peter Vosshall and Werner VogelsAmazon.comAbstractReliability at massive scale is one of the biggest challenges we face at Amazon.com, one of thelargest e-commerce operations in the world; even the slightest outage has significant financialconsequences and impacts customer trust. The Amazon.com platform, which provides servicesfor many web sites worldwide, is implemented on top of an infrastructure of tens of thousands ofservers and network components located in many datacenters around the world. At this scale,small and large components fail continuously and the way persistent state is managed in the faceof these failures drives the reliability and scalability of the software systems.This paper presents the design and implementation of Dynamo, a highly available key-valuestorage system that some of Amazon’s core services use to provide an “always-on” experience. To achieve this level of availability, Dynamo sacrifices consistency under certain failurescenarios. It makes extensive use of object versioning and application-assisted conflict resolutionin a manner that provides a novel interface for developers to use.Werner Vogels, 2007Mittwoch, 26. Juni 13
  6. 6. CAPwww.arangodb.org (c) f.celler@triagens.deACIDBASEWas ist neu?Mittwoch, 26. Juni 13
  7. 7. www.arangodb.org (c) f.celler@triagens.deNOSQL meetupThursday, June 11, 2009 from 10:00 AM to 5:00 PM (PDT)San Francisco, CAIntroductionThis meetup is about "open source, distributed, non relational databases".Have you run into limitations with traditional relational databases? Dont mind trading aquery language for scalability? Or perhaps you just like shiny new things to try out?Either way this meetup is for you.Join us in figuring out why these newfangled Dynamo clones and BigTables have becomeso popular lately. We have gathered presenters from the most interesting projects aroundto give us all an introduction to the field.http://nosql.eventbrite.com/Mittwoch, 26. Juni 13
  8. 8. Dokument Datenbankenwww.arangodb.org (c) f.celler@triagens.deMittwoch, 26. Juni 13
  9. 9. www.arangodb.org (c) f.celler@triagens.deWarum NoSQL?Reasons to use NoSQL databasesThis is interesting. If you group together the sections that deal with ‘ease of applicationdevelopment’ – which are ‘simpler data model’, ‘schema less’ and ‘rapid development’ –then these come to a total of 17. This far outweighs any other result. It would seem thatmost people use NoSQL databases because they’re easier to develop application on.This likely accounts for why you come across Open Source NoSQL databases on theweb, but not in large organisations doing serious work – for a large and complex systemease of development is not a primary concern. These organisations are instead concernedwith ‘doing things properly’ – i.e. Enterprise class solutions.Adam Fowler, 2013http://adamfowlerml.wordpress.com/2013/01/04/why-use-a-nosql-database-and-why-not/Mittwoch, 26. Juni 13
  10. 10. • relationales Gebot: Daten sollennormalisiert gespeichert werden• Redundanzen auflösen• Konsistenz und Integrität der Datenerhöhenwww.arangodb.org (c) f.celler@triagens.deRDBMS NormalisierungMittwoch, 26. Juni 13
  11. 11. • Eine „Person“ hat• Vor und Zuname• eine oder mehrere Adressen, Email-Adressen,Telefonnummern• Liste für Hobbies, Skills,Tagswww.arangodb.org (c) f.celler@triagens.deRDBMS NormalisierungMittwoch, 26. Juni 13
  12. 12. www.arangodb.org (c) f.celler@triagens.dePersonPersonPersonAddressAddressAddressHobbyHobbyHobbyemailemailemailn-to-mn-to-mn-to-mn-to-mn-to-mn-to-mn-to-mn-to-mn-to-mRelationale WeltMittwoch, 26. Juni 13
  13. 13. www.arangodb.org (c) f.celler@triagens.deRelationale Welt• normalisierte Daten sind meist aufmehrere Tabellen verteilt• zur Abfrage benötigt man dann Joins• es können Beziehungen (references) undKonsistenzbedingungen (constraints)definiert werden• diese werden von der DatenbankerzwungenMittwoch, 26. Juni 13
  14. 14. www.arangodb.org (c) f.celler@triagens.de{ name: { first: „Frank“, last: „Celler“ },address: { home: { street: „...“, city: „...“ } },email: { work: „frank@celler.de“ },hobbies: [ „C++“, „MRuby“, „JavaScript“ ] }Aggregate aka DokumentMittwoch, 26. Juni 13
  15. 15. • Dokument• einfache Key /Value Paare• Listen und Unterobjekte• vielfach als JSON• Schema-Freiheit• keine objektrelationale Unverträglichkeitwww.arangodb.org (c) f.celler@triagens.deDokument DatenbankenMittwoch, 26. Juni 13
  16. 16. • es ist "erwünscht", ein Objekt alszusammengehöriges Aggregat zu speichern(keine Aufteilung der Objekteigenschaftenauf verschiedene "Tabellen" etc.)• durch die Aggregatorientierung ist dasLesen und Speichern von komplettenObjekten einfach und schnellwww.arangodb.org (c) f.celler@triagens.deDokument DatenbankenMittwoch, 26. Juni 13
  17. 17. • Schema ist in gespeicherten Daten inhärentvorhanden• verschiedeneVersionen eines "Schemas"können parallel existieren:• { name: "..." }• { name: { first: "...", last: "..." } }• { firstName: "...", lastName: "..." }www.arangodb.org (c) f.celler@triagens.deSchema-FreiheitMittwoch, 26. Juni 13
  18. 18. • kein Migrationszwang: man kann selbstentscheiden, ob (und wann) "alte" Datenmigriert werden• wenn keine Migration alter Daten erfolgt,muss die Applikation mit verschiedenenVersionen umgehen können• mehr Kontrolle = mehrVerantwortungwww.arangodb.org (c) f.celler@triagens.deSchema-FreiheitMittwoch, 26. Juni 13
  19. 19. • auf die Attribute von Dokumenten kannauch einzeln zugegriffen werden• teilweise können auch Indizes auf dieeinzelnen Attribute angelegt werden• zur Zeit keine einheitliche Abfragesprache,noch nicht einmal einheitliches Paradigma• selten Joins notwendigwww.arangodb.org (c) f.celler@triagens.deAbfragenMittwoch, 26. Juni 13
  20. 20. Graph Datenbankenwww.arangodb.org (c) f.celler@triagens.deMittwoch, 26. Juni 13
  21. 21. (c) Geek & PokeMittwoch, 26. Juni 13
  22. 22. www.arangodb.org (c) f.celler@triagens.deGraph Datenbanken• ein "Graph" ist die Gesamtheit von• Objekten (Knoten, auch "vertices") sowie• Beziehungen (Kanten, auch "edges")Mittwoch, 26. Juni 13
  23. 23. www.arangodb.org (c) f.celler@triagens.deType: inproceedingTitle: Finite Size EffectsType: proceedingTitle: Neural ModelingType: personName:Anthony C. C.CoolenLabel: writtenLabel: publishedPages: 99-120Type: personName: Snchez-AndrsLabel: editedJust DocumentsGraph DatenbankenMittwoch, 26. Juni 13
  24. 24. • Hierarchien, Klassifikationen (Bäume)• soziale Beziehungen (Netzwerke)• geographische Daten (Navigation, Routen)• die Objekte selbst und die direkten undindirekten Beziehungen ("Pfade") sindabfragbarwww.arangodb.org (c) f.celler@triagens.deEinsatzmöglichkeitenMittwoch, 26. Juni 13
  25. 25. • Graph-Abfragen sind oft komplex• Traversals: in der Datenbank ausgeführteProgramme• Gremlin (Datenbank-übergreifendeTraversal-Skriptsprache)• Datenbank-eigene Abfragemöglichkeiten(z.B.Abfragesprache "Cypher" in Neo4j)www.arangodb.org (c) f.celler@triagens.deAbfragenMittwoch, 26. Juni 13
  26. 26. Multi-Modell Datenbankenwww.arangodb.org (c) f.celler@triagens.deMittwoch, 26. Juni 13
  27. 27. www.arangodb.org (c) f.celler@triagens.de• Knoten und Kanten sind Dokumente• Abfragen wie analog Dokument-Datenbanken• Range, Geo, Full-Text• Beziehung als Graph• Traversieren des GraphenMulti-Modell DatenbankenMittwoch, 26. Juni 13
  28. 28. ArangoDB.explain()www.arangodb.org (c) f.celler@triagens.de{"type": "NoSQL database","model": [ "document", "graph", "key-value" ],"openSource": true,"license“: "apache","version": 1.3,"builtWith": [ "C", "C++", "js" ],"Javascript": [ "client side", "server side" ],"uses": [ "V8" ]}Mittwoch, 26. Juni 13
  29. 29. NoSQL Landschaftwww.arangodb.org (c) f.celler@triagens.deMittwoch, 26. Juni 13
  30. 30. • in den letzten Jahren sind viele neue, nicht-relationale Datenbanken entstanden• diese lösen einige der genannten Probleme(Skalierung, Schemas, dynamische Daten,impedance mismatch)• teilweise durch weniger Zusicherungen undGarantien (a.k.a. Delegation von Aufgaben andie Applikation)www.arangodb.org (c) f.celler@triagens.deNoSQL DatenbankenMittwoch, 26. Juni 13
  31. 31. (c) 451 Research 31Mittwoch, 26. Juni 13
  32. 32. www.arangodb.org (c) f.celler@triagens.de 32Analytic Processing DBsTransaction Processing DBsManaging the evolving state of an IT systemMap/ReduceGraphsExtensibilityKey/ValueColumn-StoresComplexQueriesStructuredDataMassivelyDistributedDocumentsMittwoch, 26. Juni 13
  33. 33. JavaScript in der Datenbankwww.arangodb.org (c) f.celler@triagens.deMittwoch, 26. Juni 13
  34. 34. JavaScript Everywhere• im Browser• Application-Layer (Node.JS)• Datenbankwww.arangodb.org (c) f.celler@triagens.deMittwoch, 26. Juni 13
  35. 35. JavaScript in a Database• MVC im Browser und/oder NODE.JS• Script-Sprache in der Datenbank• Transaktionen als Functionen• Graph-Traversal• no-backend, just APIwww.arangodb.org (c) f.celler@triagens.deMittwoch, 26. Juni 13
  36. 36. db._create("accounts");db.accounts.save({ _key: "john", amount: 423 });db.accounts.save({ _key: "fred", amount: 197 });db._executeTransaction({collections: {write: "accounts"},params: {user1: "fred",user2: "john",amount: 10},action: function (params) {var db = require("internal").db;var account1 = db.accounts.document(params[user1]);var account2 = db.accounts.document(params[user2]);var amount = params[amount];if (account1.amount < amount) {throw "account of user " + user1 + " does not have enough money!";}db.accounts.update(account1, { amount : account1.amount - amount });db.accounts.update(account2, { amount : account2.amount + amount });/* will commit the transaction and return the value true */return true;}});www.arangodb.org (c) f.celler@triagens.deTransactionsMittwoch, 26. Juni 13
  37. 37. db._executeTransaction({collections: {write: "accounts"},params: {user1: "fred",user2: "john",amount: 10},action: function (params) {var db = require("internal").db;var account1 = db.accounts.document(params[user1]);var account2 = db.accounts.document(params[user2]);var amount = params[amount];if (account1.amount < amount) {throw "account of user " + user1 + " does not have enough money!";}db.accounts.update(account1, { amount : account1.amount - amount });db.accounts.update(account2, { amount : account2.amount + amount });www.arangodb.org (c) f.celler@triagens.deTransactionsMittwoch, 26. Juni 13
  38. 38. function traverse (graph, start, depth, maxlen) {var config = {datasource: traversal.collectionDatasourceFactory(graph._edges),strategy: Traverser.BREADTH_FIRST,expander: traversal.anyExpander,filter: traversal.maxDepthFilter,maxDepth: depth,uniqueness: { edges: Traverser.UNIQUE_GLOBAL, vertices: Traverser.UNIQUE_NONE },visitor: coauthorVisitor(maxlen)};var traverser = new Traverser(config);var result = { positions: {}, vertices: [], links: [], minYear: 0, maxYear: 0 };var first = graph._vertices.firstExample({ name: start });if (first !== null) {traverser.traverse(result, first);}return {start: start,depth: depth,minYear: result.minYear,maxYear: result.maxYear,vertices: result.vertices,links: result.links };}www.arangodb.org (c) f.celler@triagens.deGraph TraversalMittwoch, 26. Juni 13
  39. 39. function traverse (graph, start, depth, maxlen) {var config = {datasource: traversal.collectionDatasourceFactory(graph._edges),strategy: Traverser.BREADTH_FIRST,expander: traversal.anyExpander,filter: traversal.maxDepthFilter,maxDepth: depth,uniqueness: { edges: Traverser.UNIQUE_GLOBAL,vertices: Traverser.UNIQUE_NONE },visitor: coauthorVisitor(maxlen)};www.arangodb.org (c) f.celler@triagens.deGraph TraversalMittwoch, 26. Juni 13
  40. 40. www.arangodb.org (c) f.celler@triagens.deNo-BackendMittwoch, 26. Juni 13
  41. 41. To Be Continued• Fork me on github• Google Group:ArangoDB• Twitter: @fceller & @arangodb• www.arangodb.orgwww.arangodb.org (c) f.celler@triagens.deStay in Touch:Mittwoch, 26. Juni 13
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×