【摘要】:为了弥补这些不足,出现了NoSQL数据库。相反,NoSQL数据库原本就不支持JOIN处理,各个数据库都是独立设计的,很容易把数据分散到多个服务器上。NoSQL数据库是为了“使大量数据的写入处理更加容易”而设计的。NoSQL数据库虽在处理大量数据方面很有优势,但实际上NoSQL数据库也有各种各样的特点,如果能够恰当地利用这些特点,就会非常有用。
关系型数据库的性能非常高,但是它毕竟是一个通用型的数据库,并不能完全适应所有的用途。具体来说,关系型数据库并不擅长处理以下事务。
●大量数据的写入处理。
●为有数据更新的表做索引或表结构变更。
●字段不固定时的应用。
●对简单查询需要快速返回结果的处理。
为了弥补这些不足,出现了NoSQL数据库。关系型数据库应用广泛,能进行事务处理和JOIN等复杂处理。相对地,NoSQL数据库只应用在特定领域,基本上不进行复杂的处理,但它恰恰弥补了之前所列举的关系型数据库的不足之处。(www.chuimin.cn)
如前所述,关系型数据库并不擅长大量数据的写入处理。关系型数据库的语义依靠表之间的连接(JOIN)来表达,即是以连接为前提的,也就是说,各个数据之间存在关联是关系型数据库得名的主要原因。为了便于进行JOIN处理,关系型数据库往往选择把数据存储在同一个服务器内,这不利于数据的分散。相反,NoSQL数据库原本就不支持JOIN处理,各个数据库都是独立设计的,很容易把数据分散到多个服务器上。由于数据被分散到了多个服务器上,所以减少了每个服务器上的数据量,即使要进行大量数据的写入操作,处理起来也更加容易。同理,数据的读入操作也一样容易。
如果想要使服务器能够轻松地处理大量的数据,那么只有两个选择:一是提升性能,二是增大规模。下面分析这两者的不同。一方面,提升性能是指通过提升现行服务器自身的性能来提高处理能力。这是非常简单的方法,程序也不需要进行变更,但需要一些费用。若要购买性能翻倍的服务器,需要花费的资金往往不只是原来的2倍,可能需要5~10倍。这种方法虽然简单,但是成本较高。另一方面,增大规模指的是使用多台廉价的服务器来提高处理能力。它需要对程序进行变更,但由于使用廉价的服务器,所以可以控制成本。
NoSQL数据库是为了“使大量数据的写入处理更加容易(让增加服务器数量更容易)”而设计的。
NoSQL数据库虽在处理大量数据方面很有优势,但实际上NoSQL数据库也有各种各样的特点,如果能够恰当地利用这些特点,就会非常有用。例如,希望顺畅地对数据进行缓存(cache)处理、希望对数组类型的数据进行高速处理、希望进行全部保存等。
一般把NoSQL数据库分成键值存储数据库、面向文档的数据库、列存储数据库和图数据库等四类。
相关推荐