吵吵   2018-09-01  阅读:3,245

玩了那么久的Cache数据库,总是在玩它方便的global结构,但其实除了他的global结构和传统用“\”分割的字符串结构,Cache这些年主打的是其面向对象的结构。目前,使用Cache数据库开发的新的很多系统都基本上是用class来做的了。

装上Ensemble之后,我们来开始研究如何建立一个数据库并使用它。

考虑到图片上传对我的博客会造成太大的压力,我还是只写写步骤好了。注意,我用的Ensemble是2016年的。

1、建立数据库。

从Ensemble进入Management portal,默认账号密码是_system sys。

系统管理->配置->系统配置->NameSpace

选择新建命名空间Namespace,这时候弹出的窗口里面就可以写命名空间的名字了,但在这之前,我们先建立好数据。

在“为 Global 选择一个现有数据库”后面点击“新建数据库”。

先在D盘建立一个文件夹DATA,用于来存放数据库文件。

输入数据库名称:LIS
数据库目录:D:\DATA\
下一步不仔细详述了…

2、建立NAMESPACE

数据库建立完了后我们继续填写新建的NAMESPACE

namespace 的名称:LAB
然后数据库都选我们刚刚建立的LIS

保存之后会有一堆的日志…

然后回到D:\DATA\就看到了CACHE.DAT的数据库文件了。

3、建立实体类Class

接下来我们要在这个数据库里面建立表了(或者也叫类吧)

我们从Ensemble进入Studio,这个Cache专用的开发平台。

切换命名空间 ChangeNamespace->LAB

New->CacheClassDefinition

package name的话自己取一个,叫main吧,class name就叫patient吧。

然后要选择Persistant,持久化类,意思是要存在数据库文件里面的!

sql table name 记得写上 :MAIN_PATIENT,不然后面就用不到sql 来查询和执行了!

Class main.patient Extends %Persistent [ SqlTableName = MAIN_PATIENT ]
{

Property PatientID As %String;

Property Department As %String;

ClassMethod SavePatient(flag As %Integer = 0)
{

f i=0:1:flag
{
s x=##Class(main.patient).%New()
s x.Department=”ceshi”_i
s x.PatientID=i
d x.%Save()
}
q flag
}

写上以上代码,我们建立了一个叫做patient的类,有PatientID和Department两个属性,建立了一个SavePatient方法用来保存数据,后面用到。

然后我们点击compile进行编译,编译成功后cls,文件后面会出现Storage Default一堆文件,貌似是解释存储在哪里的。

4、保存和数据。

建立完了数据的话,我们保存一些数据进去,从Ensemble进入Terminal。

输入默认账户和密码 _system sys后我们进来了,显示的是“user”,我们切换一下命名空间:

zn “LAB”

然后写入1000,000条数据库看看:

d ##Class(main.patient).SavePatient(1000000)

哇哦,用了20s!去看看,数据库多大了,32M!

5、sql查询。

回到Management portal->”Ensemble”—>选择”LAB”

然后选择 “系统资源管理器”->”SQL”

select * from main.MAIN_PATIENT

然后就出现了1000行的数据,看样子如果你没有指定唯一索引的话,系统给你加了一个自增长的ID:

好了,文章到此结束,接下来你就可以做前台的界面了,如果用c#来连接Cache数据库的话,有个非常方便的CacheObject.dll,详细的可以见原来的文章:

其实c#也可以用CacheObject.dll的!

InterSystem近年主打快速开发平台,确实用Cache平台来做一些东西,还是蛮有效率的。

吵吵微信朋友圈,请付款实名加入:

吵吵 吵吵

2条回应:“Cache数据库面向对象Class存储”

  1. 中国律师库说道:

    财神进家门,好运进家门,有许多人会在新年时,祈求新的一年能赚大钱
    中国律师库http://www.lawyerku.cn/baidu.xml

  2. 头条说道:

    文章不错非常喜欢

发表评论

电子邮件地址不会被公开。 必填项已用*标注