每个月1000万数据量的增量并不大,主要是每个表里面的冗余字段太多,导致文件比较大,个人觉得针对业务分离列表数据调用和搜索数据调用,另外搜索使用sphinx和lucene做实时增量索引+定时合并不影响业务和性能。
一、多数据表,大数据量,更新频率较高,以搜索为主的业务,推荐什么搜索服务/系统架构
多数据表,大数据量,更新频率较高,以搜索为主的业务,每个月1000万数据量的增量并不大,主要是每个表里面的冗余字段太多,导致文件比较大,个人觉得针对业务分离列表数据调用和搜索数据调用,另外搜索使用sphinx和lucene做实时增量索引+定时合并不影响业务和性能。
这个是分布式时序数据库的典型场景。提供一个使用DolphinDB解决类似场景的案例。
(1) 客户几百个业务场景,每天产生200多亿条时序日志记录(每条记录10个字段左右,维度+指标),所有数据写入采用双副本,并提供强一致性保证。每天产生数据2个T,双副本大概4个T,压缩之后1个T。数据保留15天左右。
(2)写入的同时有并发的查询和计算。大概分三种。
根据业务场景和时间范围,读取原始数据,每次读取最近一个小时左右的数据,约几十万条数据
按设备或按业务场景等维度进行分类统计过去24小时内每分钟的统计量(均值)
按设备或按业务场景等维度进行分类统计过去24小时内各种指标的95百分位,供实时监控使用。
这三种query涉及的数据量都比较大,每分钟大概2000~3000个这样的query。单个查询和计算的延迟在几十毫秒到2秒之间。
(3)部署了6台(36核,256G内存的服务器)物理机的DolphinDB集群解决上面的场景。实际上内存和cpu的使用率都不是很高,可以使用更少的资源来完成。
你的场景数据量少很多,但是要保留更长的时间。一台16~24核,128~256G内存,6~12个hdd硬盘的物理机(售价6~10万),安装DolphinDB时序数据库就可以搞定。你的业务场景非常简单,数据在DolphinDB中按照日期和设备两个维度分区就可以了。日期采用值分区,每天一个,设备采用范围或哈希分区,分成100个。这样每个分区的数据量大概在100万条左右,非常好的平衡了查询延时和吞吐量。
延伸阅读:
二、SQL是什么
Structured Query Language
‘SQL’是结构化查询语言,是一种用来操作 RDBMS 的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过 SQL 操作 oracle,sql server,mysql,sqlite 等等所有的关系型的数据库
- SQL语句主要分为:
DQL:数据查询语言,用于对数据进行查询,如select**
DML:数据操作语言,对数据进行增加、修改、删除,如insert、udpate、delete**
TPL:事务处理语言,对事务进行处理,包括begin transaction、commit、rollback
DCL:数据控制语言,进行授权与权限回收,如grant、revoke
DDL:数据定义语言,进行数据库、表的管理等,如create、drop
CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor - 对于web程序员来讲,重点是数据的crud(增删改查),必须熟练编写DQL、DML,能够编写DDL完成数据库、表的操作,其它语言如TPL、DCL、CCL了解即可
- SQL 是一门特殊的语言,专门用来操作关系数据库
- 不区分大小写