(七)VoltDB 自定义内存容量

Posted on 2017-03-10(星期五) 18:20 in VoltDB

一、VoltDB预估内存使用量

1. 预估在表中大小

实例:比如varchar类型的字段存储,它的存储大小最大为64bytes或者更大,则应该存储在共享内存当中。有一个8字节的指针存储在元组中,一个24字节的字符串引用对象,以及将数据本身存储在共享 区中所需的空间。在共享区中,在数据被存储为4字节长度,8字节的反指针指向字符串引用对象和数据。

image

2.预估在索引中大小

表的索引分为树索引和哈希索引,也有两种不同的算法来预估索引在实际中所占到的内存大小 树索引

(sum-of-column-sizes + 8 + 32) * rowcount

哈希索引

(((2 * rowcount) + 1) * 8) + ((sum-of-column-sizes + 32) * rowcount)

以下是实际估算的一个实例:

image


(六)VoltDB 权限

Posted on 2017-02-22(星期三) 14:22 in VoltDB

一、简介

VoltDB 权限范围包括使用 sqlcmd ,调用存储过程以及访问数据,企业版还涉及到页面访问的权限拦截。VoltDB 的权限设置很方便也很有效。 VoltDB 的加密方式采用了两种策略,HASHKerberos 两种加密策略。 在了解到 VoltDB 加密方式后,需要了解如何使用 VoltDB 权限系统。同样也是通过配置即可完成。

二、权限配置

使用 VoltDB 权限时需要在集群配置文件(deployment.xml)中通过以下的配置来保证权限系统开启。

<security enabled="true"/>

然后再使用以下命令完成权限的开启。

$ voltadmin update deployment.xml

接下来需要设置用户与用户密码来确保控制所有用户对 VoltDB 的使用。在配置文件中来使用 <user> 标签来定义一个用户,如果需要定义多个用户,则需要在 <users> 标签下定义多个 <user><user …


Continue reading

(五)VoltDB 存储过程

Posted on 2017-02-10(星期五) 10:00 in VoltDB

一、存储过程简介

存储过程是 VoltDB 用来定义事务的,可以将一组 sql 封装到使用Java编写的存储过程当中。当然是可以供外部的客户端调用来实现 VoltDB 的 CRUD 操作。建立存储过程的方式可以有两种,直接采用 DDL 定义或使用 Java 语言。下面将会详细介绍。

1.1 简单的存储过程

简单的存储过程编写是纯SQL语句实现(DDL定义),VoltDB 提供了SQL运行环境 sqlcmd,在启动 VoltDB 后在另外的 shell 窗口(进入同样的目录),输入命令 sqlcmd,在进入环境之后,就可以编写SQL,当然在编写存储过程之前,必须确保 VoltDB 当中已经创建了表空间。如下示例是使用SQL创建存储过程的范例;

CREATE PROCEDURE leastpopulated 1

AS SELECT TOP …

Continue reading

(四)VoltDB 数据导入导出

Posted on 2017-01-30(星期一) 18:00 in VoltDB

一、Import 数据

针对导入数据到 VoltDB 当中,VoltDB 为不同的使用场景提供了不同的解决方案,有可能只需要在第一次初始化数据到数据库中时导入,但也有可能数据实时更新同时就需要数据实时导入到 VoltDB 当中。

1.1 使用工具一次性导入

在一次性导入的场景当中,比如一次性将数据初始化到 VoltDB 当中,VoltDB 提供了批量导入工具 csvloader 以及 jdbcloader

使用 csvloader 工具导入数据到数据库即从 csv 文件导入数据到 VoltDB 。在启动 VoltDB 后,打开另外的 shell 窗口进入相同的目录,使用以下命令:

$csvloader city --file=data.csv

解释一下上面的命令,city 是已经在 VoltDB 中创建的表结构,data.csv 是数据批量存在的文件 …


Continue reading

(三)VoltDB 的实际使用

Posted on 2017-01-20(星期五) 19:00 in VoltDB

一、初始化

在完成安装后就可以尝试启动 VoltDB。在启动之前需要先选择一个目录来初始化voltDB根目录,比如单独建立一个 VoltDB 项目的目录。初始化只需一次,但是如果有修改配置或者有重新初始化的必要也可以强制重新初始化。初始化完成后在该目录下便可启动 VoltDB

$voltdb init
$voltdb start

另外初始化时可以指定初始化目录及VoltDB配置文件,使用 --D 参数及 --config 参数。

$voltdb init --D= --config=

二、集群部署

集群下部署安装 VoltDB 与单节点部署安装流程一致,只需安装 VoltDB 到不同的节点。与单节点相同,集群下启动 VoltDB 之前需要为每台节点初始化 VoltDB 根目录。另外,同一个集群下的所有节点的配置文件要保持完全一致,所以在初始化根目录时,需要指定相同的配置文件。

$voltdb init -D ~/voltdb --config=depolyment …

Continue reading

(二)部署 VoltDB

Posted on 2017-01-12(星期四) 12:20 in VoltDB

一、安装

以下安装步骤均基于社区版 6.9 Version,安装操作系统 Ubuntu 16.04 ,企业版的安装不做详细介绍。

下载请移步: https://github.com/VoltDB/voltdb/releases/tag/voltdb-6.9

1.1 安装依赖包

安装 Java 1.8

vim /etc/profile, 增加以下内容:

# vim 
JAVA_HOME=/home/smith/elk/cloudscope/jdk1.8.0_111
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH …

Continue reading

(一)VoltDB 简介

Posted on 2017-01-11(星期三) 12:00 in VoltDB

一、VoltDB 简介

VoltDB 是一种内存数据库,作为常见的内存数据库( K-V 存储),但也可以只将这种k-v形式存储的内存数据库称为内存缓存(cache),其不是通常sql操作数据库因此也称类似的数据存储为 NoSQL,但作为新型的内存数据库NewSQL,不同于 NoSQL 数据库,它还是立足于常用的关系型数据库数据存储方式,并且支持 sql,支持事务。

作为新兴的一种内存数据库技术,VoltDB 可以说是完美,尤其是对于数据量大,单笔数据小的使用场景,voltDB 占尽了优势,采用内存存储,是为了提高传统关系型数据库速度的瓶颈,shard-nothing 结构让它可以做到集群部署的高可用,弹性存储。最关键的是其很好的继承了传统数据库的sql以及事务特性,这对于其使用者可以很好的从传统关系型数据库切换到voltDB来。下面将具体介绍 VoltDB 的特性以及使用。

1.1 事务

VoltDB 的事务沿用了传统关系型数据库的特性,并且在传统型数据库事务之上做出了很多优化以及改进。

VoltDB 是如何确保其事务特性?(ACID)

  • 原子性:对于一次事务的执行,在 VoltDB …

Continue reading