临时 #### 数据大体上可以分为 3 类:: 1. 结构化数据(Structured data) a) 关系型数据库 b) 分布式关系型数据库 c) 时序数据库 2. 半结构化数据(Semi-structured data) a) 非关系型数据库(NoSQL数据库) 3. 非结构化数据(Unstructured data) a) 分布式文件系统 ``分布式关系型数据库`` (NewSQL 数据库)的优势:: 1. 高扩展性 NewSQL 天生支持数据分片,支持动态增加节点,不需要进行麻烦的数据迁移工作 所以能够轻松地满足数据不断增大时的存储需求 2. 高并发性 相比于单机关系型数据库基于磁盘的设计,NewSQL 在设计上更好地利用了内存 所以 SQL 执行效率很高。 在事务的支持上,NewSQL 有着高效的分布式事务特性 所以它可以实现海量数据的读取和写入,以及大量用户的查询和更新等操作 3. 高可用性 NewSQL 采用 Paxos 或者 Raft 协议来实现多副本的存储,而且还支持自动选择主节点 保证了数据库的故障切换时间很短 开源选择有 TiDB、CockroachDB 等 商业化的产品,比如阿里巴巴的 OceanBase ``时序数据`` 在读写、存储和分析处理方面有下面这些特点:: 1. 时序数据是持续地写入 一般是采用固定的频率,没有写入量忽大忽小的明显变化 数量非常大,而且并发写入的需求也很高 但是数据很少做更新,旧数据除了特殊情况下的修改,基本是不需要更新的写入操作 2. 时序数据的读取很少 相比写入的高并发和高频率,读取的需求主要是进行数据分析的应用,而分析应用的并发访问量是比较少的 3. 时序数据时效性很强 一般是越新的数据价值就越大,旧数据会迅速失去价值 时序数据的数据分析主要关心的是新数据,旧数据被查询和分析的概率不高 旧数据一般是粗颗粒度的读取分析 而且在被分析时,一般是基于时间范围读取分析,读取某一条记录的几率很小 采用读取性能不高的 LSM 树代替 B+ 树的存储结构。 它专注于支持高并发的数据写入,采用更高压缩比的压缩算法来支持海量数据的存储,降低存储的成本 同时,通过预处理等方法来支持海量数据的高效分组聚合计算。 开源软件: InfluxDB,KairosDB 和 OpenTSDB 云服务企业: 阿里巴巴的 TSDB 和亚马逊的 AWS Timestream 非关系型数据库:: 半结构化数据包含相关标记,用来分隔语义元素,以及对记录和字段进行分层: JSON XML 说明: JSON 中大括号“{}”,中括号"[]",冒号":",逗号","就是分隔语义元素 每个冒号前面的内容是字段,后面的是记录 特点: 结构并不固定,属于同一类实体可以有不同的属性,这表明它有很好的可扩展性。 另外,即使它们被组合在一起,这些属性的顺序并不重要 例: 日志文件 NoSQL: 开源: MongoDB、CouchDB、Redis、HBase、Cassandra 商业: MongoDB 和 Oracle NoSQL 分布式文件系统:: 典型的例子有监控系统中的视频、图片和音频等信息 例: HDFS FastDFS Ceph 数据迁移工具:: Sqoop 项目 在 Hadoop 大数据存储系统和关系型数据库等系统之间架起了桥梁 借助 Sqoop,你就可以很方便地把 MySQL 数据导入到 HBase 中 采用了被称为 Connector 的插件架构,不同的 Connector 还可以对接不同的数据源, 而且你也可以根据自己的需求定制专属的 Connector 来完成一些特殊的迁移工作 增量的数据更新: LinkedIn 开源的 Databus 项目 阿里巴巴的 Canal