关于NoSQL

来源:互联网 发布:nginx tcp反向代理 编辑:程序博客网 时间:2024/05/21 10:50

        大家都知道,最近一段时间里,NoSQL是比较热的技术,很多人也在讨论它。许多DBA在日常工作、聊天过程中,都会讨论到Hadoop或者MongoDB,仿佛不懂这些就已经out了一样。而我是程序员的忠实读者,在某一期的推荐书单里面看到了《NoSQL精粹》这本书,就买来看看。不说别的,就说一下看完之后的感受吧。


一、为何NoSQL


        目前,大数据是一个火得不能再火的热点。为了适应大数据及横向扩展的要求,集群是仿佛是当前最好的解决方案。之前并没有这种感觉,只是前一段时间在做一个国产化项目的解决方案的时候,忽然发现原系统中有好多应用是基于小型机的。于是乎就开始向我的供应商联系,想找一款性能相当的小型机。找了好多,只有浪潮有一款,而且价值不菲。供应商问我,为什么还要寻小型机?小型机的年代已经过去,现在都是用集群来做替代解决方案。这时的我如梦初醒,于是我也在问自己,平时总是在说手下那些做方案的人不知道创新,只知道沿续原来的东西。到自己去做方案的时候,还是会出现同样的总是。于是,不禁开始思考这些年所受的教育,所有的东西都是在叫我要中规中矩、按步就搬,一点创新都不能有。一旦有了不一样的声音,等待我的不是考试不及格就是叫家长。怪到我会有如此之举…


        仿佛有点跑题了,还是接着说为什么要使用NoSQL吧,虽然关系型数据库非常成熟、且深经百战,但关系型数据库不支持集群,这给横向扩展带来的困难,可能只有小型机这样的设备能够满足要求。而且一旦要进行扩展操作,停机、迁移数据库是必不可少的工作。而NoSQL最大的优势就在于它支持集群操作,可以轻松进行扩展。


二、何为NoSQL


        研究了几天,个人觉得,其实所谓的NoSQL就是将原来关系型数据库中的强约束去掉,使得程序员可以根据实际需要来进行个性化定制。无论是数据库实例、关系、事务等概念,在NoSQL数据库中均有相应的概念与之对应。在这种情况下,就将原来通用的、严谨的关系型数据库变成了现在的这种面向应用、较为个性的NoSQL,那么究竟这是不是一种好的方式呢?在某些情况下来看,NoSQL确实给我们提供了另外一种解决方案。但在实践过程中,还是要根据实际情况来确定究竟是使用哪种数据库更有优势。因为我们不是在实验室,而是在做工程,工程就要求我们能够看到使用新技术带来的价值,没有产出的投入是没有意义的。花了很多精力去实现NoSQL而实际收益却很少,这种方案是没有意义的。


三、如何NoSQL

        虽然传统的关系型数据库在集群计算、横向扩展等方面存在这样那样的总是,但它毕竟经过了很长时间的发展与应用,还是有相当的积淀的,也是非常有优势的。在实际工程中,关系型数据库与NoSQL并存的这种混合型数据库是一种非常好的解决方案。例如在电子商务系统中,涉及到用户订单、付款情况等核心方面的关键信息,应该用关系数据库去维护,因为系统对这方面信息的可靠性要求非常高,不能有错误出现。而购物车、推荐商品等方面的辅助信息,使用NoSQL数据库来维护则非常合适,因为这方面的信息需要系统地分析用户的社交网络信息,同时根据用户所在地将这些计算分布到集群上去进行是非常有意义的。


四、结论


        NoSQL是新兴的数据库技术,在某些方面确实为我们带来了新型解决方案,但还是要根据实际情况进行选择,而不是为了NoSQL而选用NoSQL,还是要根据工程需要制定方案。

原创粉丝点击