浅谈NoSQL
由于项目的需要,用到NoSQL中的Mongo数据库,因为也是第一次真正意义上的使用该数据库,所以上网查阅了一些资料。对NoSQL有了一个新的认识,和大家分享。
1、 到底什么是NoSQL?
NoSQL的是在1998年创造的,很多人认为是SQL的反义词,其实它的真实含义是 “Not Only SQL的“而不是“No SQL”。通俗来说,NoSQL是非关系性数据库,它是设计满足超大规模数据存储需求的分布式存储系统,没有固定的Schema,不支持join操作。传统的关系数据库管理系统通过 “向上扩展”的方式通过更好的硬件设施来提升系统性能。 NoSQL则通过“向外扩展“的方式,这意味着应用更多的普通硬件提高系统负载能力。
2、 NoSQL的特点是什么?
NoSQL首先最大的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。并且数据库的结构简单,在大数据量下,NoSQL数据库都具有非常高的读写性能。(这次的接口流量统计,大概每天60W的访问量,所以选择了NoSQL)。其次,NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是一个噩梦。
3、 NoSQL是不是会取代SQL数据库?
既然NoSQL这么多得好处,那是否会替代关系数据库呢?答案肯定是否定的。
4、 NoSQL适用的场景例子:
1)日志/存档:日志挖掘工具是很方便,因为他们可以跨越服务器访问日志,进行关联和分析。(这个对于任何系统来说,都是可以考虑来使用NoSql来完成,可以试着借鉴淘宝、谷歌一样基于MySQL上去使用)
2)外部数据集成:许多公司需要整合业务合作伙伴的数据。即使双方进行多次讨论和谈判,他们几乎还是无法控制企业拥有的数据格式。此外,还有很多情况下这些格式的变化非常频繁- 因为变动是业务合作伙伴的需求。
3)订单处理系统:服务请求数量通过不同的渠道流向零售商,银行和保险机构,娱乐服务提供商,物流供应商是巨大的。这些请求要在世界任何地方被抓获,同时保证终端用户的交易过程不受到任何影响和中断。(我们的平台的订单系统,也可以考虑是否可以使用NoSQL来解决相关的性能问题)
4)实时统计分析系统:有时需要用一种工具来跟踪网站的实时性能指标(这次项目就是实时监控网站接口的调用情况,实时插入MongoDB数据库,又要尽量的减低对接口的性能影响)。
5、 总结
NoSQL数据库的出现,弥补了关系数据(比如MySQL)在某些方面的不足,在某些方面能极大的节省开发成本和维护成本。
MySQL和NoSQL都有各自的特点和使用的应用场景,两者的紧密结合将会给的数据库发展带来新的思路。最后不要刻意去选择用NoSQL或者MySQL,只有选择最合适的数据库,才是最终的王道。