VoltDB FAQ

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介:
1.概要信息
1.1VoltDB为何物?
VoltDB是为满足极端多的事务处理以及以下需求而设计的关系数据库系统:
  可以提供比传统数据库系统好很多的性能。
  可以线性扩展。
  兼容SQL作为数据库管理接口。
  兼容ACID,满足数据一致与完整性。
  7*24*365高可用。
1.2VoltDB架构
  VoltDB数据库是一个分布式,可扩展,shared-nothing的内存数据库。使用JAVA 写的存储过程来定义事务。使用标准SQL访问数据,使用并行的单线程处理方式确保数据一致性,同时避免了传统数据库的锁,插销,资源管理开销。
1.3VoltDB如何获得ACID兼容
  为确保数据可靠性,必须满足原子性,一致性,隔绝性,持久性四个特征。
  原子性:
    VoltDB通过使用存储过程来确保原子性,一个存储过程执行必须等待前一个存储过程成功或回滚结束。
  一致性:
    VoltDB在所有的数据库查询中强制schema与数据类型约束.
  隔绝性:
    VoltDB事务全局(所有被影响的分区)顺序执行(没有交叉)(任何一个分区同一时间只有一个执行,即串行的)。
  持久性:
    VoltDB提供分区复制以及周期性的数据库snapshot,确保数据持久化。
1.4可扩展性是如何得来的?
  VoltDB自动在集群中的可用节点分发行记录。通过增加集群节点,可以提高数据库集群的性能和容量,当数据重新载入时,VoltDB自动重分布数据。
1.5VoltDB如何处理数据库分区
  VoltDB通过分区计划将行分发到各个数据库分区。用户通过指定被分区的表的列,作为内部HASH函数的输入参数。注意,不是所有的表都需要被分区,读比较多的表考虑复制较合适
1.6VoltDB分区与传统数据库分片的不同
  传统的数据库分片,数据表被存放在完全不相干的数据库当中。更加可怕的是,数据一致性必须通过应用逻辑来保证。但是使用VoltDB的话,ACID兼容性是基于整个数据库集群的,不需要应用来考虑。
  另一个传统数据库分片的弱点是数据备份,恢复以及管理,都必须基于单个节点。而使用VoltDB就没有这么麻烦了,这些操作都被集中化了。
1.7适合VoltDB的应用场景
  VoltDB适合OLTP系统,单个事务较小,但是事务总量非常之多的应用。比如金融,零售,WEB2.0等传统OLTP应用。

2.比较信息
2.1VoltDB与MySQL数据库分片的区别
VoltDB设计的初衷是提供高并发能力,对应用来说透明的分区解决方案。MySQL的数据库分片方案,需要应用编写代码来管理和访问数据库分片,或者理解为MySQL的数据库分片对应用来说不是透明的。
VoltDB的水平分区不牺牲ACID特性,可管理性。同时不会增加程序设计的复杂度。
对于OLTP系统,在同等硬件的情况下,VoltDB提供比MySQL分片更好的性能。
2.2VoltDB与MySQL with Memcached的区别
Memcached,分布式内存缓存.一般放在应用和数据库之间,提供频繁访问的数据库对象的缓存,但是需要应用来管理这个缓存。memcached本身并没有可靠性和一致性保障,需要应用来管理缓存和数据库的HASH算法。更重要的是CACHE的使用一般只对读性能有提高,而写的话可能反而更差劲。
VoltDB提供比memcached同等或更高的读性能,同时不失ACID特性,更加重要的是,VOLTDB提供与读同等性能的写性能。
2.3VoltDB与Key-Value数据库的区别
Key-Value数据库用于存储任意数据,基于各自KEYS。因为只有一个KEY,所以Key-Value数据库做分布式架构非常的简单。但是Key-Value不提供结构化数据存储,不提供系统数据可靠性。
使用VoltDB可以存储结构型或非结构型数据,同时提供数据存储的可靠性,一致性,持久化,标准SQL接口。VOLTDB甚至可以在一个事务中通过多个KEY对数据进行读写.VoltDB提供与键值数据库相当或者更好的事务吞吐能力

3.技术信息
3.1VoltDB支持的平台
目标平台CENTOSv5.4,兼容64-bit POSIX-compliant 平台。支持Ubuntu9.04 OSX10.5,10.6。使用源代码及编译脚本支持更多操作系统。
3.2VoltDB支持的SQL
VoltDB v1版支持ANSI-标准SQL子集,支持CREATE INDEX, CREATE TABLE,  CREATE VIEW ,SELECT, INSERT, UPDATE,  DELETE 。
其他SQL将陆续在后续的版本添加。参考VOLTDB手册。
3.3VoltDB是否支持blob
当前版本不支持blob,但是可以使用varchar存储BASE64来代替,限制最大1M大小。
3.4VoltDB为什么不支持ODBC/JDBC?
VoltDB的主要交互通过JAVA存储过程实现,使用ODBC,JDBC连接意义不大。应为所有的添加修改操作必须新建或修改JAVA存储过程。
3.5如何增加VoltDB集群的容量?
VoltDB的大小由初始话过程决定,编译应用CATALOG,启动数据库。要增加集群容量,需要做如下操作:
1。使用SnapshotSave存储过程将当前数据库内容镜像到磁盘。
2.重新编译应用CATALOG,指定VOLTDB集群新的SIZE。
3.重启VOLTDB数据库集群,使用新的CATALOG。
4.使用SnapshotRestore系统过程还原第一步备份的镜像至新的VOLTDB集群。
3.6VoltDB数据库集群最大支持多少节点?
VoltDB单个节点的性能约为传统DBMS的30-50倍,同时VOLTDB官方已经在3-12个节点的集群上都做过测试,在小于12个节点的集群中,性能指标可以达到10万TPS。并且已经成功部署20个节点的集群,尽管在VOLTDB的架构上没有限制节点数量,但是如果客户需要部署超过20个节点的集群,可以联系VOLTDB以便做得更好。
3.7VoltDB有哪些数据库管理工具?
在当前的版本中,VoltDB提供了一些命令行工具初始化,创建数据库,其他的如改变日志特征,创建镜像,修改CATALOG,关闭集群可以通过调用系统过程来实现。后续的版本将陆续添加更多的自动化脚本或命令。
3.8数据库监控工具
当前的版本提供的工具不多,可以通过调用Statistics, SystemInformation system procedures来监控数据库。后续的版本会添加更多的友好的工具。
 
4.最佳实践
4.1自增长的索引列的实现?
目前的版本没有AUTO_INCREMENT功能,如果要实现自增长的列值需求,可以新建一个表,这个表的每一行存储表名,列名,当前值。如
CREATE TABLE AUTOINCREMENT (     
TABLE_NAME VARCHAR[50] NOT NULL,     
CURRENT_VALUE BIGINT NOT NULL DEFAULT 1  
);
然后创建一个存储过程来维护这个表和返回当前值。
4.2使用VoltDB存储Key-Value
使用VoltDB不仅仅可以存储Key-Value,VOLTDB提供了很好的平台来满足类似目的,如通过创建一个两字段的表int|char[],varchar,然后根据int|char[]作为键值分区。这样的话就可以建立一个非结构化的存储结构了。使用VOLTDB存储KV的好处是,提供了同等或超越KV数据库的性能,并且保留了ACID特性。
使用VOLTDB存储KV的限制,单行长度最大1M(VARCHAR),以后可能增加。
4.3如何调整应用,使之在VOLTDB环境获得最大吞吐量
首先遵守如下三条规则:
1.通过设计,尽量减少跨节点的事务。
2.使用异步存储过程调用。如果每一次客户端调用存储过程都需要等待响应的话,VOLTDB的队列不能被充分利用,不能获得最好的性能体现。使用异步调用,同时可以避免客户端性能瓶颈。
3.客户端与VOLTDB的所有节点建立连接,在跨分区事务中性能较好。

其他:调用ExecuteSQL之前队列多个SQL(类似多步提交),

确保最后一个ExecuteSQL调用包含TRUE标签作为一个参数,告知过程可以关闭数据库事务作为最后调用的一部分,而不是某一个步骤.

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
5月前
|
编解码 人工智能 算法
【采用BPSK或GMSK的Turbo码】MSK、GMSK调制二比特差分解调、turbo+BPSK、turbo+GMSK研究(Matlab代码实现)
【采用BPSK或GMSK的Turbo码】MSK、GMSK调制二比特差分解调、turbo+BPSK、turbo+GMSK研究(Matlab代码实现)
319 8
|
2月前
|
人工智能 缓存 运维
【本不该故障系列】从 runC 到 runD:SAE 如何化解安全泄露风险
阿里云SAE默认采用runD安全容器,通过轻量虚拟化实现硬件级隔离,彻底解决runC共享内核导致的逃逸、噪声邻居、侧信道攻击等多租户安全风险。
|
3月前
|
人工智能 缓存 运维
【本不该故障系列】从 runC 到 runD:SAE 如何化解安全泄露风险
阿里云SAE默认采用runD安全容器,通过轻量虚拟化实现硬件级隔离,彻底解决runC共享内核导致的逃逸、噪声邻居、侧信道攻击等多租户安全风险。
|
3月前
|
存储 缓存 安全
探索快手平台:如何通过官方API接口获取作品详细数据
本文介绍如何通过快手开放平台API获取短视频的播放、点赞、评论等详细数据,涵盖账号注册、应用创建、权限申请、接口调用及签名生成方法,并提供Python示例代码与注意事项,助力开发者合规高效地进行内容分析与运营优化。
626 0
|
8月前
|
移动开发 前端开发 安全
【HarmonyOS next】ArkUI-X休闲益智消消乐【进阶】
本项目基于ArkUI-X实现H5游戏与原生应用融合,通过Web组件将Vue+Canvas开发的消消乐游戏无缝嵌入ArkTS容器,支持HarmonyOS与iOS双平台运行。核心包括:跨端渲染适配、高性能动画引擎、触控事件归一化及多端性能优化,代码复用率达92%,帧率稳定≥55FPS,触控延迟<80ms。提供完整源码与开发建议,拓展方向涵盖分布式续玩与原生能力集成。
242 1
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
YuE:开源AI音乐生成模型,能够将歌词转化为完整的歌曲,支持多种语言和多种音乐风格
YuE 是香港科技大学和 M-A-P 联合开发的开源 AI 音乐生成模型,能够将歌词转化为完整的歌曲,支持多种音乐风格和多语言。
2076 23
YuE:开源AI音乐生成模型,能够将歌词转化为完整的歌曲,支持多种语言和多种音乐风格
|
机器学习/深度学习 分布式计算 并行计算
性能优化视角:Python与R在大数据与高性能机器学习中的选择
【8月更文第6天】随着数据量的激增,传统的单机计算已经难以满足处理大规模数据集的需求。Python和R作为流行的数据科学语言,各自拥有独特的特性和生态系统来应对大数据和高性能计算的挑战。本文将从性能优化的角度出发,探讨这两种语言在处理大数据集和高性能计算时的不同表现,并提供具体的代码示例。
393 3
|
安全 虚拟化 异构计算
GPU安全容器面临的问题和挑战
本次分享由阿里云智能集团弹性计算高级技术专家李亮主讲,聚焦GPU安全容器面临的问题与挑战。内容分为五个部分:首先介绍GPU安全容器的背景及其优势;其次从安全、成本和性能三个维度探讨实践中遇到的问题及应对方案;最后分享GPU安全容器带状态迁移的技术路径与应用场景。在安全方面,重点解决GPU MMIO攻击问题;在成本上,优化虚拟化引入的内存开销;在性能上,提升P2P通信和GPU Direct的效率。带状态迁移则探讨了CRIU、Hibernate及VM迁移等技术的应用前景。
|
供应链 数据管理 数据处理
RPA技术在医疗领域的应用正日益增多
【8月更文挑战第4天】RPA技术在医疗领域的应用正日益增多
314 1