数据库初创
像TensorFlow这样的机器学习需要数据库是必不可少的。然而,由于我对这个数据库的知识完全是零,所以我先简要总结了从关系型数据库管理系统(RDBMS)到新型SQL(NewSQL)的初学者知识。对于那些涉及数据库的人来说,这些内容是显而易见的。
关系数据库管理系统
RDBMS(关系数据库管理系统)是一种专门用于管理关系型数据库(如MySQL)的软件。关系型数据库将数据以二维表格(表)的形式表示,由“行”和“列”组成,并且可以在多个表之间通过关联(关系)来连接数据。
-
- MySQL
-
- PostgreSQL
-
- MariaDB
-
- Oracle Databasr
-
- SQL Server
- DB2
另外,还可以使用一种被称为通用且功能强大的SQL语言,具备ACID事务特性。ACID来源于以下四个单词的首字母缩写,保证了数据在任何时间点都必定是正确的。对于金融系统来说,这是一个必不可少的特性。
-
- 原子性(atomicity)
-
- 一貫性(consistency)
-
- 独立性(isolation)
- 永続性(durability)
然而,关系数据库管理系统 (RDBMS) 不容易进行横向扩展,从而导致成本增高的问题。通常,为了提高性能,有两种方法可供选择:纵向扩展和横向扩展。纵向扩展是通过提升计算机硬件性能来实现的,成本较高。而横向扩展是通过使用集群或大量廉价的个人计算机进行分布式处理,尽管效率较低,但扩展性强且成本较低。横向扩展的难点在于处理大数据时成本非常高。
此外,为了ACID,对于执行一项进程或事务的数据进行排他处理,并具有回退和向前回滚功能,但这些功能也会导致开销增加。此外,关系数据库管理系统也存在不适用于非结构化数据(如图像、音频、视频等)的缺点。
非关系型数据库
于是,NoSQL(不仅仅是SQL)应运而生。NoSQL具有易于扩展、快速的数据访问和无模式等特点,主要分为以下四个类别。
-
- キーバリュー型(KVS)
-
- ワイドカラムストア型
-
- ドキュメント型
- グラフ型
首先,关于键值型数据库,可以说它属于键值型的基本部分,因为许多NoSQL数据库都具有键(key)的特性。数据的管理和访问是通过键来进行的,并且每个键都对应一个值。它具有快速的性能和可进行数据分布的能力,因此具有良好的扩展性。特别是在读取数据方面,比关系型数据库更快。例如,okuyama、Riak、memcached、Redis等是一些键值型数据库。
宽列存储类型有时也被称为列导向存储,数据以记录(行)的方式进行管理,类似于RDB。访问是基于键的,类似于键值存储,以列为单位进行访问,并且可以具有多个列。有些列可以具有嵌套结构。此外,有些需要定义表格和列的模式。与键值型相比,它擅长搜索和聚合处理,并且被认为适用于日志数据分析等用途。Cassandra、HBase和Hypertable等是宽列存储的例子。
文档型的数据存储方式并非基于键值,而是以更复杂的文档形式进行存储。可以使用诸如JSON和XML等数据描述格式进行处理。特别是在处理复杂数据结构的应用程序中,可以高效灵活地进行开发,并可应用于日志分析、Web系统、在线游戏等。MongoDB和CouchDB等是其中的例子。
图形类型是根据图论构建的,由相互连接的元素组成,设计用于表示任意数目的关联数据之间关系的适当数据。图形类型被用于Facebook等平台上。图形数据库是为了对数据关系建模和探索而创建的,这在传统的关系型数据库中是不可能的。如果将数据存储在图形类型中,与关系型数据库相比,可以快速进行横向搜索。图形数据库的一个例子是Neo4j。
CAP定理是在分布式系统中的一个重要概念。它指出,在一个分布式系统中,无法同时满足一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)这三个属性。
这些NoSQL数据库没有ACID属性,而是具有被称为BASE的特性,由以下三个关键词组成。通过牺牲严格的一致性和即时反映,获得可扩展性。
-
- Basically Available(基本的に利用可能)
-
- Soft-state(状態の厳密性を追求しない)
- Eventually consistent(最終的に一貫性が保たれればよい)
此外,根据CAP定理,许多数据库被分为几类,除了单机使用外,基本上只能满足以下三个功能中的两个。
-
- Consistency(一貫性)
-
- Availability(可用性)
- Partition-tolerance(ネットワーク分断耐性)
例如,Cassandra注重可用性和分区容忍性(AP),而MongoDB注重一致性和分区容忍性(CP)。MySQL也属于一致性和分区容忍性(CP)。
新SQL
出于对具有NoSQL的可扩展性和ACID特性的需求,NewSQL应运而生。已经有许多产品面世,既具备可扩展性和ACID特性,又能像关系数据库管理系统(RDBMS)一样使用SQL语言。VoltDB因被选用为AKB48总选举的平台而成为轰动话题。
-
- VoltDB
-
- ScaleDB
-
- NuoDB
-
- Clustrix
-
- FoundationDB
- CockroachDB
另外,现在已经出现了将NoSQL功能扩展到关系数据库管理系统(RDBMS)中的案例,比如MySQL,使得RDBMS和NewSQL之间的边界逐渐消失。
请参照。
数据库的基本概念与最新发展动向
公司、数据存储与我