Nosql带领我们进入到一个新的数据库世界,字面上我们不要理解为是“No sql”,应该正确理解为“Not only sql”就是说我们不仅仅使用sql来查询和处理数据,还可以利用编程语言和其他技术来管理我们的数据,数据是多种多样的,就跟达尔文的进化论类似,数据也会进化,从远古的甲骨文,到现代的二进制,还有最近流行起来的二维码,不同的数据其管理方法也是不一样的。由原来无库时代->层次状数据库->网状数据库->关系型数据库->非关系型数据库->未来超级数据库,这也是进化而来,前些日子看了放映的大片《普罗米修斯》,里面有一个震撼的场面“星际云图”,如下图所示,在一个有限空间里展示出了整个宇宙分布,每个星系每个星球都非常逼真而清晰,自己知道自己所在的位置,这样的信息是如何保存起来的呢?
这可能不太适合使用关系型数据库来管理,说说为什么!
1.数据量:星际云图如果要实现,首先存储起来的数据量可想而知,这不是几个oracle就可以装下的。需要强大的存储设备。
2.运算量:数据转换为图形,计算各自的信息与资源,展示出来,这也不是仅仅追加硬件就可以的,早晚会碰触到天花板。
3.传输流量:数据如果是不流动的只能称之为标本,要计算出星球自己所在的位置和运行轨迹,并且要让其他的天体也知道每个行星的位置和自己的位置,这种输入/输出数据量可以想象是巨大的。
4.存储方式:这种星际云图已经不能单纯使用table来存放数据了,因为它是一种非结构化数据,最简单理解是一种三维数据,而表只能表示出二维数据,更甚者如果加上时间就是四维数据了。
如果要设计一个符合条件的Nosql数据库那么需要重点关注是什么呢?
1.解决数据量:那么我想不用多说分布式存储可能是目前可行的一个好方法,因为集中存储总有一天会碰触到天花板,不管是空间上or资金上or I/O。而分布式存储可以适当降低成本,最重要的是可以大幅度提高I/O性能。
2.解决运算量:这个方案可以采用集群作战方式,也就是人海战术,最关键的是如何协调好大家一起来井然有序的工作,需要一个中央控制系统来协调集群工作。
3.解决传输流量:可以使用超级黑电缆,这种黑电缆速率40Gb/s,低延迟,高带宽。有一个不成熟的想法,来源于Exadata RAC架构,它是用一整块背板(集成电路板)把两台机器背靠背拼起来,数据走在总线上。我们是不是可以把集群中的节点也用总线的方式串起来,这样基本上就跟上了内存IO效率啦。
4.解决存储方式:星际云图它是一种三维或者是多维的数据集合,我想这种数据可以用数学上的坐标方法来量化,每个星球有自己的坐标集合,若干个星球可以组成一个星系,就这样逐渐的拼接起来构建出图中震撼画面。
原文链接:https://www.f2er.com/nosql/204420.html