to qisamuelzhang, 这位大虾说的不错,用关系代数是比较麻烦,但问题是我做的系统还涉及到查询优化(query optimization)问题,如果直接把我的语言转化成SQL可能就失去了对查询过程的进一步控制。正是考虑到想更深入的控制查询的每一步才打算先把我的语言转化成algebra,然后通过logical optimization和phsical optimization来实现对系统的优化。还有,我的语言里涉及到几个我自己定义的功能,个别的目前还没找到用sql表达的方法。在这种需求下,不知这是不是唯一的方法呢?你还有什么其他简洁的方法吗?谢谢!
我不是太明白你说的logical optimization和phsical optimization的意思,不过可以肯定的一点是,给定一个SQL语句,数据库将优化执行策略,这点也是许多大型商业数据库比开源免费数据库优越的地方。不过,根据我自己的经验,单个SQL语句的表达能力有限,我一般是把问题转换成一个存储过程,也就是一系列SQL语句的顺序执行序列,这样可以控制问题的粒度,而且更容易追踪执行过程。至于你说的自定义功能,SQL语句一般都支持用户定义的函数(User Defined Function,UDF)以扩展标准的SQL语句,我想通过这个方法应该可以解决你的需求。
这位大虾说的不错,用关系代数是比较麻烦,但问题是我做的系统还涉及到查询优化(query optimization)问题,如果直接把我的语言转化成SQL可能就失去了对查询过程的进一步控制。正是考虑到想更深入的控制查询的每一步才打算先把我的语言转化成algebra,然后通过logical optimization和phsical optimization来实现对系统的优化。还有,我的语言里涉及到几个我自己定义的功能,个别的目前还没找到用sql表达的方法。在这种需求下,不知这是不是唯一的方法呢?你还有什么其他简洁的方法吗?谢谢!
我很同意qisamuelzhang对于科学与工程的观点,但问题是我做的现在算不上工程,只是想找一条别人还没走的路试一试^_^
谢谢!不知你还有没有别的想法呢?