VoltDB
This presentation is the property of its rightful owner.
Sponsored Links
1 / 23

VoltDB 入门介绍 PowerPoint PPT Presentation


  • 377 Views
  • Uploaded on
  • Presentation posted in: General

VoltDB 入门介绍. 概要. 一、 Technical Overview 二、 Technical Action 三、 Demo 演示. Technical Overview . What is VoltDB? It’s an open-source OLTP database that is designed to run on a cluster. It is an in-memory shared-nothing system. Tables are partitioned across multiple servers in the cluster.

Download Presentation

VoltDB 入门介绍

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Voltdb

VoltDB入门介绍


Voltdb

概要

一、Technical Overview

二、Technical Action

三、Demo演示


Voltdb

Technical Overview

What is VoltDB?

  • It’s an open-source OLTP database that is designed to run on a cluster.

  • It is an in-memory shared-nothing system.

  • Tables are partitioned across multiple servers in the cluster.


Voltdb

Technical Overview

VoltDB的优点:

  • 可以提供比传统数据库系统好很多的性能。

  • 可以线性扩展。

  • 兼容SQL作为数据库管理操作接口。

  • 兼容ACID,满足数据一致与完整性。

  • 7*24*365高可用。


Voltdb

Technical Overview

如何实现ACID:

  • 原子性(Atomicity):

  • VoltDB通过使用存储过程来确保原子性,一个存储过程执行必须等待前一个存储过程成功或回滚结束。

  • 一致性(Consistency):

  • VoltDB在所有的数据库查询中强制schema与数据类型约束. 

  • 隔绝性(Isolation,又称独立性): 

  • VoltDB事务全局(所有被影响的分区)顺序执行(没有交叉)(任何一个分区同一时间只有一个执行,即串行的)。

  • 持久性(Durability):

  • VoltDB提供分区复制以及周期性的数据库snapshot,确保数据持久化。


Voltdb

Technical Overview

VoltDB的架构:

VoltDB数据库是一个分布式,可扩展,shared-nothing的内存数据库。使用JAVA 写的存储过程来定义事务。使用标准SQL访问数据,使用并行的单线程处理方式确保数据一致性,同时避免了传统数据库的锁,插销,资源管理开销。


Voltdb

Technical Overview

VoltDB的事务提交:

  • 运行前,用户自己写存储过程,并提交给服务端。

  • 运行时,用户程序调用存储过程完成事务操作,所有事务的运行逻辑是由VoltDB在服务器进程中完成的。

  • 缺点?


Voltdb

Technical Overview

VoltDB的数据分布:

  • 结构基于SNA。

  • 数据分布策略是基于哈希的。

  • 采用这种方法后,集群的规模是事先确定好的,新增机器需要停止服务后重新分布数据。另外,数据哈希被分散后,数据的连续性被打乱了,在这个数据结构上做范围查询需要动用服务这张表的所有机器,处理范围查询会很低效。


Voltdb

Technical Overview

VoltDB的事务处理:

  • 依赖NTP服务进行各节点之间的时间同步。

  • 多个事务在多个服务器节点同时执行,

  • 如果事务之间有冲突,那么事务的执行是完全隔离的,即达到SERIALIZABLE ISOLATION。

  • 事先分析好存储过程之间的关系,如果两个事务可能存在冲突,则不让这两个进程在同一个时间执行。

  • 并发处理中,每一个事务在执行之前都要等待一个Round Trip时间,VoltDB已经进行了优化。


Voltdb

Technical Overview

VoltDB的性能(官方):

VoltDB is very scalable; it should scale to 120 partitions, 39 servers, and 1.6 million complex transactions per second at over 300 CPU cores,

VoltDB 宣称具备非常高的可伸缩性,超过 120 个分区、39台服务器,可在 300 个 CPU 核心上每秒钟处理 160 万的复杂事务。

测试例子


Voltdb

Technical Overview

VoltDB的局限性:

  • 灵活性&扩展性。必须停止服务进行修改而不能动态修改。

  • SQL语法支持,不支持动态sql,不支持or语法。

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

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

  • 性能?


  • Voltdb

    Technical Overview

    VoltDB的适用场景:

    VoltDB适合OLTP系统,单个事务较小,但是事务总量非常之多的应用。比如金融,零售,WEB2.0等传统OLTP应用。

    http://voltdb.com/customers正在使用VoltDB的一些公司


    Voltdb

    Technical Action

    VoltDB的运行要求:


    Voltdb

    Technical Action

    VoltDB的安装:

    $ tar -zxvf voltdb-2.1.tar.gz -C $HOME/

    $ sudo tar -zxvf voltdb-2.1.tar.gz -C /opt

    $ cd /opt

    $ sudomv voltdb-2.1 voltdb


    Voltdb

    Technical Action

    • VoltDBApplication step by step:

    • Defining the Database Schema

    • Writing the Stored Procedure for CRUD

    • Writing the Client Application

    • Creating the Project Definition

    • Building the Application

    • Run


    Voltdb

    Technical Action

    • 分表字段:

    • 建表时的主键索引不一定是voltdb里的分表字段(Partitioning column)。

    • 分表字段是根据业务,频率来确定的,确定的分表字段需要在项目定义文件和存储过程文件中指明。

    • @ProcInfo(

    • singlePartition = true,

    • partitionInfo = "Reservation.FlightID: 0"

    • )

    • <partition table="Reservation" column="FlightID">


    Voltdb

    Technical Action

    • 分表字段的建立规则:

    • 任意的int或string型字段都可以作为分表字段,类似索引,从上下文看是全局的。

    • 对于每一个表来说分表字段有且只能有一个,如果有两个或以上的字段需要作为分表字段,就用这些字段组合起来形成一个新字段来做。

    • 分表字段不能为null,可以为empty或0,分表字段的值不需要唯一。


    Voltdb

    Technical Action

    • Replicated Tables:

    • VoltDB里如果不在项目定义文件中特别指定一个表有分表字段,则这个表默认被复制(Replicated)。

    • 可以复制的表要满足的条件:Small, mostly read-only tables can be replicated。


    Voltdb

    Technical Action

    VoltDB stored procedure(一般形式):

    import org.voltdb.*;

    @ProcInfo( singlePartition = true|false,

    partitionInfo = "Table-name.Column-name: 0" )

    public class Procedure-name extends VoltProcedure

    {

    // Declare SQL statements ...

    public datatype run ( arguments ) throws VoltAbortException

    {

    // Body of the Stored Procedure ...

    }

    }


    Voltdb

    Technical Action

    • Default Procedures for Partitioned Tables:

    • 表名大写,存储过程名小写。

    • 针对最常用的insert、select、update和delete。

    • Insert操作,参数按表结构定义的顺序排列。

    • Select和delete只要主键。

    • Update操作,参数也要按表结构定义的顺序排列,主键要出现两次。

    • client.callProcedure("HELLOWORLD.insert","Howdy","Earth","American");

    • client.callProcedure("HELLOWORLD.select“,"American").getResults();

    • client.callProcedure("HELLOWORLD.update“,"Yo","Biosphere","American",

    • "American");

    • client.callProcedure("HELLOWORLD.delete“,"American");


    Voltdb

    Technical Action

    Shortcut for Defining Simple Stored Procedures:

    <procedure class="procedures.simple.CountReservations">

    <sql>SELECT COUNT(*) FROM RESERVATION</sql>

    </procedure>

    <procedure class="procedures.simple.CountChildren">

    <sql>SELECT COUNT(*) FROM CUSTOMER WHERE AGE &lt; 21</sql>

    </procedure>

    <procedure class="procedures.simple.MyReservationsByTrip">

    <sql>SELECT R.RESERVEID, F.FLIGHTID, F.DEPARTTIME

    FROM RESERVATION AS R, FLIGHT AS F

    WHERE R.CUSTOMERID = ?

    AND R.FLIGHTID = F.FLIGHTID

    AND F.ORIGIN=? AND F.DESTINATION=?

    </sql></procedure>


    Voltdb

    Technical Action

    • VoltDBTools:

    • 工程模版生成脚本- Generate Script

      • $ cd /opt/voltdb/tools

      • $ python generate test test $HOME/workspace/test

    • VoltDB Studio

      • a browser-based tool

      • test, debug and optimize

      • a catalog viewer, an ad hoc SQL query pane, and a cluster monitor


    Voltdb

    Appendix

    VoltDB的资源:

    • 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

      • 源码https://github.com/VoltDB/


  • Login