大数据课程1-历史是重复的车轮
进入互联网时代,各种技术都在不断地突破,进步。它的速度快到可能你研究生毕业了,已经有更好的选择能替代他了。 作为一名大学生,很多时候都会陷入一种迷茫, 究竟应该学什么,java 还是c++,mysql 还是newsql,再不学map reduce是不是已经晚了。学习大数据的第一节课,就是学习历史,让大家对“data”有一个更为清晰地认识让“Big data”不再那么神秘的同时,能对于未来的发展有一个更清醒的认识。
第一个数据存储系统是在六十年代被IMB建立, 他是用树状图存储数据,例如 学校-班级-学生。 程序员需要编写代码提取数据。 这个结构造成数据缺少独立性。意味着如果数据结构变成 学生-班级-学校, 那么它的提取过程就要重写。 另一个不足就是作为一个树状结构, 每一个学生都必须存在一个班级,一个学校 而不能独立存在。 所以它的另一个不足就是数据有很大的重复性。
例:
Until failure do
Get next Part (color = red)
Enddo
七十年代的时候有两个突破 一个是CODASAL,它不再是单向的树状结构, 而成为多向的网状结构,但是它让程序员编写代码更加复杂。 他的突破说明了树状机构是一个非常限制的模式,以及数据独立是极其重要的
。
例:
Find Supplier (SNO = 16)
Until no-more {
Find next Supply record in Supplies
Find owner Part record in Supplied_by
Get current record
-check for red—
}
另一个突破则是关系模型,也就是我们现在使用的sql数据库。因为IMS在数据管理上的困难, Ted Codd 提出了3点,一是以table这个简单地结构存储,二是提出高级语言,三是程序员不用担心物理存储了。 我没很看懂这段,原句是
”
With a simple data structure, one has a better change of providing logical data
independence. With a high level language, one can provide a high degree of physical
data independence. Hence, there is no need to specify a storage proposal, as was required
in both IMS and CODASYL.”
IMS以及CODASAL已经鲜有人知,SQL成功的例子告诉我们,简单模型有助于逻辑数据的独立,技术的争论讲被市场验证, query高级语言的优化是极其重要的。
在八十年代中,学术界产生了一股面向对象的数据库的热潮。 SQL数据库和程序是两个分裂的部分,如果我们要提取数据库的内容,我们先要在自身程序定义变量,然后转换成数据库的语言,然后翻转。 而面向对象数据库,它提出了直接在程序里定义数据库的内容,并进行编辑。不好意思的是,因为它是一家法国公司,没有及时进入美国市场,所以最后不了了之了。这个例子告诉我们
,要跟风,就要跟美国的风
。。。。。。
接下来,XML又火了,几乎所有人都在热议,它会不会成为“the next big thing”。但是我们老师就问了一句“有人用XML吗”没一个人举手。。然后这个话题就过了。。简单地说就是他是网状的复杂结构,1.很难,2.市场没有特定需要。
再接下来就是JSON,又一个类似IMS的数据结构,老师又问了一句“有人用json”吗。。然后话题又过去了。对于特殊的数据类型例如sparse data稀疏数据,它确实有独到之处但是不能作为general的数据库类型。
接下来就是现在很火的Mapreduce。 Mapreduce 是google 为了处理分布式的并行处理大数据而专门设计的程序模型, 但是google 已经不用了,转用Big table。
全文总结
就是: hierarchy的没用,太复杂的不要,要最简单使用的才能被市场接受。 如今很少有一个数据库能使用所有数据类型,但是分布式处理的趋势不会变,parsing/optimizer/executor的架构不会变。
历史已经过去,现在正发生的是nosql,它使用key value pair, 使用get function 提取数据, 大多开源。
另一个则是newsql,使用sql样的关系模型,分布式处理,但是大多闭源。
这两个将在后面进行主要学习, 敬请期待!