热数据需要在内存中存储和处理,因此适合用缓存或内存数据库(如Redis 或SAP Hana)。AWS提供了ElastiCache服务,可生成托管的Redis或Memcached环境。NoSQL数据库是面向高速但小规模记录(例如,用户会话信息或物联网数据)的理想选择。NoSQL数据库对于内容管理也很有用,可以存储数据目录。
01结构化数据存储
结构化数据存储已经存在了几十年,是人们最熟悉的数据存储技术。大多数事务型数据库(如Oracle、MySQL、SQL Server和PostgreSQL)都是行式数据库,因为要处理来自软件应用程序的频繁数据写入。企业经常将事务型数据库同时用于报表,在这种情况下,需要频繁读取数据,但数据写入频率要低得多。随着数据读取的需求越来越强,有更多的创新进入了结构化数据存储的查询领域,比如列式文件格式的创新,它有助于提高数据读取性能,满足分析需求。
基于行的格式将数据以行的形式存储在文件中。基于行的写入方式是将数据写入磁盘的最快方式,但它不一定能最快地读取,因为你必须跳过很多不相关的数据。基于列的格式将所有的列值一起存储在文件中。这样会带来更好的压缩效果,因为相同的数据类型现在被归为一组。通常,它还能提供更好的读取性能,因为你可以跳过不需要
的列。
我们来看结构化数据存储的常见选择。例如,你需要从订单表中查询某个月的销售总数,但该表有50列。在基于行的架构中,查询时会扫描整个表的50个列,但在列式架构中,查询时只会扫描订单销售列,因而提高了数据查询性能。我们再来详细介绍关系型数据库,重点介绍事务数据和数据仓库处理数据分析的需求。
(1)关系型数据库
RDBMS比较适合在线事务处理(OLTP)应用。流行的关系型数据库有Oracle、MSSQL、MariaDB、PostgreSQL等。其中一些传统数据库已经存在了几十年。许多应用,包括电子商务、银行业务和酒店预订,都是由关系型数据库支持的。关系型数据库非常擅长处理表之间需要复杂联合查询的事务数据。从事务数据的需求来看,关系型数据库应该坚持原子性、一致性、隔离性、持久性原则,具体如下:
▪原子性:事务将从头到尾完全执行,一旦出现错误,整个事务将会回滚。▪一致性:一旦事务完成,所有的数据都要提交到数据库中。
▪隔离性:要求多个事务能在隔离的情况下同时运行,互不干扰。
▪持久性:在任何中断(如网络或电源故障)的情况下,事务应该能够恢复到最后已知的状态。
通常情况下,关系型数据库的数据会被转存到数据仓库中,用于报表和聚合。
(2)数据仓库
数据仓库更适合在线分析处理(OLAP)应用。数据仓库提供了对海量结构化数据的快速聚合功能。虽然这些技术(如Amazon Redshift、Netezza 和Teradata)旨在快速执行复杂的聚合查询,但它们并没有针对大量并发写入进行过优化。所以,数据需要分批加载,使得仓库无法在热数据上提供实时洞察。
现代数据仓库使用列式存储来提升查询性能,例如Amazon Redshift、
Snowflake和Google Big Query。得益于列式存储,这些数据仓库提供了非常快的查询速度,提高了I/O效率。除此之外,Amazon Redshift等数据仓
库系统还通过在多个节点上并行查询以及大规模并行处理(MPP)来提高查询性能。
数据仓库是中央存储库,可以存储来自一个或多个数据库的累积数据。它们存储当前和历史数据,用于创建业务数据的分析报告。虽然,数据仓库集中存储来自多个系统的数据,但它们不能被视为数据湖。数据仓库只能处理结构化的关系型数据,而数据湖则可以同时处理结构化的关系型数据和非结构化的数据,如JSON、日志和CSV数据。
Amazon Redshift等数据仓库解决方案可以处理PB级的数据,并提供解耦的计算和存储功能,以节省成本。除了列式存储外,Redshift还使用数据编码、数据分布和区域映射来提高查询性能。比较传统的基
于行的数据仓库解决方案包括Netezza、Teradata和Greenplum。
02NoSQL数据库
NoSQL数据库(如Dynamo DB、Cassandra和Mongo DB)可以解决在关系型数据库中经常遇到的伸缩和性能挑战。顾名思义,NoSQL表示非关系型数据库。NoSQL数据库储存的数据没有明确结构机制连接不同表中的数据(没有连接、外键,也不具备范式)。
NoSQL运用了多种数据模型,包括列式、键值、搜索、文档和图模型。NoSQL数据库提供可伸缩的性能、具有高可用性和韧性。NoSQL通常没有严格的数据库模式,每条记录都可以有任意数量的列(属性),这意味着某一行可以有4列,而同一个表中的另一行可以有10列。分区键用于检索包含相关属性的值或文档。NoSQL数据库是高度分布式的,可以复制。NoSQL数据库非常耐用,高可用的同时不会出现性能问题。
SQL数据库已经存在了几十年,大多数人可能已经非常熟悉关系型数据库。我们来看SQL数据库和NoSQL数据库之间的一些重大区别(见表1)。
表1SQL数据库和NoSQL数据库的区别
根据数据特点,市面上有各种类别的NoSQL数据存储来解决特定的问题。我们来看NoSQL数据库的类
型。
03NoSQL数据库类型
NoSQL数据库的主要类型如下:
▪列式数据库:Apache Cassandra和Apache HBase是流行的列式数据库。列式数据存储有助于在查询数据时扫描某一列,而不是扫描整行。如果物品表有10列100万行,而你想查询库存中某一物品的数量,那么列式数据库只会将查询应用于物品数量列,不需要扫描整个表。
▪文档数据库:最流行的文档数据库有MongoDB、Couchbase、MarkLogic、Dynamo DB和Cassandra。可以使用文档数据库来存储JSON 和XML格式的半结构化数据。
▪图数据库:流行的图数据库包括Amazon Neptune、JanusGraph、TinkerPop、Neo4j、OrientDB、GraphDB和Spark上的GraphX。图数据库存储顶点和顶点之间的链接(称为边)。图可以建立在关系型和非关系型数据库上。
▪内存式键值存储:最流行的内存式键值存储是Redis和Memcached。它们将数据存储在内存中,用于数据读取频率高的场景。应用程序的查询首先会转到内存数据库,如果数据在缓存中可用,则不会冲击主数据库。内存数据库很适合存储用户会话信息,这些数据会导致复杂的查询和频繁的请求数据,如用户
资料。
NoSQL有很多用例,但要建立数据搜索服务,需要对所有数据建立索引。
04搜索数据存储
Elasticsearch是大数据场景(如点击流和日志分析)最受欢迎的搜索引擎之一。搜索引擎能很好地支持对具有任意数量的属性(包括字符串令牌)的温数据进行临时查询。Elasticsearch非常流行。一般的二进制或对象存储适用于非结构化、不可索引和其他没有专业工具能理解其格式的数据。
hbase主要用来储存什么数据Amazon Elasticsearch Service管理Elasticsearch集,并提供API访问。它还提供了Kibana作为可视化工具,对Elasticsearch集中的存储的索引数据进行搜索。AWS管理集的容量、伸缩和补丁,省去了运维开销。日志搜索和分析是常见的大数据应用场景,Elasticsearch可以帮助你分析来自网站、服务器、物联网传感器的日志数据。Elasticsearch被大量的行业应用使用,如银行、游戏、营销、应用监控、广告技术、欺诈检测、推荐和物联网等。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论