Infobright列式存储数据库

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

Infobright 是一个非常强大的列式存储数据库,基于MySQL的高效数据仓库。

之所以使用数据仓库,是因为目前MySQL数据库中的数据增长很快,定期会对一些历史记录表进行清除,但后期的统计分析还会用到这些历史数据,随着数据量的增大,查询也越来越慢,而数据库仓库特有的存储格式能够减小磁盘空间内的占用,同时列式的特点使得查询速度大为改观。选择Infobright是因为它锁支持的数据类型更多些,更接近于mysql,更节省磁盘空间,主要的统计查询还不是在数据仓库上,偶尔的查询一下速度倒不是要求最优,作为社区版本(ICE版本)最大麻烦是不能做DML操作的,实际测试也是那么回事,如果插入数据有些不合适的地方,需要删除,只能drop table,然后从新建表和导入数据........

infobright的优势:

1.    数据压缩:适合存放很大的数据量,节约磁盘存储

2.    查询速度:基础的汇总语句,sum avg  min max  count()  groupby 速度比oracle的要快,不用建立索引、不用给大表分区,省很多工作量,适合数据汇总、报表统计

infobright的局限性ICE:

1.    infobright不支持DML(只支持select)

只有select可以支持,update/insert/deltete以及truncate table 都不能使用,插入表数据:用laod data infile

2.只支持单击、单核

由于Infobright官方已经提供好了rpm的包,所以安装起来相对来说较为简单:

rpm -ivh infobright-4.0.7-0-x86_64-ice.rpm --prefix=/usr/local/infobright

这样就会安装到/usr/local/infobright/infobright-4.0.7-0-x86_64

对于整个安装过程,相当的简单,比较繁琐的是对于相关参数的设置:

A、配置内存大小

vim /usr/local/infobright-4.0.7-x86_64/data/brighthouse.ini

修改内存的配置可参加其建议值进行设置:

############  Critical MemorySettings ############

# System Memory   Server Main Heap Size     ServerCompressed Heap Size   Loader Main HeapSize

# 32GB                24000                     4000                       800

# 16GB                10000                     1000                       800

#  8GB                  4000                       500                       800

#  4GB                  1300                       400                       400

#  2GB                  600                        250                       320

B、系统自带配置功能

sh /usr/local/infobright-4.0.7-x86_64/postconfig.sh

这个脚本可以改变datadir,cachedir,socket,port等配置,需要root来执行,执行后返回的信息如下:(如无需修改,则全部N即可)

Infobright post configuration

--------------------------------------

Using postconfig you can:

--------------------------------------

(1) Move existing data directory to other location,

(2) Move existing cachedirectoryto other location,

(3)Configure server socket,

(4)Configure server port,

(5) Relocate datadir pathto an existing data directory.

 

Please type'y'foroption that you want or press ctrl+c for exit.

 

Current configuration:

 

--------------------------------------

Current config file: [/etc/my-ib.cnf]

Current brighthouse.ini file: [/usr/local/infobright-4.0.7-x86_64/data/brighthouse.ini]

Current datadir: [/usr/local/infobright-4.0.7-x86_64/data]

Current CacheFolder in brighthouse.ini file: [/usr/local/infobright-4.0.7-x86_64/cache]

Current socket: [/tmp/mysql-ib.sock]

Current port: [5029]

--------------------------------------

 

(1) Do you want to copy current datadir [/usr/local/infobright-4.0.7-x86_64/data] to a new location? [y/n]:n

(2) Do you want tomovecurrent CacheFolder [/usr/local/infobright-4.0.7-x86_64/cache] to a new location? [y/n]:n

(3) Do you want tochangecurrent socket [/tmp/mysql-ib.sock]? [y/n]:n

(4) Do you want tochangecurrent port [5029]? [y/n]:n

(5) Do you want torelocateto an existing datadir? Current datadir is [/usr/local/infobright-4.0.7-x86_64/data]. [y/n]:n

 

--------------------------------------

--------------------------------------

No changes has been made.

--------------------------------------

C、设置字符集

infobright默认情况下不支持中文,为了更好的支持中文,需要设置默认的字符集。

vim /etc/my-ib.cnf

找到如下内容

collation_server=latin1_bin

character_set_server=latin1

将其修改为:

collation_server=utf8_bin

character_set_server=utf8

D、安装启动脚本

cp /usr/local/infobright-4.0.7-x86_64/share/mysql/mysql.server /etc/init.d/mysqld-ib

vim /etc/init.d/mysqld-ib

找到如下两行代码:

conf=@BH_CONF@

user=@BH_USER@

修改为:

conf=/etc/my-ib.cnf

user=root##这里只能用root启动服务,其他用户需要研究如何启动

相关的其他指令:

/etc/init.d/mysqld-ib stop

/etc/init.d/mysqld-ib restart

添加开机启动:

chkconfig --add mysqld-ib

E、Mysql安全设置

PATH=$PATH:/usr/local/infobright-4.0.7-x86_64/bin

mysql_secure_installation

完成后再给mysql添加一个远程连接的账号,只想如下命令进入mysql client:

mysql -uroot -p

添加完远程用户方法如下:

GRANT ALL PRIVILEGESON *.* TO'infobright'@'%'IDENTIFIEDBY'password'WITHGRANTOPTION;
FLUSHPRIVILEGES;

mysql数据导入到infobright中

CREATE TABLE `ricci_var` (

  `id`int(11) DEFAULT NULL,

 `name` varchar(20) DEFAULT NULL,

 `c_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATECURRENT_TIMESTAMP

) ENGINE=InnoDB

select * from ricci_var into outfile'/tmp/var.csv' fields terminated by ',' optionally enclosed by '"' lines terminated by '\n'

###红色部分在导入的数据设置的分隔符等信息,导入也要相同

#导出数据的时候需要存放在数据库目录下或者/tmp目录下,MySQL5.7是没有权限导出需要设置

secure_file_priv配置对数据导入导出的影响:

secure_file_priv  mysqld 用这个配置项来完成对数据导入导出的限制

1、限制mysqld 不允许导入 | 导出

 mysqld --secure_file_prive=null

2、限制mysqld 的导入 | 导出只能发生在/tmp/目录下

 mysqld --secure_file_priv=/tmp/

3、不对mysqld 的导入| 导出做限制

 /etc/my.cnf
    [mysqld]
    secure_file_priv

把数据导入infobright库里

在inf库里添加相同类型的表在导入数据:

load data infile "/tmp/var.csv"into table var fields terminated by ',' optionally enclosed by '"' linesterminated by '\n'

文本数据导入inf里:

[root@localhost home]# cat aa.txt 

1,"noe,two or three",2222

2,3,4

create table aa(id int,textfiedl varchar(40),number int)

load data infile "/home/aa.txt" into table aa fields terminated by ',' enclosed by '"';

mysql> select * from aa;

+------+------------------+--------+

| id   | textfiedl        | number |

+------+------------------+--------+

|    1 | noe,two or three |   2222 |

|    2 | 3                |      4 |

+------+------------------+--------+

(1)“”是为了将列区分开

(2)每行写好后必须回车,不然导不进去

##自己验证正确性把

导数据库的时候不建议使用客户端工具来搞,总感觉好多坑的。


本文转自 DBAspace 51CTO博客,原文链接:http://blog.51cto.com/dbaspace/1885668


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
存储 SQL 分布式计算
浅谈MPP数据库-Vertica
用过这块数据库3年时间,很多功能非常强大,POC做了很多数据库,查询性能可以说是最好的,推荐一下
2221 2
|
2月前
|
存储 大数据 数据库
深入理解数据库索引优化技术
本文将深入探讨数据库索引优化技术,包括索引的基本概念、常见的索引类型以及如何选择和创建适当的索引。通过了解索引的原理和优化策略,读者可以提高数据库查询性能并优化数据访问效率。
|
存储 消息中间件 NoSQL
聊一聊数据库的行存与列存
好多人最开始学习数据库的时候,是关系数据库,数据以表格形式存储,一行表示一条记录。其实这种就是典型的行存储(Row-based store),将表按行存储到磁盘分区上。 而一些数据库还支持列存储(Column-based store),它将表按列存储到磁盘分区上。
聊一聊数据库的行存与列存
|
8月前
|
存储 JSON NoSQL
常见的 NoSQL 数据库有哪些?
常见的 NoSQL 数据库有哪些?
263 2
|
11月前
|
算法 数据挖掘 OLAP
【数据库架构】什么是 OLTP?
【数据库架构】什么是 OLTP?
|
11月前
|
存储 NoSQL 数据库
【数据库】NoSQL数据库
【数据库】NoSQL数据库
67 0
|
存储 算法 NoSQL
【数据库系列】什么是列式存储和行式存储
列式存储:每一列单独存放,数据即是索引。只访问涉及得列,如果我们想访问单独一列(比如NAME)会相当迅捷。一行数据包含一个列或者多个列,每个列一单独一个cell来存储数据。行式存储: 把一行数据作为一个整体来存储。学习:https://blog.csdn.net/qq_43543789/article/details/108662140。......
543 0
【数据库系列】什么是列式存储和行式存储
|
存储 SQL 数据库
数据库技术-数据库索引
数据库技术-数据库索引
311 0
数据库技术-数据库索引
|
存储 算法 关系型数据库
MySQL · 引擎特性 · Infobright 列存数据库
简介 系统架构 存储引擎 优化器和执行器 数据装载和卸载 领域知识 查询优化 简单场景的示例 小结 存储结构 Data Pack Knowledge Node 数据压缩 总结 简介 Infobright 是一个面向 OLAP 场景的开源列
3901 0