一、Caché简介
(1)Caché(Ensemble)数据库是InterSystems 公司的产品。
为适应Internet 迅猛发展对数据库信息技术的需求,InterSystems 公司在多年来已得到国际上公认的以M 技术开发和运行大型应用系统所积累的可靠经验的基础上,经过积极的开发和演变,推出了举世无双的Caché 的数据库管理统产品。
(2)Caché 被誉为创新的“后关系型”数据库
Caché 是新一代高性能数据库技术,被誉为创新的“后关系型”数
据库(PostrelationalDatabase)作为后关系型数据库,它整合了对象数
据库访问、高性能的SQL 访问、强大的多维数据访问——这三种方法能
够天衣无缝地同时访问相同的数据。
(3)Caché 包括应用服务器
Caché 提供不仅是一种单纯的数据库技术。在 Caché 中包括一个应用服务器,这个服务器提供高级对象编程,并且可以很容易地与很多技术集成。Caché 还提供高性能的运行环境,这一运行环境采用了独特的分布式数据缓存协议技术。
(4)Caché 的编程技术--M语言
Caché 提供了可以用多种技术编写数据库和业务逻辑的能力。 Caché 的 ObjectScript 支持所有数据存取方法:对象, SQL ,多维和嵌入式 HTML 。 Caché Basic 与 Visual Basic 非常相似,只是做了很少的调整扩展,以便利用 Caché 独特的性能。
(5)Caché 的CSP技术
Caché 为开发复杂的、基于网页应用程序提供了丰富的集成开发环境。Caché Service Page(CSP)技术可以进行快速开发,动态产生。上千个用户甚至在比较差的硬件条件下也可以同时访问数据上的应用程序。
(6)Caché 应用系统典型架构
(7)Global:Caché 的多维存储
Caché 以多维数组存储数据,所有数据都是保存Global中。
Global以如下形式表示:^名称(下标1,下标2,下标3…)=值。如 ^AirPlane(“Manufacturer”,“Address”,“Country”)=“US”。
我们可以自己定制Global,包括添加、删除、修改、遍历其节点。多维数组以树状的形式保存,他的每一个节点直接与磁盘和内存中的数据块相对应,因此可以达到极快的访问速度。在此基础上,我们将多维数组映射成对象或者关系型的格式,分别由面向对象的接口或基于SQL的接口进行访问。
如下例子:
SET ^Y(3,6,7) = “third”
SET ^Y(3,6,8) = “fourth”
SET ^Y(3,6,7,8,4) = "fifth"
SET ^Y(3,6,7,8,9) = "sixth"
Caché 以多维数组存储数据,在Caché 中的所有数据都是保存Global中。
Global的树状结构:
Caché 的优势:
--Caché 完全面向对象,可进行直观的数据建模
--灵活性:Caché 的三种访问模式:对象、SQL、直接访问多维数据结构
--快速应用开发
--使用高效多维数据模型
--......
二、Caché(Ensemble)的安装
注意:(按默认方式安装)。如果安装程序没有发现许可证(License Key),将会提示是否现在安装许可证,选择”否(N)“时。我们可以在Caché 安装完成后再安装许可证。
(1)安装步骤
(2)安装后目录结构
对于不同的安装配置,目录结构会略有不同。但主要的目录如\Bin、\CSP和\Mgr不会有变化。
(3)建立命名空间与数据库的映射关系
--应用程序通过命名空间访问数据库里的数据和程序,因此,命名空间和数据库之间要建立映射。
--命名空间和数据库之间的映射不一定是一对一的。一个数据库可以被多个命名空间访问;相反,一个命名空间可以访问多个数据库里的数据。
--建立命名空间的主要工作就死建立与数据库的映射,这样做可以将程序逻辑与物理存在的数据独立开来,便于开发人员专注于系统功能设计,不需要为未来实施时不同的系统架构而作出额外的工序,系统架构也因为这样变得更灵活。
三、Caché的集成开发环境
(1)Caché 的菜单
(2)Ensemble的菜单
(3)菜单简介
1.Getting Started:入门文档 初学者可从中获取必要信息
2.Start Caché :启动Caché 启动Caché 服务
3.Stop Caché :关闭Caché 关闭Caché 服务。点击后选择是要关闭还是要重新启动
4.Studio:工作室 Caché 的集成开发环境
5.Terminal:终端 通过类似于DOS的终端界面访问Caché
6.Explorer:资源管理器 查看Caché 中的数据字眼,包括多维数组、类和例程
7.SQL Manager SQL:管理器 通过关系型方式访问Caché
8.Control Panel:控制面板 监视和管理Caché 的运行
9.Configuration Manager:配置管理器 进行基本配置,包括数据库的配置
10.Documentation:联机文档 只有启动Caché 后才可以阅读全部文档信息
11.Remote System Access:远程系统访问 在本地控制远端的Caché 服务器(任意平台)。UNIX 系统的管理要通过这种方式实现。子菜单中同样包含了工作室,终端,资源管理器,SQL管理器,控制面板,配置管理器,联机文档等菜单项。
12.Preferred Server:当前使用的Caché 服务器子菜单中可以编辑Caché 服务器列表。在这里配置远程服务器。我们可以在一台Windows平台的计算机上管理网络中所有的各种平台的Caché 服务器。
13.About ...:关于查看版本
14.Exit:推出 关闭任务栏中的Caché 图标
(4)Caché Terminal常用命令:
a)、zn "namespace" //切换namespace
b)、write "content" //写命令
c)、set Parameter = content //赋值命令
d)、kill target //删除命令;不建议在一个运行中的系统使用kill,而后面不跟参数
(5)Caché Sudio
它是Caché 主要的开发环境,它是以恶搞集成的可视化的开发环境。它提供了许多高性能的特性,帮助用户进行快速开发。这些特性主要包括如下的及部分:
--可以在这一个单独的集成环境中定义Class、Routine,生成CSP文件
--功能强大的文字编辑功能,并对各种通用语言进行语法检查
--支持团队协同开发
--图形化的代码级调试器
--可以在工程中布置应用程序代码
(6)System Management Portal
i、Configuration
ii、Secuity Management
iii、Globals
iv、Processes
四、Caché的Routine、Class、CSP
(1)Routine:
可以理解为”小程序“或程序模块。Caché 的Routine是由一些代码片段组成的。
Caché objectScript对Routine的使用类似于传统关心型数据库的存储过程。
Macro code (宏代码),后缀名为.MAC。
Intermediate code(中间代码),后缀名为.INT。
Object code(对象代码),后缀名为.OBJ。
》》》Routine的命名:
Routine的名字可以是任何的字母数字式字符。但是有要求:一般不能以数字或百分号%开头命名,和句号不能在开始或者结束的位置。
以%百分号开头命名的Routine是不局限在某一个名字空间(Namespace)应用的,%号是Caché 系统内部保留的,只是系统为我们提供的程序命名所使用的。
此外,对Routine名字的长度也没有限制,但是只有前31个字符是用来对不同的Routine加以区分的。
》》》Routine代码结构
a)、标签行:一个标签要确定一行、它从当前行第一个位置开始
b)、代码行:代码行的最前端至少要有一个空格,作为一行的开始。
c)、注释行://
:
: :
/*......*/
》》》执行Routine
do LABEL1^ROU1
write LABEL1^ROU1(arg1,......)
(2)Class:
-Package
-ClassName
-ClassType
-Property
-Method
-ClassMethod
-Query
-do ##class(ClassName).ClassMethod(arg1,......)
-write ##class(ClassName).ClassMethod(arg1,......)
(3)CSP:
》》》创建CSP的两种方式:
-使用Caché 类建立对象框架来创建动态网页
-通过基于HTML的标记语言把Caché 脚本嵌入到HTML中去
五、Caché的表、类及存储结构定义
(1)FDBMS:
-传统数据库管理系统(database management system)方式
-Terminal终端操作
-Table、Index、View
(2)面向对象
-持久类(Persistent)
-Studio中定义
-Storage
-Index
-Query
》》》:(传统数据库管理系统Terminal终端操作)
zn "DHC-DATA" //切换NameSpace
do ^%msql //进入管理页面 user/pass:system/sys
Data Dictionary ---> Base Table Definition
>>>表结构:
-字段
-数据类型
-指向型字段
-父子表
-编译
-存储结构
-索引
>>>存储及索引定义:
>>>面向对象的持久类:
Studio中创建持久类:
--Change Namespace
--Create New Class
--Class Type
--Property
--Index
--Compile
--Storage
》》创建持久类:
》》创建属性:
》》创建索引:
》》编译类:
》》存储结构:
CacheStorage:
-Data Nodes
-DataLocaion
-IdLocation
-IndexNodes
-IndexLocation
-StreamLocation
SqlStorage:
-SQL storage map
-SqlChildSub
-SqlRowIdName
六、练习
1.了解Caché的基础知识,阅读第一章《Caché基本概念》
2.自己动手安装Caché,熟悉开发环境,查阅联机文档
3.查看DHC-Data下的表CT_Zip的结构
-列出:字段(关联表)、存储结构、索引
-查看数据:记录条数、并copy出第一条数据的global节点
-新建一个routine,以test+自己姓名全拼为名称
-编写一段程序,write出CT_Zip的第一个节点,在Terminal下运行
4.在Samples下自己动手创建持久类,并写入数据
-test.自己姓名的全拼 包下
-字段、索引
-熟悉存储,并编写类方法写入数据