SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
VoltDB: Technical Overview 20101019

Tim Callaghan, VoltDB Field Engineer
tcallaghan@voltdb.com
Before I Begin…

VoltDB is available in community and
         commercial editions

           Runs on Linux + Mac*

 I am “Mark Callaghan’s lesser-known but
 nonetheless smart brother” [C. Monash]*

*http://www.dbms2.com/2010/05/25/voltdb-finally-launches/

                                      March 3, 2009   |
                                                            2
Scaling Traditional OLTP Databases

• Sharding improves performance but
  introduces…
  • Management complexity
     + disjointed backup/recovery and replication
     + manual effort to re-partition data                      X   X
  • Application complexity
     + shard awareness
     + cross partition joins
     + cross partition transactions           X
  • And, each shard still suffers from traditionalXOLTPX
    performance limitations
• If you can shard, your application is probably
  great in VoltDB.
                                           March 3, 2009   |
Technical Overview
• “OLTP Through the Looking Glass”
  http://cs-www.cs.yale.edu/homes/dna/papers/oltpperf-sigmod08.pdf

• VoltDB avoids the overhead of traditional databases
   • K-safety for fault tolerance
      - no logging

   • In memory operation for maximum throughput
       - no buffer management

   • Partitions operate autonomously
     and single-threaded
      - no latching or locking

• Built to horizontally scale


                                                             March 3, 2009   |
                                                                                 4
Partitions (1/4)
• 1 partition per physical CPU core
   • Each physical server has multiple VoltDB partitions
• Data - Two types of tables
   • Partitioned
       + Single column serves as partitioning key
                                                                X
       + Rows are spread across all VoltDB partitions by partition column     X
       + Transactional data (high frequency of modification)
   • Replicated
       + All rows exist within all VoltDB partitions
       + Relatively static data (low frequency of modification)
• Code - Two types of work – both ACID
   • Single-Partition                                            X
       + All insert/update/delete operations within single partition      X   X
       + Majority of transactional workload
   • Multi-Partition
       + CRUD against partitioned tables across multiple partitions
       + Insert/update/delete on replicated tables



                                                      March 3, 2009   |
Partitions (2/4)

  • Single-partition vs. Multi-partition
select count(*) from orders where customer_id = 5                              select count(*) from orders where product_id = 3
                 single-partition                                                               multi-partition


                                                                          update products set product_name = „spork‟ where product_id = 3
                                                                                        multi-partition




                                                        insert into orders (customer_id, order_id, product_id) values (3,303,2)
                                                                         single-partition




            Partition 1             Partition 2                Partition 3

             1     101     2         2     201      1            3     201     1      table orders :    customer_id (partition key)
             1     101     3         5     501      3            6     601     1      (partitioned)     order_id
             4     401     2         5     502      2            6     601     2                        product_id


             1     knife             1     knife                 1     knife          table products : product_id
             2     spoon             2     spoon                 2     spoon          (replicated)     product_name
             3     fork              3     fork                  3     fork

                                                                                               March 3, 2009    |
Partitions (3/4)

• Looking inside a
  VoltDB partition…
  • Each partition contains
                                                         Work
    data and an execution                                Queue
    engine.
  • The execution engine
    contains a queue for                        execution engine
    transaction requests.
  • Requests are                                    Table Data
    executed sequentially                           Index Data
    (single threaded).

        - Complete copy of all replicated tables
        - Portion of rows (about 1/partitions) of
        all partitioned tables
                                                      March 3, 2009   |
Partitions (4/4)

Partition your tables to maximize the frequency of single-
partition transactions and minimize multi-partition
transactions.
   + Single-partition transaction vs. multi-partition transaction, 1
     unit of time
          s1    s2   s3    s4    s5    s6    s7       s8         s9
   or
          m1    m1   m1    m1    m1    m1    m1       m1         m1

   … now imagine this on a 12 node cluster with 96 partitions




                                             March 3, 2009   |
                                                                       8
Compiling Your Application
                              Schema                        Stored Procedures

• The database is
                            CREATE TABLE HELLOWORLD (                   import org.voltdb. * ;
                                                                           import org.voltdb. * ;
                               HELLO CHAR(15),
                                                                          @ProcInfo( org.voltdb. * ;
                                                                              import
                                                                        @ProcInfo(
                               WORLD CHAR(15),                               partitionInfo = "HELLOWORLD.DIA
                               DIALECT CHAR(15),                            partitionInfo true "HE
                                                                             singlePartition = =
                                                                              @ProcInfo(
                                                                                 partitionInfo = "HELLOWORLD.DIA
                                                                          ) singlePartition = t
                               PRIMARY KEY (DIALECT)                             singlePartition = true



  constructed from          );                                                )
                                                                           public class Insert extends VoltPr
                                                                        public final SQLStmt sql =
                                                                          public final SQLStmt
                                                                             public class Insert extends VoltPr
                                                                              new SQLStmt("INSERT INTO HELLO
                                                                        public VoltTable[] sql =
                                                                             public final SQLStmt run
                                                                                   new SQLStmt("INSERT INTO HELLO
                                                                           public VoltTable[] run( String hel




  • The schema (DDL)
                                                                              public VoltTable[] run( String hel




  • The work load (Java                         Project.xml
    stored procedures)                         <?xml version="1.0"?>
                                               <project>
                                                 <database name='data


  • The Project (users,
                                                   <schema path='ddl.
                                                   <partition table=‘
                                                 </database>
                                               </project>

    groups, partitioning)
• VoltCompiler creates
  application catalog
  • Copy to servers along
    with 1 .jar and 1 .so
  • Start servers

                                                March 3, 2009       |
Clusters/Durability

• Scalability
   • Increase RAM in servers to add capacity
   • Add servers to increase performance / capacity
   • Consistently measuring 90% of single-node
     performance increase per additional node
• High availability
   • K-safety for redundancy
• Snapshots
   • Scheduled, continuous, on demand
• Spooling to external systems
• Disaster Recovery/WAN replication (Future)
   • Asynchronous replication
                                      March 3, 2009   |
Interfacing with VoltDB

• Client applications interface with VoltDB via stored
  procedures
   • Java stored procedures – Java and SQL
   • No ODBC/JDBC
   • Wire protocol: client libraries available for Java, C++, Python,
     PHP, Ruby, and Erlang.
   • HTTP/JSON interface also available.




                                                March 3, 2009   |
                                                                        11
Asynchronous Communications

• Client applications communicate asynchronously with
  VoltDB
   •   Stored procedure invocations are placed “on the wire”
   •   Responses are pulled from the server
   •   Allows a single client application to generate > 100K TPS
   •   Our client library will simulate synchronous if needed


   Traditional
       salary := get_salary(employee_id);

   VoltDB
       callProcedure(asyncCallback, “get_salary”, employee_id);


                                               March 3, 2009   |
                                                                   12
Transaction Control

• VoltDB does not support client-side transaction control
   • Client applications cannot:
       + insert into t_colors (color_name) values („purple‟);
       + rollback;
   • Stored procedures commit if successful, rollback if failed
   • Client code in stored procedure can call for rollback




                                                          March 3, 2009   |
                                                                              13
Lack of concurrency

• Single-threaded execution within partitions (single-
  partition) or across partitions (multi-partition)
• No need to worry about locking/dead-locks
   • great for “inventory” type applications
      + checking inventory levels
      + creating line items for customers
• Because of this, transactions execute in microseconds
• However, single-threaded comes at a price
   • Other transactions wait for running transaction to complete
   • Don‟t do anything crazy in a SP (request web page, send email)
   • Useful for OLTP, not OLAP*
       + However, certain use cases allow for quite a bit of work to be done in a single
         stored procedure (pipeline, staging/transformation, low concurrent users).

                                                         March 3, 2009   |
                                                                                           14
Throughput vs. Latency

• VoltDB is built for throughput over latency
• Latency measured in mid single-digits in a properly sized
  cluster
• Do not estimate latency as (1 / TPS)




                                         March 3, 2009   |
                                                              15
SQL Support

• SELECT, INSERT (using values), UPDATE, and
  DELETE
• Aggregate SQL supports AVG, COUNT, MAX, MIN, SUM
• Materialized views using COUNT and SUM
• Hash and Tree Indexes
• SQL functions and functionality will be added over time,
  for now I do it in Java
• Execution plan for all SQL is created at compile time and
  available for analysis



                                       March 3, 2009   |
                                                              16
SQL in Stored Procedures
• SQL can be parameterized, but not dynamic

     “select * from foo where bar = ?;”      (YES)

     “select * from ? where bar = ?;”        (NO)




                                          March 3, 2009   |
Connecting to the Cluster
• Clients connect to one or more nodes in the
  VoltDB cluster, transactions are forwarded to
  the correct node
  • Clients are not aware of partitioning strategy
  • In the future we may send back data in the
    response indicating if the transaction was sent to
    the correct node.




                                       March 3, 2009   |
Schema Changes
• Traditional OLTP
  • add table…
  • alter table…
• VoltDB
  • modify schema and stored procedures
  • build catalog
  • deploy catalog
• V1.0: Add/drop users, stored procedures
• V1.1: Add/drop tables
• Future: Add/drop column, Add/drop index
                                  March 3, 2009   |
Table/Index Storage
• VoltDB is entirely in-memory
• Cluster must collectively have enough RAM to
  hold all tables/indexes (k + 1 copies)
• Even data distribution is important
• Tables do not return memory of deleted rows,
  they mark, add to freelist, and reuse
• Tree indexes return memory on delete, hash
  indexes do not



                                  March 3, 2009   |
Future…
• WAN replication, asynchronously
• Increased SQL support
• Client libraries
• Performance enhancements, especially multi-
  partition
• Export via JDBC
• Expand cloud support
• Increase cluster k-safety (grow)
• Grow/shrink cluster dynamically (repartition)
                                  March 3, 2009   |
Q&A

• Visit http://voltdb.com to…
  • Download VoltDB
  • Get sample app code

• Join the VoltDB community
  • VoltDB user groups: www.meetup.com/voltdb
  • Follow VoltDB on Twitter @voltdb

• Contact me
  • tcallaghan@voltdb.com (email)
  • @tmcallaghan (Twitter)

                                    March 3, 2009   |
                                                        22

Weitere ähnliche Inhalte

Was ist angesagt?

BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian Lilia Sfaxi
 
La persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateLa persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateYouness Boukouchi
 
02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC 02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC Cellenza
 
Présentation pfe Big Data Hachem SELMI et Ahmed DRIDI
Présentation pfe Big Data Hachem SELMI et Ahmed DRIDIPrésentation pfe Big Data Hachem SELMI et Ahmed DRIDI
Présentation pfe Big Data Hachem SELMI et Ahmed DRIDIHaShem Selmi
 
Laravel 9 comprendre les fondamentaux.
Laravel 9 comprendre les fondamentaux.Laravel 9 comprendre les fondamentaux.
Laravel 9 comprendre les fondamentaux.Valdy Ngouabira
 
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...Hatim CHAHDI
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceLilia Sfaxi
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correctionInes Ouaz
 
Presentation Csharp et winforms
Presentation Csharp et winformsPresentation Csharp et winforms
Presentation Csharp et winformsChristophe Zome
 
Tp1 - OpenERP (1)
Tp1 - OpenERP (1)Tp1 - OpenERP (1)
Tp1 - OpenERP (1)Lilia Sfaxi
 
Cours Big Data Chap2
Cours Big Data Chap2Cours Big Data Chap2
Cours Big Data Chap2Amal Abid
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVCNathaniel Richand
 
Cours Big Data Chap6
Cours Big Data Chap6Cours Big Data Chap6
Cours Big Data Chap6Amal Abid
 
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...NTT DATA Technology & Innovation
 
Introduction au Framework Laravel
Introduction au Framework LaravelIntroduction au Framework Laravel
Introduction au Framework LaravelHoucem Hedhly
 

Was ist angesagt? (20)

BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian
 
La persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateLa persistance des données : ORM et hibernate
La persistance des données : ORM et hibernate
 
02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC 02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC
 
Présentation pfe Big Data Hachem SELMI et Ahmed DRIDI
Présentation pfe Big Data Hachem SELMI et Ahmed DRIDIPrésentation pfe Big Data Hachem SELMI et Ahmed DRIDI
Présentation pfe Big Data Hachem SELMI et Ahmed DRIDI
 
Laravel 9 comprendre les fondamentaux.
Laravel 9 comprendre les fondamentaux.Laravel 9 comprendre les fondamentaux.
Laravel 9 comprendre les fondamentaux.
 
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
 
JAVA
JAVAJAVA
JAVA
 
Une introduction à Hive
Une introduction à HiveUne introduction à Hive
Une introduction à Hive
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-Reduce
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correction
 
Presentation Csharp et winforms
Presentation Csharp et winformsPresentation Csharp et winforms
Presentation Csharp et winforms
 
Tp1 - OpenERP (1)
Tp1 - OpenERP (1)Tp1 - OpenERP (1)
Tp1 - OpenERP (1)
 
Cours Big Data Chap2
Cours Big Data Chap2Cours Big Data Chap2
Cours Big Data Chap2
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
C#
C#C#
C#
 
Cours Big Data Chap6
Cours Big Data Chap6Cours Big Data Chap6
Cours Big Data Chap6
 
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
 
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
 
Hive
HiveHive
Hive
 
Introduction au Framework Laravel
Introduction au Framework LaravelIntroduction au Framework Laravel
Introduction au Framework Laravel
 

Andere mochten auch

Kyle Kingsbury Talks about the Jepsen Test: What VoltDB Learned About Data Ac...
Kyle Kingsbury Talks about the Jepsen Test: What VoltDB Learned About Data Ac...Kyle Kingsbury Talks about the Jepsen Test: What VoltDB Learned About Data Ac...
Kyle Kingsbury Talks about the Jepsen Test: What VoltDB Learned About Data Ac...VoltDB
 
Transforming Your Business with Fast Data – Five Use Case Examples
Transforming Your Business with Fast Data – Five Use Case ExamplesTransforming Your Business with Fast Data – Five Use Case Examples
Transforming Your Business with Fast Data – Five Use Case ExamplesVoltDB
 
Moving Beyond Batch: Transactional Databases for Real-time Data
Moving Beyond Batch: Transactional Databases for Real-time DataMoving Beyond Batch: Transactional Databases for Real-time Data
Moving Beyond Batch: Transactional Databases for Real-time DataVoltDB
 
Understanding the Operational Database Infrastructure for IoT and Fast Data
Understanding the Operational Database Infrastructure for IoT and Fast DataUnderstanding the Operational Database Infrastructure for IoT and Fast Data
Understanding the Operational Database Infrastructure for IoT and Fast DataVoltDB
 
Understanding the Top Four Use Cases for IoT
Understanding the Top Four Use Cases for IoTUnderstanding the Top Four Use Cases for IoT
Understanding the Top Four Use Cases for IoTVoltDB
 
Eat Your Data and Have It Too: Get the Blazing Performance of In-Memory Opera...
Eat Your Data and Have It Too: Get the Blazing Performance of In-Memory Opera...Eat Your Data and Have It Too: Get the Blazing Performance of In-Memory Opera...
Eat Your Data and Have It Too: Get the Blazing Performance of In-Memory Opera...VoltDB
 
VoltDB and HPE Vertica Present: Building an IoT Architecture for Fast + Big Data
VoltDB and HPE Vertica Present: Building an IoT Architecture for Fast + Big DataVoltDB and HPE Vertica Present: Building an IoT Architecture for Fast + Big Data
VoltDB and HPE Vertica Present: Building an IoT Architecture for Fast + Big DataVoltDB
 
Acting on Real-time Behavior: How Peak Games Won Transactions
Acting on Real-time Behavior: How Peak Games Won TransactionsActing on Real-time Behavior: How Peak Games Won Transactions
Acting on Real-time Behavior: How Peak Games Won TransactionsVoltDB
 
Voltdb: Shard It by V. Torshyn
Voltdb: Shard It by V. TorshynVoltdb: Shard It by V. Torshyn
Voltdb: Shard It by V. Torshynvtors
 
Fast Data Choices: 5 Strategies for Evaluating Alternative Business and Techn...
Fast Data Choices: 5 Strategies for Evaluating Alternative Business and Techn...Fast Data Choices: 5 Strategies for Evaluating Alternative Business and Techn...
Fast Data Choices: 5 Strategies for Evaluating Alternative Business and Techn...VoltDB
 
Using a Fast Operational Database to Build Real-time Streaming Aggregations
Using a Fast Operational Database to Build Real-time Streaming AggregationsUsing a Fast Operational Database to Build Real-time Streaming Aggregations
Using a Fast Operational Database to Build Real-time Streaming AggregationsVoltDB
 
Memory Database Technology is Driving a New Cycle of Business Innovation
Memory Database Technology is Driving a New Cycle of Business InnovationMemory Database Technology is Driving a New Cycle of Business Innovation
Memory Database Technology is Driving a New Cycle of Business InnovationVoltDB
 
How to build streaming data applications - evaluating the top contenders
How to build streaming data applications - evaluating the top contendersHow to build streaming data applications - evaluating the top contenders
How to build streaming data applications - evaluating the top contendersAkmal Chaudhri
 
Lessons Learned: The Impact of Fast Data for Personalization
Lessons Learned: The Impact of Fast Data for PersonalizationLessons Learned: The Impact of Fast Data for Personalization
Lessons Learned: The Impact of Fast Data for PersonalizationVoltDB
 
Arguments for a Unified IoT Architecture
Arguments for a Unified IoT ArchitectureArguments for a Unified IoT Architecture
Arguments for a Unified IoT ArchitectureVoltDB
 
VoltDB and Flytxt Present: Building a Single Technology Platform for Real-Tim...
VoltDB and Flytxt Present: Building a Single Technology Platform for Real-Tim...VoltDB and Flytxt Present: Building a Single Technology Platform for Real-Tim...
VoltDB and Flytxt Present: Building a Single Technology Platform for Real-Tim...VoltDB
 
Powering Fast Data and the Hadoop Ecosystem with VoltDB and Hortonworks
Powering Fast Data and the Hadoop Ecosystem with VoltDB and HortonworksPowering Fast Data and the Hadoop Ecosystem with VoltDB and Hortonworks
Powering Fast Data and the Hadoop Ecosystem with VoltDB and HortonworksHortonworks
 
Real time Analytics with Apache Kafka and Apache Spark
Real time Analytics with Apache Kafka and Apache SparkReal time Analytics with Apache Kafka and Apache Spark
Real time Analytics with Apache Kafka and Apache SparkRahul Jain
 

Andere mochten auch (18)

Kyle Kingsbury Talks about the Jepsen Test: What VoltDB Learned About Data Ac...
Kyle Kingsbury Talks about the Jepsen Test: What VoltDB Learned About Data Ac...Kyle Kingsbury Talks about the Jepsen Test: What VoltDB Learned About Data Ac...
Kyle Kingsbury Talks about the Jepsen Test: What VoltDB Learned About Data Ac...
 
Transforming Your Business with Fast Data – Five Use Case Examples
Transforming Your Business with Fast Data – Five Use Case ExamplesTransforming Your Business with Fast Data – Five Use Case Examples
Transforming Your Business with Fast Data – Five Use Case Examples
 
Moving Beyond Batch: Transactional Databases for Real-time Data
Moving Beyond Batch: Transactional Databases for Real-time DataMoving Beyond Batch: Transactional Databases for Real-time Data
Moving Beyond Batch: Transactional Databases for Real-time Data
 
Understanding the Operational Database Infrastructure for IoT and Fast Data
Understanding the Operational Database Infrastructure for IoT and Fast DataUnderstanding the Operational Database Infrastructure for IoT and Fast Data
Understanding the Operational Database Infrastructure for IoT and Fast Data
 
Understanding the Top Four Use Cases for IoT
Understanding the Top Four Use Cases for IoTUnderstanding the Top Four Use Cases for IoT
Understanding the Top Four Use Cases for IoT
 
Eat Your Data and Have It Too: Get the Blazing Performance of In-Memory Opera...
Eat Your Data and Have It Too: Get the Blazing Performance of In-Memory Opera...Eat Your Data and Have It Too: Get the Blazing Performance of In-Memory Opera...
Eat Your Data and Have It Too: Get the Blazing Performance of In-Memory Opera...
 
VoltDB and HPE Vertica Present: Building an IoT Architecture for Fast + Big Data
VoltDB and HPE Vertica Present: Building an IoT Architecture for Fast + Big DataVoltDB and HPE Vertica Present: Building an IoT Architecture for Fast + Big Data
VoltDB and HPE Vertica Present: Building an IoT Architecture for Fast + Big Data
 
Acting on Real-time Behavior: How Peak Games Won Transactions
Acting on Real-time Behavior: How Peak Games Won TransactionsActing on Real-time Behavior: How Peak Games Won Transactions
Acting on Real-time Behavior: How Peak Games Won Transactions
 
Voltdb: Shard It by V. Torshyn
Voltdb: Shard It by V. TorshynVoltdb: Shard It by V. Torshyn
Voltdb: Shard It by V. Torshyn
 
Fast Data Choices: 5 Strategies for Evaluating Alternative Business and Techn...
Fast Data Choices: 5 Strategies for Evaluating Alternative Business and Techn...Fast Data Choices: 5 Strategies for Evaluating Alternative Business and Techn...
Fast Data Choices: 5 Strategies for Evaluating Alternative Business and Techn...
 
Using a Fast Operational Database to Build Real-time Streaming Aggregations
Using a Fast Operational Database to Build Real-time Streaming AggregationsUsing a Fast Operational Database to Build Real-time Streaming Aggregations
Using a Fast Operational Database to Build Real-time Streaming Aggregations
 
Memory Database Technology is Driving a New Cycle of Business Innovation
Memory Database Technology is Driving a New Cycle of Business InnovationMemory Database Technology is Driving a New Cycle of Business Innovation
Memory Database Technology is Driving a New Cycle of Business Innovation
 
How to build streaming data applications - evaluating the top contenders
How to build streaming data applications - evaluating the top contendersHow to build streaming data applications - evaluating the top contenders
How to build streaming data applications - evaluating the top contenders
 
Lessons Learned: The Impact of Fast Data for Personalization
Lessons Learned: The Impact of Fast Data for PersonalizationLessons Learned: The Impact of Fast Data for Personalization
Lessons Learned: The Impact of Fast Data for Personalization
 
Arguments for a Unified IoT Architecture
Arguments for a Unified IoT ArchitectureArguments for a Unified IoT Architecture
Arguments for a Unified IoT Architecture
 
VoltDB and Flytxt Present: Building a Single Technology Platform for Real-Tim...
VoltDB and Flytxt Present: Building a Single Technology Platform for Real-Tim...VoltDB and Flytxt Present: Building a Single Technology Platform for Real-Tim...
VoltDB and Flytxt Present: Building a Single Technology Platform for Real-Tim...
 
Powering Fast Data and the Hadoop Ecosystem with VoltDB and Hortonworks
Powering Fast Data and the Hadoop Ecosystem with VoltDB and HortonworksPowering Fast Data and the Hadoop Ecosystem with VoltDB and Hortonworks
Powering Fast Data and the Hadoop Ecosystem with VoltDB and Hortonworks
 
Real time Analytics with Apache Kafka and Apache Spark
Real time Analytics with Apache Kafka and Apache SparkReal time Analytics with Apache Kafka and Apache Spark
Real time Analytics with Apache Kafka and Apache Spark
 

Ähnlich wie VoltDB : A Technical Overview

NewSQL Database Overview
NewSQL Database OverviewNewSQL Database Overview
NewSQL Database OverviewSteve Min
 
Riak add presentation
Riak add presentationRiak add presentation
Riak add presentationIlya Bogunov
 
[INSIGHT OUT 2011] B26 optimising a two table join(jonathan lewis)
[INSIGHT OUT 2011] B26 optimising a two table join(jonathan lewis)[INSIGHT OUT 2011] B26 optimising a two table join(jonathan lewis)
[INSIGHT OUT 2011] B26 optimising a two table join(jonathan lewis)Insight Technology, Inc.
 
Things you should know about Oracle truncate
Things you should know about Oracle truncateThings you should know about Oracle truncate
Things you should know about Oracle truncateKazuhiro Takahashi
 
[嵌入式系統] MCS-51 實驗 - 使用 IAR (3)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (3)[嵌入式系統] MCS-51 實驗 - 使用 IAR (3)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (3)Simen Li
 
Supporting Over a Thousand Custom Hive User Defined Functions
Supporting Over a Thousand Custom Hive User Defined FunctionsSupporting Over a Thousand Custom Hive User Defined Functions
Supporting Over a Thousand Custom Hive User Defined FunctionsDatabricks
 
Hidden pearls for High-Performance-Persistence
Hidden pearls for High-Performance-PersistenceHidden pearls for High-Performance-Persistence
Hidden pearls for High-Performance-PersistenceSven Ruppert
 
Fortran & Link with Library & Brief Explanation of MKL BLAS
Fortran & Link with Library & Brief Explanation of MKL BLASFortran & Link with Library & Brief Explanation of MKL BLAS
Fortran & Link with Library & Brief Explanation of MKL BLASJongsu "Liam" Kim
 
High Performance, High Reliability Data Loading on ClickHouse
High Performance, High Reliability Data Loading on ClickHouseHigh Performance, High Reliability Data Loading on ClickHouse
High Performance, High Reliability Data Loading on ClickHouseAltinity Ltd
 
Introduction to Apache Spark
Introduction to Apache SparkIntroduction to Apache Spark
Introduction to Apache SparkDatio Big Data
 
Real-Time Streaming with Apache Spark Streaming and Apache Storm
Real-Time Streaming with Apache Spark Streaming and Apache StormReal-Time Streaming with Apache Spark Streaming and Apache Storm
Real-Time Streaming with Apache Spark Streaming and Apache StormDavorin Vukelic
 
Drizzles Approach To Improving Performance Of The Server
Drizzles  Approach To  Improving  Performance Of The  ServerDrizzles  Approach To  Improving  Performance Of The  Server
Drizzles Approach To Improving Performance Of The ServerPerconaPerformance
 
vSAN Beyond The Basics
vSAN Beyond The BasicsvSAN Beyond The Basics
vSAN Beyond The BasicsSumit Lahiri
 

Ähnlich wie VoltDB : A Technical Overview (20)

NewSQL Database Overview
NewSQL Database OverviewNewSQL Database Overview
NewSQL Database Overview
 
VoltDB.ppt
VoltDB.pptVoltDB.ppt
VoltDB.ppt
 
SQLFire at Strata 2012
SQLFire at Strata 2012SQLFire at Strata 2012
SQLFire at Strata 2012
 
VLSI
VLSIVLSI
VLSI
 
Riak add presentation
Riak add presentationRiak add presentation
Riak add presentation
 
VLSI
VLSIVLSI
VLSI
 
[INSIGHT OUT 2011] B26 optimising a two table join(jonathan lewis)
[INSIGHT OUT 2011] B26 optimising a two table join(jonathan lewis)[INSIGHT OUT 2011] B26 optimising a two table join(jonathan lewis)
[INSIGHT OUT 2011] B26 optimising a two table join(jonathan lewis)
 
Things you should know about Oracle truncate
Things you should know about Oracle truncateThings you should know about Oracle truncate
Things you should know about Oracle truncate
 
[嵌入式系統] MCS-51 實驗 - 使用 IAR (3)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (3)[嵌入式系統] MCS-51 實驗 - 使用 IAR (3)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (3)
 
Hive: Loading Data
Hive: Loading DataHive: Loading Data
Hive: Loading Data
 
Supporting Over a Thousand Custom Hive User Defined Functions
Supporting Over a Thousand Custom Hive User Defined FunctionsSupporting Over a Thousand Custom Hive User Defined Functions
Supporting Over a Thousand Custom Hive User Defined Functions
 
Hidden pearls for High-Performance-Persistence
Hidden pearls for High-Performance-PersistenceHidden pearls for High-Performance-Persistence
Hidden pearls for High-Performance-Persistence
 
Fortran & Link with Library & Brief Explanation of MKL BLAS
Fortran & Link with Library & Brief Explanation of MKL BLASFortran & Link with Library & Brief Explanation of MKL BLAS
Fortran & Link with Library & Brief Explanation of MKL BLAS
 
Meetup talk
Meetup talkMeetup talk
Meetup talk
 
High Performance, High Reliability Data Loading on ClickHouse
High Performance, High Reliability Data Loading on ClickHouseHigh Performance, High Reliability Data Loading on ClickHouse
High Performance, High Reliability Data Loading on ClickHouse
 
Apache Storm Tutorial
Apache Storm TutorialApache Storm Tutorial
Apache Storm Tutorial
 
Introduction to Apache Spark
Introduction to Apache SparkIntroduction to Apache Spark
Introduction to Apache Spark
 
Real-Time Streaming with Apache Spark Streaming and Apache Storm
Real-Time Streaming with Apache Spark Streaming and Apache StormReal-Time Streaming with Apache Spark Streaming and Apache Storm
Real-Time Streaming with Apache Spark Streaming and Apache Storm
 
Drizzles Approach To Improving Performance Of The Server
Drizzles  Approach To  Improving  Performance Of The  ServerDrizzles  Approach To  Improving  Performance Of The  Server
Drizzles Approach To Improving Performance Of The Server
 
vSAN Beyond The Basics
vSAN Beyond The BasicsvSAN Beyond The Basics
vSAN Beyond The Basics
 

Mehr von Tim Callaghan

Is It Fast? : Measuring MongoDB Performance
Is It Fast? : Measuring MongoDB PerformanceIs It Fast? : Measuring MongoDB Performance
Is It Fast? : Measuring MongoDB PerformanceTim Callaghan
 
Benchmarking MongoDB for Fame and Fortune
Benchmarking MongoDB for Fame and FortuneBenchmarking MongoDB for Fame and Fortune
Benchmarking MongoDB for Fame and FortuneTim Callaghan
 
So you want to be a software developer? (version 2.0)
So you want to be a software developer? (version 2.0)So you want to be a software developer? (version 2.0)
So you want to be a software developer? (version 2.0)Tim Callaghan
 
Performance Benchmarking: Tips, Tricks, and Lessons Learned
Performance Benchmarking: Tips, Tricks, and Lessons LearnedPerformance Benchmarking: Tips, Tricks, and Lessons Learned
Performance Benchmarking: Tips, Tricks, and Lessons LearnedTim Callaghan
 
Introduction to TokuDB v7.5 and Read Free Replication
Introduction to TokuDB v7.5 and Read Free ReplicationIntroduction to TokuDB v7.5 and Read Free Replication
Introduction to TokuDB v7.5 and Read Free ReplicationTim Callaghan
 
Use Your MySQL Knowledge to Become an Instant Cassandra Guru
Use Your MySQL Knowledge to Become an Instant Cassandra GuruUse Your MySQL Knowledge to Become an Instant Cassandra Guru
Use Your MySQL Knowledge to Become an Instant Cassandra GuruTim Callaghan
 
5 Pitfalls to Avoid with MongoDB
5 Pitfalls to Avoid with MongoDB5 Pitfalls to Avoid with MongoDB
5 Pitfalls to Avoid with MongoDBTim Callaghan
 
Get More Out of MySQL with TokuDB
Get More Out of MySQL with TokuDBGet More Out of MySQL with TokuDB
Get More Out of MySQL with TokuDBTim Callaghan
 
Get More Out of MongoDB with TokuMX
Get More Out of MongoDB with TokuMXGet More Out of MongoDB with TokuMX
Get More Out of MongoDB with TokuMXTim Callaghan
 
Use Your MySQL Knowledge to Become a MongoDB Guru
Use Your MySQL Knowledge to Become a MongoDB GuruUse Your MySQL Knowledge to Become a MongoDB Guru
Use Your MySQL Knowledge to Become a MongoDB GuruTim Callaghan
 
Fractal Tree Indexes : From Theory to Practice
Fractal Tree Indexes : From Theory to PracticeFractal Tree Indexes : From Theory to Practice
Fractal Tree Indexes : From Theory to PracticeTim Callaghan
 
Creating a Benchmarking Infrastructure That Just Works
Creating a Benchmarking Infrastructure That Just WorksCreating a Benchmarking Infrastructure That Just Works
Creating a Benchmarking Infrastructure That Just WorksTim Callaghan
 

Mehr von Tim Callaghan (12)

Is It Fast? : Measuring MongoDB Performance
Is It Fast? : Measuring MongoDB PerformanceIs It Fast? : Measuring MongoDB Performance
Is It Fast? : Measuring MongoDB Performance
 
Benchmarking MongoDB for Fame and Fortune
Benchmarking MongoDB for Fame and FortuneBenchmarking MongoDB for Fame and Fortune
Benchmarking MongoDB for Fame and Fortune
 
So you want to be a software developer? (version 2.0)
So you want to be a software developer? (version 2.0)So you want to be a software developer? (version 2.0)
So you want to be a software developer? (version 2.0)
 
Performance Benchmarking: Tips, Tricks, and Lessons Learned
Performance Benchmarking: Tips, Tricks, and Lessons LearnedPerformance Benchmarking: Tips, Tricks, and Lessons Learned
Performance Benchmarking: Tips, Tricks, and Lessons Learned
 
Introduction to TokuDB v7.5 and Read Free Replication
Introduction to TokuDB v7.5 and Read Free ReplicationIntroduction to TokuDB v7.5 and Read Free Replication
Introduction to TokuDB v7.5 and Read Free Replication
 
Use Your MySQL Knowledge to Become an Instant Cassandra Guru
Use Your MySQL Knowledge to Become an Instant Cassandra GuruUse Your MySQL Knowledge to Become an Instant Cassandra Guru
Use Your MySQL Knowledge to Become an Instant Cassandra Guru
 
5 Pitfalls to Avoid with MongoDB
5 Pitfalls to Avoid with MongoDB5 Pitfalls to Avoid with MongoDB
5 Pitfalls to Avoid with MongoDB
 
Get More Out of MySQL with TokuDB
Get More Out of MySQL with TokuDBGet More Out of MySQL with TokuDB
Get More Out of MySQL with TokuDB
 
Get More Out of MongoDB with TokuMX
Get More Out of MongoDB with TokuMXGet More Out of MongoDB with TokuMX
Get More Out of MongoDB with TokuMX
 
Use Your MySQL Knowledge to Become a MongoDB Guru
Use Your MySQL Knowledge to Become a MongoDB GuruUse Your MySQL Knowledge to Become a MongoDB Guru
Use Your MySQL Knowledge to Become a MongoDB Guru
 
Fractal Tree Indexes : From Theory to Practice
Fractal Tree Indexes : From Theory to PracticeFractal Tree Indexes : From Theory to Practice
Fractal Tree Indexes : From Theory to Practice
 
Creating a Benchmarking Infrastructure That Just Works
Creating a Benchmarking Infrastructure That Just WorksCreating a Benchmarking Infrastructure That Just Works
Creating a Benchmarking Infrastructure That Just Works
 

Kürzlich hochgeladen

Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 

Kürzlich hochgeladen (20)

Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 

VoltDB : A Technical Overview

  • 1. VoltDB: Technical Overview 20101019 Tim Callaghan, VoltDB Field Engineer tcallaghan@voltdb.com
  • 2. Before I Begin… VoltDB is available in community and commercial editions Runs on Linux + Mac* I am “Mark Callaghan’s lesser-known but nonetheless smart brother” [C. Monash]* *http://www.dbms2.com/2010/05/25/voltdb-finally-launches/ March 3, 2009 | 2
  • 3. Scaling Traditional OLTP Databases • Sharding improves performance but introduces… • Management complexity + disjointed backup/recovery and replication + manual effort to re-partition data X X • Application complexity + shard awareness + cross partition joins + cross partition transactions X • And, each shard still suffers from traditionalXOLTPX performance limitations • If you can shard, your application is probably great in VoltDB. March 3, 2009 |
  • 4. Technical Overview • “OLTP Through the Looking Glass” http://cs-www.cs.yale.edu/homes/dna/papers/oltpperf-sigmod08.pdf • VoltDB avoids the overhead of traditional databases • K-safety for fault tolerance - no logging • In memory operation for maximum throughput - no buffer management • Partitions operate autonomously and single-threaded - no latching or locking • Built to horizontally scale March 3, 2009 | 4
  • 5. Partitions (1/4) • 1 partition per physical CPU core • Each physical server has multiple VoltDB partitions • Data - Two types of tables • Partitioned + Single column serves as partitioning key X + Rows are spread across all VoltDB partitions by partition column X + Transactional data (high frequency of modification) • Replicated + All rows exist within all VoltDB partitions + Relatively static data (low frequency of modification) • Code - Two types of work – both ACID • Single-Partition X + All insert/update/delete operations within single partition X X + Majority of transactional workload • Multi-Partition + CRUD against partitioned tables across multiple partitions + Insert/update/delete on replicated tables March 3, 2009 |
  • 6. Partitions (2/4) • Single-partition vs. Multi-partition select count(*) from orders where customer_id = 5 select count(*) from orders where product_id = 3 single-partition multi-partition update products set product_name = „spork‟ where product_id = 3 multi-partition insert into orders (customer_id, order_id, product_id) values (3,303,2) single-partition Partition 1 Partition 2 Partition 3 1 101 2 2 201 1 3 201 1 table orders : customer_id (partition key) 1 101 3 5 501 3 6 601 1 (partitioned) order_id 4 401 2 5 502 2 6 601 2 product_id 1 knife 1 knife 1 knife table products : product_id 2 spoon 2 spoon 2 spoon (replicated) product_name 3 fork 3 fork 3 fork March 3, 2009 |
  • 7. Partitions (3/4) • Looking inside a VoltDB partition… • Each partition contains Work data and an execution Queue engine. • The execution engine contains a queue for execution engine transaction requests. • Requests are Table Data executed sequentially Index Data (single threaded). - Complete copy of all replicated tables - Portion of rows (about 1/partitions) of all partitioned tables March 3, 2009 |
  • 8. Partitions (4/4) Partition your tables to maximize the frequency of single- partition transactions and minimize multi-partition transactions. + Single-partition transaction vs. multi-partition transaction, 1 unit of time s1 s2 s3 s4 s5 s6 s7 s8 s9 or m1 m1 m1 m1 m1 m1 m1 m1 m1 … now imagine this on a 12 node cluster with 96 partitions March 3, 2009 | 8
  • 9. Compiling Your Application Schema Stored Procedures • The database is CREATE TABLE HELLOWORLD ( import org.voltdb. * ; import org.voltdb. * ; HELLO CHAR(15), @ProcInfo( org.voltdb. * ; import @ProcInfo( WORLD CHAR(15), partitionInfo = "HELLOWORLD.DIA DIALECT CHAR(15), partitionInfo true "HE singlePartition = = @ProcInfo( partitionInfo = "HELLOWORLD.DIA ) singlePartition = t PRIMARY KEY (DIALECT) singlePartition = true constructed from ); ) public class Insert extends VoltPr public final SQLStmt sql = public final SQLStmt public class Insert extends VoltPr new SQLStmt("INSERT INTO HELLO public VoltTable[] sql = public final SQLStmt run new SQLStmt("INSERT INTO HELLO public VoltTable[] run( String hel • The schema (DDL) public VoltTable[] run( String hel • The work load (Java Project.xml stored procedures) <?xml version="1.0"?> <project> <database name='data • The Project (users, <schema path='ddl. <partition table=‘ </database> </project> groups, partitioning) • VoltCompiler creates application catalog • Copy to servers along with 1 .jar and 1 .so • Start servers March 3, 2009 |
  • 10. Clusters/Durability • Scalability • Increase RAM in servers to add capacity • Add servers to increase performance / capacity • Consistently measuring 90% of single-node performance increase per additional node • High availability • K-safety for redundancy • Snapshots • Scheduled, continuous, on demand • Spooling to external systems • Disaster Recovery/WAN replication (Future) • Asynchronous replication March 3, 2009 |
  • 11. Interfacing with VoltDB • Client applications interface with VoltDB via stored procedures • Java stored procedures – Java and SQL • No ODBC/JDBC • Wire protocol: client libraries available for Java, C++, Python, PHP, Ruby, and Erlang. • HTTP/JSON interface also available. March 3, 2009 | 11
  • 12. Asynchronous Communications • Client applications communicate asynchronously with VoltDB • Stored procedure invocations are placed “on the wire” • Responses are pulled from the server • Allows a single client application to generate > 100K TPS • Our client library will simulate synchronous if needed Traditional salary := get_salary(employee_id); VoltDB callProcedure(asyncCallback, “get_salary”, employee_id); March 3, 2009 | 12
  • 13. Transaction Control • VoltDB does not support client-side transaction control • Client applications cannot: + insert into t_colors (color_name) values („purple‟); + rollback; • Stored procedures commit if successful, rollback if failed • Client code in stored procedure can call for rollback March 3, 2009 | 13
  • 14. Lack of concurrency • Single-threaded execution within partitions (single- partition) or across partitions (multi-partition) • No need to worry about locking/dead-locks • great for “inventory” type applications + checking inventory levels + creating line items for customers • Because of this, transactions execute in microseconds • However, single-threaded comes at a price • Other transactions wait for running transaction to complete • Don‟t do anything crazy in a SP (request web page, send email) • Useful for OLTP, not OLAP* + However, certain use cases allow for quite a bit of work to be done in a single stored procedure (pipeline, staging/transformation, low concurrent users). March 3, 2009 | 14
  • 15. Throughput vs. Latency • VoltDB is built for throughput over latency • Latency measured in mid single-digits in a properly sized cluster • Do not estimate latency as (1 / TPS) March 3, 2009 | 15
  • 16. SQL Support • SELECT, INSERT (using values), UPDATE, and DELETE • Aggregate SQL supports AVG, COUNT, MAX, MIN, SUM • Materialized views using COUNT and SUM • Hash and Tree Indexes • SQL functions and functionality will be added over time, for now I do it in Java • Execution plan for all SQL is created at compile time and available for analysis March 3, 2009 | 16
  • 17. SQL in Stored Procedures • SQL can be parameterized, but not dynamic “select * from foo where bar = ?;” (YES) “select * from ? where bar = ?;” (NO) March 3, 2009 |
  • 18. Connecting to the Cluster • Clients connect to one or more nodes in the VoltDB cluster, transactions are forwarded to the correct node • Clients are not aware of partitioning strategy • In the future we may send back data in the response indicating if the transaction was sent to the correct node. March 3, 2009 |
  • 19. Schema Changes • Traditional OLTP • add table… • alter table… • VoltDB • modify schema and stored procedures • build catalog • deploy catalog • V1.0: Add/drop users, stored procedures • V1.1: Add/drop tables • Future: Add/drop column, Add/drop index March 3, 2009 |
  • 20. Table/Index Storage • VoltDB is entirely in-memory • Cluster must collectively have enough RAM to hold all tables/indexes (k + 1 copies) • Even data distribution is important • Tables do not return memory of deleted rows, they mark, add to freelist, and reuse • Tree indexes return memory on delete, hash indexes do not March 3, 2009 |
  • 21. Future… • WAN replication, asynchronously • Increased SQL support • Client libraries • Performance enhancements, especially multi- partition • Export via JDBC • Expand cloud support • Increase cluster k-safety (grow) • Grow/shrink cluster dynamically (repartition) March 3, 2009 |
  • 22. Q&A • Visit http://voltdb.com to… • Download VoltDB • Get sample app code • Join the VoltDB community • VoltDB user groups: www.meetup.com/voltdb • Follow VoltDB on Twitter @voltdb • Contact me • tcallaghan@voltdb.com (email) • @tmcallaghan (Twitter) March 3, 2009 | 22