一个数据库,我们可以抽象的认为由下面的一个逻辑结构组成,刨除意义不大的视图,存储过程,外键限制等之后,我们就剩下了下面的这张图:


海量存储系列之一

从API来说,也就是SQL,结构化查询语言,这个东东我们后面再去细说,先来看看这个关系代数模型。
之所以要从这里开始,主要的原因是因为,这是最受到关注的一个部分,自大从一开始做分布式数据层开始,被人问得最多的问题就是:1. 切分以后如何做join。2.如何进行分布式事务。。

可惜,现在我也没有一个方法能做到100%让您满意。。因为,没有银弹,只有取舍。

取舍的原则,也就是要根据,1) 你能做什么。2)你需要做什么。3)你能放弃什么。来决定上层系统的整体架构。传统的ACID的关系代数模型,在新的环境中,很难复用。但,原理没有变,做法上可以做微调

不知道各位在想起关系代数的时候,会想到什么?

http://www.bitscn.com/os/windows/200604/4364.html 我给大家一些解释(当然我没仔细看过:)

不爱看上面解释的童鞋们呢,也不用纠结,给大家一些简单的例子。

1. select from tab where user = ?

这就是最简单的关系代数的例子,我们对他进行抽象来说,其实就是将大量数据中的一小批数据,按照某个要求查出来的过程。

2. select ename,dname from emp,deptwhere emp.deptno=dept.deptno and emp.deptno=30

这是另外一个例子,本质来说就是个∩的操作。

3. select count() from tab.

这是关系代数的第二个主要的用处,就是进行统计和计算,这类的函数有个专用的名字,叫做aggragate function.

恩,基本上有这个概念就可以了。

那么这里请联想,你所接触到的什么地方会有碰到有这样的一些计算呢?

数据库?对。不过不是废话么。。

还有就是hadoop的平台也会用到,hive pig.

那么,我们对这类关系代数进行一下简单的概念上的小结。

也就是用于处理数据的一类方法的抽象,最主要的作用是,按照某个条件选出一批数据,然后再进行一些简单的统计计算的功能。如是而已:)

本文来源于"阿里中间件团队播客",原文发表时间" 2011-12-07"

相关文章: