VoltDB Do's and Don'ts

为了成功的实施VoltDB,必须了解清楚VoltDB的机制,如何设计一个好的数据库系统。

以下建议翻译自VoltDB官方文档《VoltDB Do's and Don'ts》以及一些个人理解。

Do's

1.设计好的表分区算法,最大化单分区事务,最小化多分区事务。(说白了就是降低跨分区的事务,因为跨分区的开销是比较大的,这种事务一多的话VoltDB的吞吐量就降低下来了,性能可能会比传统的OLTP还烂。)

2.评估数据卷已使用频率,应用的所有事务,决定采用哪些列作为分区列。(与第一条雷同)

3.当某存储过程是单分区运行时,使用@ProcInfo来指出。(否则,VoltDB会认为是多分区执行的模式)

4.在同一个存储过程中使用多条SQL比把每一条SQL放在不同的存储过程效率高出10倍多。(有点类似于多步提交和单步提交带来的明显差异)

5.在每一个存储过程的最后一个voltExecuteSQL()后面加上一条IsFinal的结束语句,这将带来性能提升,特别是在多分区模式。

6.不同的应用采用的节点数应该是不一样的,为了获得最匹配的节点数量,应该做真实的应用测试。(不是节点越多越好,哈哈。能满足应用需求是最好的,否则多在那里也是增加无用的碳排放)

7.使用异步函数调用,客户端连接到VoltDB的所有节点,以最大化吞吐量。

8.检查异步函数调用的返回值,确保已经在队列中。如果不在队列中,在调用下一个异步操作时,先调用backpressureBarrier()等待队列清空。

Don'ts

1.尽量不要在生产环境使用特殊SQL查询。

2.如无特殊需求,尽量不要因为某些表的记录比较少,就把这些表作为复制表。(如果是UPDATE较多的表,复制的话就会影响性能。)

3.不要创建非常大的行记录的表。(如表中包含的字段较多,或者使用了较大的VARCHAR),使用小表,公共的分区键值来满足这类需求较好。

4.尽量避免不带约束条件的查询,或者说尽量避免大数据量返回的查询,特别是在多分区事务中。(因为VoltDB的串行处理机制?)

5.尽量少在异步回调中做扩展处理。这样做可以避免回调被阻塞或停止。

6.不要试图在单机上测试应用系统性能,在多机上体现出来的是完全不一样的。(多机的话要考虑复制,分区等,还是尽量模拟真实环境吧)

7.不要假设任何单个事务的低延时,VoltDB设计初衷是整个应用的高吞吐量,而不是单个事务的低延时。(貌似又是串行机制的弊端,没有锁造成的。唉!绝对要避免单事务的延时才行!!否则就等着吧)

8.不要在客户端多次调用ClientFactory.createClient(),可以有多个客户端连接到数据库集群,并且每个客户端都可以有多个连接到数据库集群。但是每个客户端只能有一个客户端实例。

总结:

1.好像很多约束都是为了获得更短的单事务时间消耗,原因是不是VoltDB是串行执行造成的呢?这是我的个人见解。

2.VoltDB适合真正的OLTP系统,(事务粒度小,事务量多。)

3.如何解决长事务?貌似目前VoltDB的杀手就是长事务啊。看样子在做应用设计时应该考虑到应对措施才行。否则会死得很惨

时间: 2024-10-31 05:49:51

VoltDB Do's and Don'ts的相关文章

VoltDB FAQ

1.概要信息 1.1VoltDB为何物? VoltDB是为满足极端多的事务处理以及以下需求而设计的关系数据库系统:   可以提供比传统数据库系统好很多的性能.   可以线性扩展.   兼容SQL作为数据库管理接口.   兼容ACID,满足数据一致与完整性.   7*24*365高可用. 1.2VoltDB架构   VoltDB数据库是一个分布式,可扩展,shared-nothing的内存数据库.使用JAVA 写的存储过程来定义事务.使用标准SQL访问数据,使用并行的单线程处理方式确保数据一致性,

ngix-nginx搭建流服器(.m3u8+预切片.ts文件)动态生成防盗链问题(路过大神,求救)

问题描述 nginx搭建流服器(.m3u8+预切片.ts文件)动态生成防盗链问题(路过大神,求救) 我最近在搭建一个nginx rtmp流服器,使用.m3u8文件+静态预切片.ts文件:安全考虑需要增加防盗链功能:针对单个.m3u8文件请求增加防盗链没有问题:但是生成.ts动态防盗链有一些问题: 生成.ts动态防盗链方法: 将.m3u8防盗链key=xxxx赋值给.ts(使用ngx_http_substitutions_filter_module-master模块替换内容 .ts 替换成 .ts

VoltDB简介:对 Java 代码使用一个内存型的、高性能的数据库

简介 过去几年来,出现了一种称为 NoSQL 的新型数据库管理系统.设计这些数据存储是为了克服在扩展传统关 系数据库来处理一些应用程序时必须处理的数据负载类型的难题,比如说 Amazon.这种可伸缩性的实现需要 一定的代价:NoSQL 系统通常不符合 ACID(原子性.一致性.隔离和耐久性):它们最终一致地表明,只要 给定一定量的时间,所有数据更新最终都会通过该系统传播.这不符合某些类型的应用程序的要求. 过去用于在线事务处理 (OLTP) 的关系数据库管理系统确实提供了一致性保证(它们符合 A

Windows Server 2008之终端服务TS WEB ACCESS

终端服务在这里就不多做介绍了,我的Blog里有一篇介绍Windwos Server 2003 Terminal Services 的介绍,比起前面的版本,有很多改进的地方,下面演示的就是它其中的一个新功能:通过TSWebAccess部署RemoteApp(单台服务器),话不多说,开始吧! 默认终端服务是没有安装的,我需要到服务器管理里去添加终端角色 下面这里我只选择了三项,TS授权需要"米",TS网关因为在这里是测试环境就没有用到internet.所以在内部测试选择这三项就可以了.

windows server 2008 R2/windows 7管理二十 TS终端之三

在安装了TS终端后,如果没有配置授权服务器,那么只能使用120天,120天后将不能再使用终端服务,所以有必要再安装完成后配置终端服务授权. 如果在大型局域网内,存在多台ts终端服务器,授权服务器则有必要单独一台机器以保证安全性 本篇分为1.激活授权服务器2.安装证书及设置授权服务器和测试3.rd网关设置介绍 1. 激活授权服务器 从管理工具-远程桌面服务-打开rd授权管理器 在服务器名称上右键单击-激活服务器 出现激活服务器向导 需要连接到网络,连接到微软

windows server 2008 R2/windows 7管理十九 TS终端之二remoteapp

本篇介绍ts终端中的remoteapp,远程应用发布,将本地程序通过remote和web发布出去,这样用户可以在远端通过web或者系统自带的remoted desktop连接上远程的应用来工作,比如将erp的客户端发布到远端,这算典型的应用.由于应用在远程运行,本地端只是图形显示界面而已,所以流量要求不大. 本篇分为1.安装应用程序2.创建remoteapp程序3.设置web显示4.web连接remoteapp 5.创建rdp包 6.rdp包连接测试 7.msi包创建 8.msi包安装使用和连接

windows server 2008 R2/windows 7管理十八 TS终端之一

本篇开始介绍R2上的远程终端和远程应用程序.R2有专为win7优化和设计,主要体现在远程桌面web访问上,拓扑图增加一台ts服务器 本文仅介绍安装篇,安装必要的组件和组件说明. 在服务器管理中单击添加角色,打开添加角色向导,选择远程桌面服务 桌面服务简介 角色功能说明,远程桌面会话主机是以前的终端服务的升级 虚拟机主机需要主机上有hyper的支持

影片TS版,TC版,CAM版,HD版,BD版,DVD,HDVD版是什么等介绍

一般在网上看电影或者下载影视片都会见到TC版.HD版.TS版之类版本字样,许多同学不明白这些缩写代表着什么,有什么不同.在这里小编将这些都常见版本整理了出来,包括TS版(准枪版).TC版(胶片版).CAM版(枪版).HD版(DHDVD版.高清版).DVDSCR版(预售版).HDRIP版(高清版).BD版(蓝光版).DVD版.HDVD版.DVD5版.DVD9版.HDVD版(压缩碟或者经济版DVD).R5版(俄罗斯5区版).VHSRip版.TVRip版.WORKPRINT版(WP).SUBBED版.

surface-android mediaPlayer播放标清ts流是4:3的比例显示的

问题描述 android mediaPlayer播放标清ts流是4:3的比例显示的 5C 如题,现在使用surfaceView+mediaPlayer播放标清ts流,在机顶盒上视频是以4:3的比例显示,全屏的时候左右两端有一块黑屏,无法全屏显示:请问下如何设置使视频能够以16:9的比例显示.我用了mSurfaceHolder.setFixedSize(surfaceHeight surfaceWidth)方法设置surface的大小,还是没用 解决方案 好烦啊,用videoView也是一样不会全