举个简单例子:
就拿excel表格来说,作为单一的工作表,就包含二维(行和列),而一个excel文件,通常包含多个工作表,打开excel文件时,在下方显示的“sheet1、sheet2”这些工作表页列,就是第三维。
excel是最简单的数据库应用,一个xlsx文件只有三维,但你可以用若干个xlsx文件来组成一个项目,这些文件序列,你可以视为第四维。
然后,你还可以把一组组xlsx文件放在一个个目录中,那么这些目录序列,你可以视为第五维。
再往上,你还可以设置更上一级目录,那就是第六维……
反正在excel中,任何一个单元格,都可以调用存储在本地电脑(甚至是网络电脑)任何地方的、任何一个excel文件中的、任何一个工作表的、任何一个单元格内容,所以说,虽然是一大堆的文件,你也可以当做是一个数据库来处理,只是不那么方便。
……
在数据库中,单一的数据库就能包含很多很多维,你也可以把这些维,当做树状目录的结构来理解,也可以当做一堆堆的xlsx文件集合来理解。
磁盘的存储结构(不管是fat还是ntfs,还是linux或os或别的什么磁盘格式),都是一种大型的、多维的数据库,分区是一个维度,目录是一个维度,每一档下级目录又是一个维度。文件是一个维度,文件中的章节行段也是维度……
数学中的维度概念,和通常意义上的空间维度,是两回事。
空间维度可以用数学来解释,但数学维度,三维以上你就无法用空间来显示。
但在数据库中,三维只是基本操作。
……
用excel来举例,已经是我能找到的最容易理解的方案。
我真正理解数据库维度时,是从数组开始的,当时使用一个很简陋的编程软件,他不提供数据库建立和访问,数组的维度也有限,还需要自己建立多维存储文件,并且只支持文本格式。
文本格式中,使用【】标记数组维度,【】中间的标识符可以自定义,通过各种不同的标识符来延伸维度……做着做着,我忽然间就领悟到什么叫数据库、什么叫维度,如果不考虑执行效率的话,用一个文本文件,就能模拟出一个硬盘来……
举个简单例子:
有一个数据库是保存着电脑在全国的销售额,字段分别为:产品编号,产品类型,区域,省份,城市,销售季度,销售额
在上面那个表中,除开产品编号与销售额外,其他的字段都算是维度,可以从这些维度来分析产品在全国的销售情况。通常是在数据分析与挖掘中用到。与维度相对的是度量,即是销售额。
是这样,存储过程是一些事先写好的语句,保存在数据库中,通常与数据库一起安装在数据库服务器上,可接受来自PC工作站的调用请求。
存储过程之所以有价值,是因为它保存在服务器上,当你在PC机上发出查询指令时,那只是一个简单的指令名称,具体的查询和解释利用服务器的强大能力完成,最后仅反馈结果给PC,这样就充分利用了服务器的计算资源,还节省了网络带宽。
当然,存储过程也有缺点,其中一个就是移植困难,你在SQL中写的要移植为Oracle的,就只好重写,虽然理论上可“翻译”,但SQL和Oracle机制不同,要想发挥各自的深层性能,只能用各自的“个性化”语法,所以其实移植代价很高,不如重写。
再有就是反编译比较简单,安全性较差。
相信随着三层架构的崛起,业务逻辑开始向中间层转移,而不是象过去那样集中在数据库服务器上,C/S模式下大行其道的存储过程会慢慢走向没落的。