# 关注 > MyCat。开源分布式,实现MySQL协议服务器,数据库代理,可以使用MySQL原生协议与多个MySQL服务器通信,也可以使用JDBC与大多数束流数据库通信。将一个大表分割成N个小表,后端可支持MySQL, Sql Server, Oracle, DB2, PostGreSQL, MongoDB,作为企业级MySQL集群,替代昂贵的Oracle集群,融合了内存缓存,NoSQL,HDFS大数据,数据库中间件。适用于:读写分离主从切换、分库分表1000万-1000亿单表分片、多租户每个应用一个库、大规模报表统计、替代HBase进行大数据分析。**不适用于:非分片字段查询、分页排序、Join表在不同的数据分布**。 > InfluxDB。开源的、MIT协议下的时序数据库。特点:High write throughput高写吞吐量,Aswsome read performance, query in realtime好的写性能100毫秒之内的查询,Better compression更好的压缩,Write can't block reads写不能阻塞读,Read can't block write读不能阻塞写,Write multiple ranges simultaneously同时对多个范围写,Hot backs热备份。 > > 原理大致是从系统、传感器、队列、数据库、网络等数据源获取数据,以文本的方式(`temperature,device=dev1,building=b1 intenal=80,external=18 1443782127`)通过HTTP方式交给InfluxDB,在这里temperature是meaturement,相当于数据库中的表,deivce和building是tag, internal和external是field,最后面的1443782127是时间戳可以是纳秒级。 > >时间碎片,shards of time,is an underlying db effient to drop old data. > >Each seires and field to a uniqie ID,比如`temperature,device=dev1,building=b1#internal=80`对应一个ID=1,`tempeatrue,device=dev1,building=b1#external=18`对应一个ID=2,然后每个ID下有很多有关时间变化的数据,比如ID=1对应`(1443782126,80),(1443782127,85)` > >在内存方面,ID和时间戳组成成key,比如(1,1443782126),它的value是字段值,key space is ordered. > > **算法发展里程**:LSM Tred, Log-structured merge tree,日志结构合并树,高插入量文件的索引访问键值对,将数据保存在两个或多个单独的结构中,每个结构对其各自的底层存储介质进行优化,让多个数据结构分批同步,but delete is too expensive;Seperate LSM tree per block of time, too many open file handlers;Memory-mapped copy-on-write B+ tree, 写入吞吐量不高;最后采用了Time Structured Merge Tree, TSM tree。 > > > **组件**。有三个主要组件。一个是WAL,write add log, 一开始放在memory index中,间歇性地flush到disk index,最终和memory映射上。内存中的数据包含Headers, Blocks, Index, Footer四部分;另一个是In memory cache,看作是memeory table;还有一个是Index Files,看作ssTalbe。 > > > **关键术语**。Measurement相当于数据库中的表;tag sets, 在内存中的标签;Fields字段;Points表示一条记录由时间戳标签数据组成;Series包含measurement,tagset,每个时刻的Point,retension policy,时间戳;对tag可以进行分组,正则表达式;对field可以进行函数计算。 > Grafana,时许数据可视化工具,在工业监控、气象监控、家居自动化等领域有着广泛应用。可以和InfluxDB搭配使用。 > 阿里云TSDB for InfluxDB和自搭建Influx对比。 比较的方面 | 自搭建InfluxDB | 阿里云TSDB for InfluxDB -|-|- 可靠性 | 基于高效云盘的99.99%可靠 | 基于高效云盘的99.99%可靠 | 服务可用性 | 可能会因为参数设置不当或瞬时压力造成进程终止,且需要自己单间进程恢复机制 | 提供完善的进程回复机制,更完善的内存管理机制,全自动Load Shedding应对瞬时冲击,具备磁盘即将写满的自动保护机制 | 安全性 | 自行修复数据库漏洞 | 防DDos攻击,流量清洗,及时修复数据库漏洞| 运维 | 需要专职对InfluxDB维护 | 提供图形化控制台| 数据备份 | 自行实现 | 自动实现(待上线) | 冷热数据分离 | 无法实现 | 自动实现(待上线) | 扩展 | 单机免费,但扩展需要支付给美国公司,费用昂贵手续麻烦 | 支持无限扩展 | 价格 | InfluxDB免费,购买三年云服务器的费用在5000元左右 | 按月付费 | **阿里云TSDB for InfluxDB价格估算** **估算时间线**:一个开关的一项数据,比如电流算一个时间线。如果要统计电流、电压、功率、电量、线温、漏电电流,一个开关有6条时间线。假设一个项目中有1000个开关需要6000条时间线。 **估算每秒写入数据量**:在电流、电压、功率、电量、线温、漏电电流中,功率和电量需要按秒统计,电流、电压、线温、漏电电流按分钟统计。大部分情况下写入数据量=2*1000=2000条, 到整点分钟时写入数据量=6 * 1000=6000条。 **阿里云的以下套餐适合:** ![](./imgs/sxspec.png) **计算公式**。 总费用=实例费用+存储空间费用=实例费用+存储空间大小*存储空间单价 其中实例费用看作是计算资源的费用 - 按月付费每月总费用=436元 - 按小时付费每月总费用超过1000元 > 每增加1000个开关,在时序数据库上每年的开销最多增加5000元左右。开关数量越多,越划算。 # 评估 # 试用 # 采纳 # 暂缓