技术开发 频道

有SQL数据库为什么还要有NoSQL?

  【IT168资讯】我们都知道,SQl在数据库方面非常有用,而且至今已经用了几十年,为何有了NoSQl?我们经常会处理大量的文档,其中文档的图表都是要查找的信息,彼此之间需要互相连接,SQL的复杂度会很高,因此就有了NoSQL。

有SQL数据库为什么还要有NoSQL?
John Davies

  为什么用NOSQL?

  SQl在做有些任务的时候非常容易,比如一些文档,可以运行很多数据,这时SQl非常有用,会非常的快,如果命令行太长如何能够使他快速呢?这时会用到分布式的数据库,是否可以用Joins代替数据库呢?

  举个例子,在分布式系统中使用Java软件。如果需要在北京和伦敦之间传输1G数据,需要多少时间呢?一般来说需要12秒。如果用Java的系统会有问题。

  非常复杂的数据用关系型数据库是无法解决的

  如何在非常大的数据库中解决数据的存储等问题呢?我们会使用NoSQL,有些架构是需要SQL架构的。举一个数据量非常大的例子,银行业不管是在北京还是在上海,如果用某种价格买卖产品,每秒钟有5-10万,数据量非常大。还有一些更加复杂的情况,比如股票中的上万种投资组合,都需要有摸一个价格报出,需要有上百万的数据报出,复杂的计算规模相当的大,这些采用的都是毫秒计算,价格变化之后,全世界所有的银行都要进行相关的处理买卖。

  伦敦的一家银行的功能组合,非常的大,非常的复杂,这些功能组要发挥很重要的作用,从价格到风险计算,然后到清算等等,每笔交易都有10万个数据计算。所有的银行数据都要进行连接,而且非常复杂,在做交易和处理的时候,每秒有数十万的交易计算,因此这就需要新技术的推进。

  在西方有些人愿意面对风险,有些人不愿意接受失败,用户把钱交给银行,一旦出了错误,就需要进行相应的赔付,因此需要了解风险,并采用技术进行解决,用虚拟机把交易挪出来,进而降低风险带来的损失。

  随着银行业务规模的增加,计算机越来越多,处理能力越来越强,多数的机器使用的是服务器,8-12个核心,但是我们现在不是把电脑变得越来越大,而是需要通过编程进行调整,因此面对这些庞大的数据我们要做分布式的模型。在本地完成的话通常无法扩大规模,如果我们通过编程的话,可以再任何地方的任何机器都能使用服务,不管位置在哪里。我们不能假设所以的数据和处理都在自己本地的RAM上,可能有1T byte的数据需要分步在很多机器上,这就要采用改变编程模式的方式。如果是用的小型服务器,而且还要扩大规模的话,就需要采用分布式的架构来做。

  关于网格计算现在采用的是云计算,对于银行来说可能会有2万的电脑,然后用一个机器进行管理,将本地的电脑进行连接,做成一个私有云,然后通过编程的方式实现。当然我们还可以建立公共云,issue非常易用,也非常的便宜,你的编程和测试都非常的方便。

  Terracotta 做虚拟机的复制非常好,有开源的版本。其他的相关技术:Gigaspaces,Coherence

  New4J。银行业用的最多的是MongoDB,当然还有很多其他优秀的技术,比如:HBase,Risk。

  现在6-10家银行其中的某一家都采用了这些数据库的技术,他们的人员投入很大的人力研究这些技术。数据库技术的每一个操作都有可能导致结果的不同,这些技术都有各自的优势,都有自己发挥的领域。

  NoSQl是一个每天都要使用到的技术,处理的速度非常的快,每秒几十亿的信息,可以用Java进行编程,对于企业来说非常容易使用,大企业处理的数据量非常大,社交网站和银行业也同样,因此NoSQL在这些领域都有很大的使用空间。

0
相关文章