主题:【原创】浏览器是怎么变成操作系统的 -- 美人他爹
数据库的实现其实可以看作面向对象编程的原形。一个对象里有描述这个对象的 Property。一个 Table 里也有描述这个 Table 的 Column。施加在对象上的还有 Method。Table 不包括 Method。但 Method 就靠 SQL 来实现了。
正是有了这个特性,面向对象编程和存取数据之间的互动才变得相当容易。盖只要把每个 table 都当作 Entity 来处理就好了。
虽然我基本上只使用C/C++,对其它语言总是嗤之以鼻,但不得不说这些特性是C/C++以及其它程序语言在数据处理时极度缺乏的手段。我现在的工作,就是所谓的“海量数据分析”,对这些特性的需求非常强烈。然而,由于我们倾向于“分析”这一块,所以SQL本身的运算能力和效率有不能达到要求,所以还得用C/C++为主。所以,非常头痛的就是这些集合的操作了。传统的所谓容器是无法满足我们的要求的,除了数据类型的原因,更重要的是量的问题:我们的数据不大可能小于内存的容量,那些容器就都成了摆设。而和SQL接口,又由于二者的本质区别导致非常别扭,且影响效率。所以我们正在开发一个介于二者之间的东西:既具有SQL的无类型集合操作的特性,又可以方便地以数组方式操作。另外我们还需要这个玩意可以分布式存储和计算,以利用现在的廉价集群。
就是个典型的面向过程:
数据结构+函数.
面向对象的三大特性:
封装, 继承, 多态, 关系型数据库一个都没体现出来.
然后分布式的就是big table
SQL只是适合部分情况。通用数据库不可能有效的处理所有case
数据库是面向表格的,Table Oriented, TO
易懂难精。惭愧的说,我也是最近几年才真正弄通。以前自以为精通,直到某个项目之后,才明白自己的浅薄。
稍微点评一下:
不全对,在Stored Procedure里是可以一行一行来操作的,但不到万不得已,不鼓励。
这个我认为是时代的进步,就像您用一把螺丝批一样,不一定要明白这把螺丝批是怎么制造的吧?
这个不明白会有什么问题?
这个估计是效率问题,举例说,您可以一次用一个Update来更新某个Table,也可以用Cursor逐个纪录来更改,一般而言,Update的效率会高很多,但是,如果更改的条件复杂的话,Update的语法比用Cursor的会笨拙很多,传统的程序员会很讨厌。
呵呵,一家之见而已,老叫化的打狗棒请放轻点!
BigTable是针对大约10年前的硬件条件设计的,我们希望我们的系统可以在10年以后的硬件条件下有较好的性能。所以,考虑10年后,摩尔定律应当在这10年对单机的计算能力仍然有效的话,则单机可有接近处理Internet规模数据的能力,但可靠性下降不少。在这种情况下,我们的设计和BigTable还是有不少差异的。
sql确实让人又爱又狠
爱的是用sql 可以不动脑子 select * from XXX where XXX=XXX 这样很爽,至于底层,没必要考虑
恨的是用sql 有时候想动脑子也不行,程序员写出一些触发全表扫描或者引发死锁的sql语句简直就该杀,可这不是sql语法的问题,是dbms实现的问题,所以dba边骂娘边调优,数据库的调优有的时候需要走一些反范式的偏门,比如数据冗余,这个时候,sql怎么写,怎么维护数据完整一致,又轮到程序员骂娘。。。极端情况下,就子子孙孙骂娘无穷尽了。。。
所以才有orm框架百花齐放,目的都是尽可能让程序员能够忘掉sql,让orm全权解决sql语句的优化和数据cache,让dba踏踏实实玩儿他的dbms,这样就和谐了。
可是orm框架不和谐阿,百花齐放的结果就是无所适从,而且框架的设计也是良莠不齐,甚至有的时候比sql还复杂。。。
现在已经不叫WEB DOC了,开始叫WEB DATA。Google的市场份额居高不下,但是GOOGLE能index的html文件的比例是不是越来越低了?
sql:
select
insert
delete
update
REST:
POST
GET
PUT
DELETE
做的就是API,玩儿的就是data,说来说去,都是资源,到了也跑不了URI的圈儿
如果web service 壮大,html越来越少几乎是一定的了,但是google才不怕呢,那时候,通过URI得到的数据都有良好的格式,肯定比乱七八糟的html好作index
不对,要是web service都有权限验证,怎么办?凉拌,都那样了,google的坟头都该长草了。
一楼姓张的站出来,就是
SELECT * FROM 一楼 WHERE 姓 = ‘张’
公司销售部门的工资统统降百分之五
UPDATE 公司 SET 工资 = 工资 * 0.95
WHERE 部门 = '销售'
简直就是直译。
SQL本来操作的就是集合数据,您非要找循环作啥泥?
难道大家都没有看出来吗?
我的理解,所谓操作系统,就是一套供人们管理机器个部件运转的指令。
操作系统有不同高低层面的,有了高级的操作系统,人们可以远离难记的机器指令。
SQL就是迄今我所见到的最高级的操作系统,它的指令最接近人语。
类似的,许多高级操作系统对于矩阵的操作,如矩阵相乘,写出指令来就是a*b,也已经脱离了那刀耕火种的循环年代,循环啊GOTO啊就都是石器时代。
谢谢:作者意外获得【通宝】一枚
鲜花已经成功送出。
此次送花为【有效送花赞扬,涨乐善、声望】
[返回] [关闭]