VoltDB FAQ

简介:
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 
目录
相关文章
|
前端开发 定位技术
|
11月前
|
Prometheus 分布式计算 监控
大数据指标和 SLA,那些你以为懂了其实没懂的事
大数据指标和 SLA,那些你以为懂了其实没懂的事
1053 7
|
机器学习/深度学习 人工智能 自然语言处理
YuE:开源AI音乐生成模型,能够将歌词转化为完整的歌曲,支持多种语言和多种音乐风格
YuE 是香港科技大学和 M-A-P 联合开发的开源 AI 音乐生成模型,能够将歌词转化为完整的歌曲,支持多种音乐风格和多语言。
3081 23
YuE:开源AI音乐生成模型,能够将歌词转化为完整的歌曲,支持多种语言和多种音乐风格
|
12月前
|
存储 缓存 安全
探索快手平台:如何通过官方API接口获取作品详细数据
本文介绍如何通过快手开放平台API获取短视频的播放、点赞、评论等详细数据,涵盖账号注册、应用创建、权限申请、接口调用及签名生成方法,并提供Python示例代码与注意事项,助力开发者合规高效地进行内容分析与运营优化。
2351 0
|
人工智能 缓存 安全
阿里云发布《AI 原生应用架构白皮书》!
阿里云联合爱橙科技发布《AI原生应用架构白皮书》,系统解析AI应用在架构设计、开发运维中的关键挑战与解决方案,涵盖大模型、Agent、RAG、安全等11大核心要素,助力企业构建稳定、高效、可控的AI应用体系。
阿里云发布《AI 原生应用架构白皮书》!
|
移动开发 前端开发 安全
【HarmonyOS next】ArkUI-X休闲益智消消乐【进阶】
本项目基于ArkUI-X实现H5游戏与原生应用融合,通过Web组件将Vue+Canvas开发的消消乐游戏无缝嵌入ArkTS容器,支持HarmonyOS与iOS双平台运行。核心包括:跨端渲染适配、高性能动画引擎、触控事件归一化及多端性能优化,代码复用率达92%,帧率稳定≥55FPS,触控延迟<80ms。提供完整源码与开发建议,拓展方向涵盖分布式续玩与原生能力集成。
591 0
|
人工智能 安全 API
AI战略丨MCP 生态发展:从技术标准到商业机遇的全景解析
在 AI 时代,成功不再仅仅取决于技术的先进性,更取决于生态的构建能力和标准的制定权。
AI战略丨MCP 生态发展:从技术标准到商业机遇的全景解析
|
监控 测试技术 数据库
详解Hyper-V虚拟机CPU分配方法
在Hyper-V环境中,合理分配虚拟机的CPU资源至关重要。vCPU是物理CPU的虚拟化表示,管理员可通过指定处理器数量、核心数、设置兼容性和亲和性、启用动态分配等方法优化性能。使用性能监视工具监控并调整CPU资源,避免过度分配,确保虚拟机稳定运行。定期评估和优化资源分配策略,以适应业务变化,保持最佳性能。
|
调度 数据库 Python
【YashanDB 知识库】DolphinScheduler 适配崖山 Python 驱动
本文来自YashanDB官网,介绍如何将DolphinScheduler调度器适配崖山Python驱动,实现通过Python任务访问崖山数据库。环境要求包括DolphinScheduler 3.1.9、Python 3.9及YashanDB 23.2.2.100。操作步骤涵盖安装YashanDB客户端、配置环境变量、安装Python驱动以及设置DolphinScheduler相关参数,助力用户高效集成与使用。
|
机器学习/深度学习 计算机视觉
字节豆包全新图像Tokenizer:生成图像最低只需32个token,最高提速410倍
【7月更文挑战第1天】新方法将图像转为1D token序列,减少计算复杂度,提高生成效率。在保持高画质(如gFID: 1.97 on ImageNet 256x256)的同时,TiTok比现有模型快410倍。虽有资源需求及token限制问题,但展示了图像处理的新方向。[论文链接](https://arxiv.org/abs/2406.07550)
1185 7

热门文章

最新文章