SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

What's new in Scala 2.13?
What's new in Scala 2.13?What's new in Scala 2.13?
What's new in Scala 2.13?Hermann Hueck
 
Outgoing Call Flow ~ Android ( < Nougat).
Outgoing Call Flow ~ Android ( < Nougat).Outgoing Call Flow ~ Android ( < Nougat).
Outgoing Call Flow ~ Android ( < Nougat).Arindom Saikia
 
Block I/O Layer Tracing: blktrace
Block I/O Layer Tracing: blktraceBlock I/O Layer Tracing: blktrace
Block I/O Layer Tracing: blktraceBabak Farrokhi
 
03. empaquetado de aplicaciones jee
03. empaquetado de aplicaciones jee03. empaquetado de aplicaciones jee
03. empaquetado de aplicaciones jeeyennylou
 
HFile: A Block-Indexed File Format to Store Sorted Key-Value Pairs
HFile: A Block-Indexed File Format to Store Sorted Key-Value PairsHFile: A Block-Indexed File Format to Store Sorted Key-Value Pairs
HFile: A Block-Indexed File Format to Store Sorted Key-Value PairsSchubert Zhang
 
Collections In Java
Collections In JavaCollections In Java
Collections In JavaBinoj T E
 
New features-in-abap-7.4
New features-in-abap-7.4New features-in-abap-7.4
New features-in-abap-7.4swati chavan
 
Collection Framework in java
Collection Framework in javaCollection Framework in java
Collection Framework in javaCPD INDIA
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring FrameworkDineesha Suraweera
 
Julien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsJulien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsWeb à Québec
 
db2dart and inspect
db2dart and inspectdb2dart and inspect
db2dart and inspectdbawork
 

La actualidad más candente (20)

Java
JavaJava
Java
 
JVM
JVMJVM
JVM
 
What's new in Scala 2.13?
What's new in Scala 2.13?What's new in Scala 2.13?
What's new in Scala 2.13?
 
Django in the Real World
Django in the Real WorldDjango in the Real World
Django in the Real World
 
Basics of-linux
Basics of-linuxBasics of-linux
Basics of-linux
 
Outgoing Call Flow ~ Android ( < Nougat).
Outgoing Call Flow ~ Android ( < Nougat).Outgoing Call Flow ~ Android ( < Nougat).
Outgoing Call Flow ~ Android ( < Nougat).
 
Block I/O Layer Tracing: blktrace
Block I/O Layer Tracing: blktraceBlock I/O Layer Tracing: blktrace
Block I/O Layer Tracing: blktrace
 
Java basic
Java basicJava basic
Java basic
 
03. empaquetado de aplicaciones jee
03. empaquetado de aplicaciones jee03. empaquetado de aplicaciones jee
03. empaquetado de aplicaciones jee
 
HFile: A Block-Indexed File Format to Store Sorted Key-Value Pairs
HFile: A Block-Indexed File Format to Store Sorted Key-Value PairsHFile: A Block-Indexed File Format to Store Sorted Key-Value Pairs
HFile: A Block-Indexed File Format to Store Sorted Key-Value Pairs
 
Collections In Java
Collections In JavaCollections In Java
Collections In Java
 
Apache Spark Core
Apache Spark CoreApache Spark Core
Apache Spark Core
 
New features-in-abap-7.4
New features-in-abap-7.4New features-in-abap-7.4
New features-in-abap-7.4
 
Byte code jvm
Byte code jvmByte code jvm
Byte code jvm
 
AtoM's Command Line Tasks - An Introduction
AtoM's Command Line Tasks - An IntroductionAtoM's Command Line Tasks - An Introduction
AtoM's Command Line Tasks - An Introduction
 
Scala Intro
Scala IntroScala Intro
Scala Intro
 
Collection Framework in java
Collection Framework in javaCollection Framework in java
Collection Framework in java
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
Julien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printempsJulien Maitrehenry - Docker, ça mange quoi au printemps
Julien Maitrehenry - Docker, ça mange quoi au printemps
 
db2dart and inspect
db2dart and inspectdb2dart and inspect
db2dart and inspect
 

Destacado

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
 

Destacado (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
 

Similar a 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
 

Similar a 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
 

Más de 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
 

Más de 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
 

Último

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 

Último (20)

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
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
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 

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