目前数据库可以在任何地方运行,从智能手机、数据中心的服务器,到地域分散的云环境。除关系表格数据库之外,还有面向时间序列、图、空间、文本、联机分析处理(OLAP)、XML和JSON等数据的数据库。一些数据库专门处理某一种数据,一些数据库允许用户选择数据类型,但每次只处理一种;一些数据库允许多种类型的数据共存于同一数据库实例中,一些数据库善于联机事务处理(OLTP),一些数据库主攻联机分析处理(OLAP),还有一些数据库合适处理事务和分析混合工作负载。
我们将讨论的一些数据库可以在本地运行,一些数据库专门支持云环境,但与本地数据库兼容;一些数据库是"云原生",这意味着它们只能从云提供商处取得。下面怎么让我们来看看云数据库选型如何梳理需求?
一、肯定数据库需求
数据库本身几近历来不是独立存在的。相反,数据库通常是利用系统的后端或存储层。
如果该利用是遍及全球的多人玩的视频游戏,那末读取延迟和写入延迟都很重要,数据库可能需要散布式,不过不一定是关系型的,也不一定要有强一致性;键值数据库可能很理想。如果该利用记录和监测来自阀门的传感器输出,数据库应当能够快速写入大量的时间序列数据。
二、你会生成多少数据?生成数据有多快?
几近任何云数据库都可以处理少许的数据(数GB或更少),一些云数据库可以在内存中处理这些数据,许多云数据库可以处理数TB(数千GB)的数据,只有少数可以支持数PB(数百万GB)的数据。请注意,大多数云数据库按月收取存储费,SSD存储方面的费用高于磁盘存储。
数据到达的速度会给其他指标带来压力,比如数据库写入速度和网络容量。如果大量数据突然到达,数据库或前端程序在将数据写入到永久存储装备时可能需要将数据缓存在内存中,以避免数据丢失。人们常提到的Redis(一种内存中数据结构存储,用作数据库、缓存和消息代理)能够为其他数据库缓存大量突发数据。
三、你预先知道数据库模式吗?
如果你的数据库模式(数据的结构)是预先肯定的,不太可能随时间的推移而产生显著变化,如果你希望大多数字段面对不同的记录有一致的类型,那末SQL数据库是不错的选择。否则,NoSQL数据库可能更合适你的利用。
不过也有例外。比如说,Rockset这类操作型数据库允许SQL查询,无需要求它所导入的数据有固定模式或一致类型。
四、哪一种形状合适你的数据?
关系SQL数据库将强类型数据存储在具有行和列的矩形表中,比如Microsoft SQL Server、PostgreSQL和MySQL。它们依赖表与表之间的定义关系,使用索引加快选定的查询,并使用JOINS一次查询多个表。许多现代关系数据库(包括Oracle Database)也支持其他形状。
文档数据库通常存储可能包括数组和嵌套文档的弱类型JSON(文本或二进制),比如MongoDB和Couchbase。图数据库存储具有属性的顶点和边,比如Neo4j,或存储RDF三元组,比如AllegroGraph。不管是哪一种实现方法,图数据库都强调实体之间的联系。其他种别的NoSQL数据库包括键值数据库(比如 RocksDB)和列式存储数据库(比如Cassandra)。
有时,数据以一种适用于分析的形状被获得,有时并不是如此,因此需要进行转换。有时一种数据库建立在另外一种数据库上。比如说,键值存储数据库几近可以用作任何类型的数据库的基础。
五、你的延迟要求是甚么?
延迟是指数据库的响应时间和利用系统的端到端响应时间。在理想情况下,每一个用户操作的响应时间都在亚秒级,这常常意味着需要数据库在100毫秒内为每一个简单事务做出响应。分析查询常常需要几秒钟乃至几分钟,利用系统可以通过在后台运行复杂的查询来保持响应时间。
云端运行数据库会使延迟的丈量很复杂。这里触及多个因素:最简单的考量因素是客户端和数据库之间的延迟,因数据库查询响应而增加了整体延迟。一个更复杂的考量因素是,在散布式数据库中提交事务可能需要等待地理散布区域中的写入,特别是在数据库保持强一致性的情况下。
想了解更多云数据库的相干知识,请关注达达云的新闻资讯。
TOP