想法来源于与刚才龙老大的一番讨论,文中对于NoSQL概念性的东西摘录自:http://www.infoq.com/cn/news/2011/01/nosql-why
概念
NoSQL是对应SQL而演变而来的,NoSQL最常见的解释是“non-relational”,“Not Only SQL”也被很多人接受。
来源 – 传统关系数据库遇到瓶颈
传统的关系数据库具有不错的性能,高稳定型,久经历史考验,而且使用简单,功能强大,同时也积累了大量的成功案例。在互联网领域,MySQL成为了绝对靠前的王者,毫不夸张的说,MySQL为互联网的发展做出了卓越的贡献。 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静态网页,动态交互类型的网站不多。 到了最近10年,网站开始快速发展。火爆的论坛、博客、sns、微博逐渐引领web领域的潮流。 后来,随着访问量的上升,几乎大部分使用MySQL架构的网站在数据库上都开始出现了性能问题,web程序不再仅仅专注在功能上,同时也在追求性能。 尽管Memcached、MySQL主从分离、分表分库等技术开始应用,但还是存在MySQL的扩展性差(需要复杂的技术来实现),大数据下IO压力大,表结构更改困难等问题。
需要更高的性能
传统关系型数据库在性能巅峰上遇到瓶颈,为了应付更高的访问量,为了拥有更高的性能,NoSQL站出来了。
在关系型数据库中,有数据库、表、字段,记录等概念。而NoSQL中最常见的存储方式,则是key-value存储(当然还有其他的文档型的、列存储、图型数据库、xml数据库等)
NoSQL的优势:
- 易扩展
- 大数据量,高性能
- 灵活的数据模型
- 高可用
我觉得,NoSQL的这些优势,都是来源于其结构简单。
- 因为简单,所以数据模型灵活;
- 因为简单,所以易拓展;
- 因为易拓展,所以有高性能;
- 因为易拓展,所以高可用。
正是因为其优点都是环环相扣,所以在非集群的环境下使用NoSQL,其高性能、高可用的特点几乎不存在,仅仅剩下灵活的数据模型这一优点。
题外话
分布式集群是未来在单位有限硬件资源里面,是提升运算能力、存储能力的有力手段。
而超级大型分布式集群,只有在国家层面、或者巨型企业,才有这样的综合能力来组建。
小型公司在遇到性能瓶颈时,租用上面这些闲置能力是比较好的方案。缺什么要什么,按需使用,按业务使用。这也是各种“云”的商机。
当然,从安全角度,技术型公司的核心竞争力就是其核心技术,把什么都放在别人那里,信不信得过天知道,不过这个是另外一个层面上的问题。