再次调研这个东西,是为了满足下面的需求:
一张拥有50+字段的表,记录数大概5亿-10亿;需要对每个字段进行模糊搜索,并要求即时响应结果;需要做一些简单的聚合统计;
看到这个需求,肯定想到搜索,那么就是ElasticSearch了。但ES对SQL支持太弱了,因此想使用CrateDB。
CrateDB是什么
CrateDB是一个开源的分布式数据库:
- 底层基于ElasticSearch;
- 使用SQL处理结构化和非结构化数据;
- 分布式执行SQL,实时的查询响应,支持Join、聚合和搜索;
- 可以很方便的扩展;
功能及特性
- 可扩展性:shared-nothing架构,只需要往集群中增加机器,剩下的rebalance、数据重分布,均由CrateDB自己完成;
- 高可用性:集群中每一个节点都是一样的,Master通过选举产生,当正在服务的Master挂掉,很快就会选举出新的Master。另外,类似于HDFS,CrateDB中的数据也有副本机制,可以自己设置。
- 分布式SQL查询:支持查询、关联、聚合、搜索等;其中用于搜索的字段可指定native和full text索引。
- 良好的数据写入性能:CrateDB中没有事务及锁机制,因此数据写入性能比较好(一个单台节点上可以达到40000+每秒的insert)。另外,在写入时,CrateDB的查询性能不会受到影响。
- 支持二进制数据存储:BLOB 可存储图片、视频以及超大非结构化文本数据;
- 动态Schema:可以在已有表中动态增加字段或嵌套的数据结构;
- 支持Update和Delete;
- WEB监控页面:可以监控整个集群的健康状态及数据的健康状态;
适用场景
- 具有搜索功能、提供SQL接口、可以水平扩展的数据库;
- 经济、开源的SQL数据库;
- 快速的搜索、聚合以及即席查询;
- 快速的并发读写;
- 海量数据;
- 高可用的、用不停机的数据库;
不适用场景
- 强事务要求;
- 高度规范化(范式)的表以及多表关联;
之前有文章介绍过Crate的安装:http://lxw1234.com/archives/2015/12/590.htm
官网:https://crate.io/
如果觉得本博客对您有帮助,请 赞助作者 。