RavenDB, schnell und skalierbar
Big Data & NoSQL,



Aydin Mir Mohammadi
bluehands GmbH & Co.mmunication KG
am@bluehands.de
Immer mehr…



    Mehr Performance

      Mehr Menge

    Mehr Verfügbarkeit
Skalierung




                         http://www.flickr.com/photos/39901968@N04/4864698533/




  Vertikale Skalierung         Horizontale Skalierung
Skalierung
 Vertikale Skalierung ist einfacher
  •   Multi-Threading
  •   Cores, Speicher und IO ausnutzen
  •   Wird sehr schnell sehr teuer
  •   Hohes Potential, um klassische Anforderungen
      (ACID) gerecht zu werden
Am Ende hängt es an den Daten
   Klassische Datenbanken skalieren nicht




Binsenweisheit
RDBMS: Performance no. clients
           3 Instances
5.00

4.00

3.00

2.00

1.00

0.00
                                12 Instances
                         5.00


                         4.00


                         3.00


                         2.00


                         1.00


                         0.00
RDBMS: Performance no. clients

2.00


1.80


1.60


1.40


1.20


1.00


0.80


0.60


0.40


0.20


0.00
       1        3        6          12
Man muss die Daten „verteilen“
   Willkommen in der Hölle




Binsenweisheit
CAP-Theorem
 Betrifft ein System mit verteilten Daten.
 Betrachtet folgende Eigenschaften
  • Consistency: Alle sehen gleichzeitig das
    gleiche
  • Availability: Alle können lesen & schreiben
  • Partition Tolerance: Ausfall eines Knotens führt
    nicht zum Ausfall des Systems
CAP-Theorem: Wähle 2 aus 3


                                               ACID oder
                           Consitency          eventualy
                                               Consistent




  Antwort
 Verhalten




                                         Partion
             Availabilty
                                        Tolerance
CAP-Theorem: Beispiele
 Oracle Cluster (RAC)
  • Kein CAP-Theorem, da nicht verteilt
 Datenbank Mirroring (Log-Shipping)
  • Synchrone Commits: CA
  • Asynchrone Commits & Sync: AP
 Partitionierung
  • Sharding & Federation: CA
Sql Azur
RDBMS: Sql-Azure
 Sql-Server in Azure
 Immer drei Knoten
  • 1 Primary, 2 Standby
  • 1 Sync commit, 1 async commit
 Funktional eingeschränkt
  • Kein Xml
  • Kein CLR
  • Kein OleDB (not supported)
 It just works
DBMS: Sql-Azure

                   Latenz beachten
                   Licht braucht 1,8 ms
                   Sql Ping ca. 15 ms
Sharding
                                    Für Join und ref.
                                Integrität müssen Mütter
                                     verteilt werden.



                                                                    Storage




                                                           Mutter   Mutter    Mutter



            Storage

                                                           Kind


   Mutter   Mutter     Mutter




            Kind                                                    Storage




                                                           Mutter   Mutter    Mutter




                                                                              Kind

                         Geeignete
                      Aufteilung finden
Sql-Azure: Skalierung (CA)
 Manuelles Sharding
  • Daten werden auf mehrere Knoten verteilt.
    Zugriff wird im Client gesteuert.
 Sql Azure Federation
  • Eingebautes Sharding. Zugriff wird im Server
    gesteuert, jedoch nicht transparent.
Federation
 Limits
  • Keine Transaktionen über shards. Verteilte
    Transaktionen sind in Sql-Azure nicht
    supported
  • Kein Auto-Increment
 Vorteile gegenüber manuelles Sharding
  • Online Split, Management
  • Datenbank kennt die Verteilung. Shard kann
    abgefragt werden
Federation
 Federation „key“ überlegen
  • Über welche Eigenschaft einer Tabelle wird
    verteilt
 Federations erstellen
  • Man kann die einzelnen Shards immer wieder
    splitten
 Sql-Statements anpassen
  • Vor jedem Statement: Use Federation xxx
    (key=value),with filtering=off, reset
Azure Table Storage
Table-Storage
 Schemalos.
 Partitioniert. Jede Partition kann auf eine
  andere Maschine gehalten werden.
 Jede Entität hat ein PartitionKey und ein
  RowKey
 Versionierung über Timestamp
Table-Storage: How to use
 Queries nur auf RowKey und PartionKey
  mit „=„
  • Table-Storage ist eine Hash-Table.
  • Alle andere Operationen machen einen Full-
    Scan.
  • Evtl. PartitionKey und danach Properties
 Limits beachten
  • 64k pro Eigenschaft, 1 MB pro Entität
  • 5000/sec auf Account und 500/sec auf
    Partition
Table-Storage: How to use
 Komplizierte denormalisierte Objekte
  • Z.B.: Profile, Settings
  • Eher statische Entitäten
 Vorberechnete Sichten. Daten werden je
  nach Anwendung vorbereitet.
  • In RDBMS: Mehrere Clustered Indizes
Azure Blob Storage
Blob-Storage
 „Filesystem“ in der Cloud
 Content ist von überall abrufbar
 Über http als Ressource einbinden
Query
Map-Reduce
 Idee
  • Query in kleine Teile aufteilen
  • Auf viele Knoten ausführen
 Voraussetzung
  • Code und Daten sind nah
  • D.h. Map-Reduce auf einer zentralen DB macht
    in der Regel keinen Sinn
Map-Reduce
 In Linq
  • map --> Enumerable.Select
  • reduce --> Enumerable.Aggregate
 Mehrere Implementierungen (deprecated)
  • DryadLINQ
  • Daytona
 Hadoop

Weitere ähnliche Inhalte

PPT
Tema6.castella
PPTX
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013
PPTX
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
PDF
02.10.2011 SC B.A.T II
KEY
Einführung in SCRUM
PPT
Apresentação Java Web Si Ufc Quixadá
PDF
Tutorialphpmyadmin
KEY
Présentation LMAX Disruptor So@t
Tema6.castella
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
02.10.2011 SC B.A.T II
Einführung in SCRUM
Apresentação Java Web Si Ufc Quixadá
Tutorialphpmyadmin
Présentation LMAX Disruptor So@t

Andere mochten auch (15)

PPTX
Lean Kanban FR 2013 - Vin et kanban
PDF
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
PPT
MySQL Query Optimization
PDF
Atelier agile 2009_09_27
PDF
Ligação do Flex a um backend LAMP usando AMFPHP
PPTX
NotORM
PDF
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
PDF
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
PDF
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
PDF
Otimizando aplicações Zend Framework - Tchelinux
PDF
PPTX
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
PDF
Què ha fet ICV-EUiA amb el meu vot?
PPTX
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013
PPTX
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Lean Kanban FR 2013 - Vin et kanban
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
MySQL Query Optimization
Atelier agile 2009_09_27
Ligação do Flex a um backend LAMP usando AMFPHP
NotORM
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
Otimizando aplicações Zend Framework - Tchelinux
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
Què ha fet ICV-EUiA amb el meu vot?
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Anzeige

Ähnlich wie Big Data & NoSQL (20)

PDF
Nosql Hintergründe und Anwendungen
PPTX
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
PDF
Überblick Oracle Datenbank Hochverfügbarkeit
PDF
High Performance Multi-Server Magento in der Cloud
 
PDF
SimpleDB - Chancen einer Cloud Datenbank
PDF
Where are all transactions gone? Was in_der_cloud_alles_verboten_ist
PPTX
Drupal 7 auf Amazon Web Services
PDF
Cloud-native and Enterprise Java? Hold my beer!
PDF
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
 
PDF
MySQL Hochverfügbarkeitslösungen
PDF
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
PPTX
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
PDF
Supersonic Java für die Cloud: Quarkus
PPTX
in memory datenbanken
PPTX
Webinar 4 Server in der Cloud – die AWS Compute Dienste
KEY
papaya AWS Präsentation CeBIT 2010
PDF
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
PDF
Digicomp sqlday admin
PDF
JavaAktuell - Skalierbare Cluster-Topologien mit dem JBoss AS 7
PPTX
JAX 2011 - Garbage collection verstehen
Nosql Hintergründe und Anwendungen
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
Überblick Oracle Datenbank Hochverfügbarkeit
High Performance Multi-Server Magento in der Cloud
 
SimpleDB - Chancen einer Cloud Datenbank
Where are all transactions gone? Was in_der_cloud_alles_verboten_ist
Drupal 7 auf Amazon Web Services
Cloud-native and Enterprise Java? Hold my beer!
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
 
MySQL Hochverfügbarkeitslösungen
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
Supersonic Java für die Cloud: Quarkus
in memory datenbanken
Webinar 4 Server in der Cloud – die AWS Compute Dienste
papaya AWS Präsentation CeBIT 2010
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Digicomp sqlday admin
JavaAktuell - Skalierbare Cluster-Topologien mit dem JBoss AS 7
JAX 2011 - Garbage collection verstehen
Anzeige

Mehr von Sascha Dittmann (18)

PPTX
C# + SQL = Big Data
PDF
Hochskalierbare, relationale Datenbanken in Microsoft Azure
PDF
Microsoft R - Data Science at Scale
PDF
SQL Server vs. Azure DocumentDB – Ein Battle zwischen XML und JSON
PPTX
dotnet Cologne 2015 - Azure Service Fabric
PPTX
SQL Saturday #313 Rheinland - MapReduce in der Praxis
PDF
Hadoop 2.0 - The Next Level
PPTX
Microsoft HDInsight Podcast #001 - Was ist HDInsight
PPTX
SQLSaturday #230 - Introduction to Microsoft Big Data (Part 2)
PPTX
SQLSaturday #230 - Introduction to Microsoft Big Data (Part 1)
PDF
dotnet Cologne 2013 - Windows Azure Mobile Services
PPTX
dotnet Cologne 2013 - Microsoft HD Insight für .NET Entwickler
PPTX
Developer Open Space 2012 - Cloud Computing Workshop
PPTX
PASS Camp 2012 - Big Data mit Microsoft (Teil 1)
PPTX
CloudOps Summit 2012 - 3 Wege in die Cloud
PPTX
.NET Usergroup Rhein-Neckar: Big Data in der Cloud - Apache Hadoop-based Serv...
PPTX
NoSQL mit RavenDB und Azure
PPTX
Windows Azure für Entwickler V1
C# + SQL = Big Data
Hochskalierbare, relationale Datenbanken in Microsoft Azure
Microsoft R - Data Science at Scale
SQL Server vs. Azure DocumentDB – Ein Battle zwischen XML und JSON
dotnet Cologne 2015 - Azure Service Fabric
SQL Saturday #313 Rheinland - MapReduce in der Praxis
Hadoop 2.0 - The Next Level
Microsoft HDInsight Podcast #001 - Was ist HDInsight
SQLSaturday #230 - Introduction to Microsoft Big Data (Part 2)
SQLSaturday #230 - Introduction to Microsoft Big Data (Part 1)
dotnet Cologne 2013 - Windows Azure Mobile Services
dotnet Cologne 2013 - Microsoft HD Insight für .NET Entwickler
Developer Open Space 2012 - Cloud Computing Workshop
PASS Camp 2012 - Big Data mit Microsoft (Teil 1)
CloudOps Summit 2012 - 3 Wege in die Cloud
.NET Usergroup Rhein-Neckar: Big Data in der Cloud - Apache Hadoop-based Serv...
NoSQL mit RavenDB und Azure
Windows Azure für Entwickler V1

Big Data & NoSQL

  • 1. RavenDB, schnell und skalierbar Big Data & NoSQL, Aydin Mir Mohammadi bluehands GmbH & Co.mmunication KG [email protected]
  • 2. Immer mehr… Mehr Performance Mehr Menge Mehr Verfügbarkeit
  • 3. Skalierung http://www.flickr.com/photos/39901968@N04/4864698533/ Vertikale Skalierung Horizontale Skalierung
  • 4. Skalierung  Vertikale Skalierung ist einfacher • Multi-Threading • Cores, Speicher und IO ausnutzen • Wird sehr schnell sehr teuer • Hohes Potential, um klassische Anforderungen (ACID) gerecht zu werden
  • 5. Am Ende hängt es an den Daten Klassische Datenbanken skalieren nicht Binsenweisheit
  • 6. RDBMS: Performance no. clients 3 Instances 5.00 4.00 3.00 2.00 1.00 0.00 12 Instances 5.00 4.00 3.00 2.00 1.00 0.00
  • 7. RDBMS: Performance no. clients 2.00 1.80 1.60 1.40 1.20 1.00 0.80 0.60 0.40 0.20 0.00 1 3 6 12
  • 8. Man muss die Daten „verteilen“ Willkommen in der Hölle Binsenweisheit
  • 9. CAP-Theorem  Betrifft ein System mit verteilten Daten.  Betrachtet folgende Eigenschaften • Consistency: Alle sehen gleichzeitig das gleiche • Availability: Alle können lesen & schreiben • Partition Tolerance: Ausfall eines Knotens führt nicht zum Ausfall des Systems
  • 10. CAP-Theorem: Wähle 2 aus 3 ACID oder Consitency eventualy Consistent Antwort Verhalten Partion Availabilty Tolerance
  • 11. CAP-Theorem: Beispiele  Oracle Cluster (RAC) • Kein CAP-Theorem, da nicht verteilt  Datenbank Mirroring (Log-Shipping) • Synchrone Commits: CA • Asynchrone Commits & Sync: AP  Partitionierung • Sharding & Federation: CA
  • 13. RDBMS: Sql-Azure  Sql-Server in Azure  Immer drei Knoten • 1 Primary, 2 Standby • 1 Sync commit, 1 async commit  Funktional eingeschränkt • Kein Xml • Kein CLR • Kein OleDB (not supported)  It just works
  • 14. DBMS: Sql-Azure  Latenz beachten  Licht braucht 1,8 ms  Sql Ping ca. 15 ms
  • 15. Sharding Für Join und ref. Integrität müssen Mütter verteilt werden. Storage Mutter Mutter Mutter Storage Kind Mutter Mutter Mutter Kind Storage Mutter Mutter Mutter Kind Geeignete Aufteilung finden
  • 16. Sql-Azure: Skalierung (CA)  Manuelles Sharding • Daten werden auf mehrere Knoten verteilt. Zugriff wird im Client gesteuert.  Sql Azure Federation • Eingebautes Sharding. Zugriff wird im Server gesteuert, jedoch nicht transparent.
  • 17. Federation  Limits • Keine Transaktionen über shards. Verteilte Transaktionen sind in Sql-Azure nicht supported • Kein Auto-Increment  Vorteile gegenüber manuelles Sharding • Online Split, Management • Datenbank kennt die Verteilung. Shard kann abgefragt werden
  • 18. Federation  Federation „key“ überlegen • Über welche Eigenschaft einer Tabelle wird verteilt  Federations erstellen • Man kann die einzelnen Shards immer wieder splitten  Sql-Statements anpassen • Vor jedem Statement: Use Federation xxx (key=value),with filtering=off, reset
  • 20. Table-Storage  Schemalos.  Partitioniert. Jede Partition kann auf eine andere Maschine gehalten werden.  Jede Entität hat ein PartitionKey und ein RowKey  Versionierung über Timestamp
  • 21. Table-Storage: How to use  Queries nur auf RowKey und PartionKey mit „=„ • Table-Storage ist eine Hash-Table. • Alle andere Operationen machen einen Full- Scan. • Evtl. PartitionKey und danach Properties  Limits beachten • 64k pro Eigenschaft, 1 MB pro Entität • 5000/sec auf Account und 500/sec auf Partition
  • 22. Table-Storage: How to use  Komplizierte denormalisierte Objekte • Z.B.: Profile, Settings • Eher statische Entitäten  Vorberechnete Sichten. Daten werden je nach Anwendung vorbereitet. • In RDBMS: Mehrere Clustered Indizes
  • 24. Blob-Storage  „Filesystem“ in der Cloud  Content ist von überall abrufbar  Über http als Ressource einbinden
  • 25. Query
  • 26. Map-Reduce  Idee • Query in kleine Teile aufteilen • Auf viele Knoten ausführen  Voraussetzung • Code und Daten sind nah • D.h. Map-Reduce auf einer zentralen DB macht in der Regel keinen Sinn
  • 27. Map-Reduce  In Linq • map --> Enumerable.Select • reduce --> Enumerable.Aggregate  Mehrere Implementierungen (deprecated) • DryadLINQ • Daytona  Hadoop