cache后关系型数据库
来源:互联网 发布:iis7和php 编辑:程序博客网 时间:2024/05/17 07:12
cache数据库的结构
关系数据库有聚族索引和非聚族索引,在cache库中有data和index与其对应,cache中有表的全部数据都存在以^开始的一个变量中,我们称它为global。比如一个临时的global可以定为^TMP(临时的global就是可能在什么时候给kill掉),这样一来,他就像是一个已经持久化了的数据,一直存在库中。比如创建一张表。Student它有字段st_No,st_name,st_birthday,但他有一个rowid我们定名为:st_Rowid;这样我们可以定义这张表对应一个^STUDENT(st_Rowid)的global它将存有所有的学生信息。
我们动行insert into Student valuse('0001','wang1','1986-1-1') 时
他会发生如下的插入
^STUDENT(1)=0001^wang1^52961
//^为一分割符. 当然当你插入一个^时库可能会有问题. 52961是1986-1-1到1841-1-1这间的天数. 1841-1-1为第一天
如果你要在表上的名字,和生日上建立索引就可以加二个index级的global
^STUDENTi(0,"name",st_name,st_Rowid)和^STUDENTi(0,"birthday",st_birthday,st_Rowid)
这时这二个索引就会加也被写值
^STUDENTi(0,"name","wang1",1)=0
^STUDENTi(0,"birthday",52961,1)=0
我们多运行几句insert语句
insert into Student valuse('0002',mazi,'1986-3-1')
insert into Student valuse('0003','zhousan','1986-2-1')
insert into Student valuse('0004','lisi','1986-4-1')
这时库中的global:
data
^STUDENT(1)=0001^wang1^52961
^STUDENT(2)=0002^mazi^53020
^STUDENT(3)=0003^zhousan^52992
^STUDENT(4)=0004^lisi^53051
index
^STUDENTi(0,"name","lisi", 4)=0
^STUDENTi(0,"name","mazi", 2)=0
^STUDENTi(0,"name","wang1", 1)=0
^STUDENTi(0,"name","zhousan", 3)=0
^STUDENTi(0,"birthday",52961 ,1)=0
^STUDENTi(0,"birthday",52992 ,3)=0
^STUDENTi(0,"birthday",53020 ,2)=0
^STUDENTi(0,"birthday",53051 ,4)=0
再看一下它的树的存储
第一个global是一个data的。后面的是index主要用来快速的找到data,index树的最后一行都是主的rowid。
如果你要找名字是在mazi后面的那个人的生日是什么:
set name = $order(^STUDENTi(0,"name",mazi)) //$order()是一个方法找global同一节点层的下一个值 ,运行完后:name=wang1
set rowid = $order(^STUDENTi(0,"name",name,"")) //运行完后 : rowid=1
然后再去找data
set brithday = $piece(^STUDENT(rowid),"^",3) //运行完后: brithday=52961
set date = $zd(brithday,3) // 把日期转成yyyy-mm-dd的格式
这样就拿到了。
当然你也可以建立混合索引^STUDENTi(0,"day",st_birthday,"name",st_name,st_rowid)。
你可以很灵活的用索引,能相当灵活的控制走向,快速地找到你要的东西。
- cache后关系型数据库
- 后关系型数据库学习之生成数据记录
- 数据库-关系型数据库
- 关系型数据库 : 非关系型数据库
- 关系型数据库/非关系型数据库
- 关系型数据库&&非关系型数据库
- 关系型数据库&&非关系型数据库
- 关系型数据库和非关系数据库
- cache 计算关系
- TLB和cache关系
- 介绍Matisse--专为.NET的后关系型数据库part 1
- 介绍Matisse--专为.NET的后关系型数据库part 1
- 数据库与关系型数据库
- 关系型数据库管理
- 非关系型数据库
- 关系型数据库
- 关系型数据库
- 关系型数据库简介
- C中enum类型成员的参数变化
- 关于Arcinfo几种地图格式的说明
- stl erase 的正确使用
- 转来latex常用设置
- 脚本运行时库FileSystemObject
- cache后关系型数据库
- asp中嵌入HTML代码的简单问题
- Java 开发中用到的几种过滤器
- Ubuntu不得不分享的24条使用经验
- 很不错的JQuery入门的教程
- 几个常用的shell脚本
- 最优二叉搜索树
- python笔记——诡异BUG?
- 学生成绩数据库项目分析