技术开发 频道

超越传统:NoSQL数据库大比拼

  【IT168 评论】在两三年前,选择数据库是一件非常容易的事。资金充足的企业会选择甲骨文数据库,使用微软产品的企业通常SQL Server,而预算不足企业则会选择MySQL。不过,如今的情况已经大不相同了。

  最近两三年,许多企业都推出了他们自己的开源项目以用于存储信息。在许多案例中,这些项目抛弃了传统的关系型数据库准则。许多人将这些项目称为NoSQL,即“Not Only SQL”的缩写。虽然有些NoSQL数据库很简单,但是还有一部分NoSQL数据库极为复杂。不过,它们的目标都是通过替代关系型数据库,并实现更高的系统性能。

  NoSQL的支持者通过放弃传统架构成功建立起了速度更快,扩展性更高的应用。不过,一些保守的数据库管理员对此却不屑一顾。他们认为,许多SQL已经解决的问题将成为NoSQL的绊脚石。对此,NoSQL支持者并不在意,因为他们有着不同的项目需求,而如今他们正在瞄准新的目标。

  NoSQL项目有什么不同之处呢?这些新型数据库被人们以自己的方式建立起来。相反,老的SQL数据库则聚合了大量的功能和一套标准语言。程序包可能会将键与值进行配对,但是它们可以针对不同的使用案例进行调整。主要的变量并不在于数据格式,而在于它们多久被复制、存储和分割。

  例如,你是否存储一些例如个人电子邮件地址等经常被恢复的数据?一些数据是否被存储起来,以防不时之需,比如日志文件?你是希望有更多使用小容量数据的用户,还是希望只有几名使用大容量数据的用户?如果你丢失了几行用户数据,那么你的行为是否会影响到你的用户的生存,这些用户是否会起诉你?

  过去,每名架构师都会为MySQL的设置而苦恼。现在,架构师可以选择一个全新的项目。如果你的项目需求与新型数据库的性能匹配,那么这种混乱中无疑蕴藏着巨大的优势。如果它们非常规整,性能将会获得不可思议的提升。但是,开发人员不会建造出一个可以解决所有问题的“无畏战舰”。

  以前,开发者会创建很好的跨数据库函数库以消除差异,让它们变得更加容易转换。例如,许多Java开发者会在JDBC函数库上编写代码。这些数据库有着很好的互操作性。老的函数库没有一个可以与这些新数据库协同工作。尽管许多项目使用的是相似的方法,但是将一个函数库移植到另一个之上需要进行大量的重新编写工作。

  更糟糕的是,许多辅助项目消失了。报告生成工具有许多种类,但是没有一个新型数据库可以使用这些工具。如果不进行一番折腾,它们是不会工作的。与SQL协同工作的程序包可能有成百上千种,但是能够帮助NoSQL的程序包却很少。有迹象显示,这种互操作性需要很长时间才能出现在NoSQL上。此外,查询语言也存在着很大的差异。

0
相关文章