zoukankan      html  css  js  c++  java
  • cache 存储数据访问

    在前面,我们学习了解到了cache数据库的存取模式。

    1.采用多维数组存储数据。

    2.可以利用各种技术存取数据。

    cache数据库有一个  多维数组引擎。还有一个分布式缓存协议。使得存取速度快,实时处理数据。

    它提供了以下用途。

    1.数据存储

    2.并发管理

    3.事务处理

    4.过程管理

    接下来学习四个方面的存取

    1.web存取  cache服务器页面(CSP[cache server page]),在数据服务器上运行,与他们存取的数据放在一起。

    2.对象存取  cache支持多种面向对象建模技术。可以和rartion rose(如今已并入IBM)双向开发。

    3.SQL存取  SQL92,SQL网关技术,可以和其他关系型数据库共存,集成整合工作环境。也可以将关系型数据库迁移到cache上。

    4.多维存取  兼容OPEN M语言程序。

    什么是多维数组(GLOBAL)?

    一种类似树的存储形式。定义形式为

    ^GLOBAL(“节点1”,"节点2”,"节点3”)=“数据”

    我们可以建立自己的GLOBAL,添加删除修改遍历其节点。

    image

    在这个基础上,将GLOBAL可以映射为对象或者关系型格式,从来利用对象接口或者基于Sql接口进行访问。

    **在实时事务处理冲,推荐直接操作GLOBAL树,以底层的方式快速访问cache数据。

    现在开始将怎么访问

    1.通过关系方式查询

        也就是SQL语句。cache支持SQL92标准【不知道最新版支持哪一个标准了】。通过SQL语言,我们可以创建访问表[table],视图[View],存储过程[Store Procedure],触发器[Trigger],游标[Cursor].当然我们也可以用OBDC或者JBDC来访问。

        配置ODBC源方式就不讲了。如不清楚,百度之。推荐sqldbx这个工具。

    2.用对象方式查询

    a.打开对象

         Set p=##(包名.类名).%OpenId(Id)

           *注意区分大小写

           *%OpenId继承于%Presistent

         W p

         屏幕将会显示 1@包名.类名.

         表示 类-包名.类名在本用户进程中第一个实例的引用。

         变量p本身保存的内容只是对  对象在内存中版本  的引用。称作为是OREF(Object REference)

    b.访问属性

        和平常访问属性一样

        w p.属性n(n=1,2,3……)

        当然,我们也可以修改,set就可以了。但是此时只是对内存中数据的修改。如果要保存,还是需要调用%Save方法来保存

    c.调用方法

       在cache中调用对象方法和我们平常用的方式相同。格式如下:

       Do 对象.方法(参数1,参数2,参数3……)     *没有返回值的时候要用Do。

       假设p中有方法Get(),我们调用Get()就是:

       w p.Get(),!,p.%Id()

       *如果没有参数的时候()要保留。

       *!是换行

       *%Id是返回p的Id值。

         如果要把修改后的数据保存下来,调用%Save

         w p.%Save()

         如果保存成功,则返回1,屏幕上将会显示1

         如果保存失败,则返回0.

    *COS的语法和其他面向对象语言的语法很像,都是把一系列复杂的方法和属性的调用放在一行语句里面。

      

    d.访问其他属性

        操作一致,撸过。

    e.输出xml

        XML文档的结构化形式可以很好的描述复杂的对象。cache有很强大的XMl处理能力,包括将类或者对象输出成为XML文件。

        在本例中(代码之后发布,现在还有问题,%Save不成功),我们可以通过person的祖先类(我的理解就是定义person类的时候,他的一个参数)%XML.Adaptor提供的方法来输出XML文档。

        I.我们可以先将Manager类的类定义输出为XML SCHEMA格式的文档定义。

            LIFETRA(类所在的命名空间)> Do ##class(space.Manager).XMLSchema()

            然后将文档输出为XML格式的文件

            LIFETRA>Do p.XMLExport()

    *  无参数只是默认状况。我们可以改变参数,让文档按照特定的规则输出,或者输出到外部文件或流中。

    * Caché 不光能输出XML文档,相反地,还可以从外部 XML文件中产生对象。

    * Caché 支持自动垃圾回收。也就是说,如果我们不手动删除aPerson 对象,当我们关闭终端( 即一个用户进程结束) 时,Caché 也会将它删除.

    f.关闭对象

    LIFETRA>Do p.%Close()

    LIFETRA>Kill p

    3.查看GLOBAL

    在cache中,无论表和持久化的对象,都是一同一种方式GLOBAL保存在数据库中,只是我们以不同的机制将他们投影[Project]成为对象或者关系的形式。

         a.可以通过GLOBAL查询控件来查询

         这个比较简单。

         b.也可以在程序中用COS直接来访问。

                 w ^名称(下标……)

                 *  必须有符号 “^” ,否则操作的将是局部变量,该变量只会在用户进程的内存中存在

                 也可以set赋值

                         kill删除节点

  • 相关阅读:
    Codeforces 375D Tree and Queries(DFS序+莫队+树状数组)
    HDU 5972 Regular Number(字符串shift
    HDU 5905 Black White Tree(树型DP)
    BZOJ 3675 [Apio2014]序列分割 (斜率优化DP)
    2017 ACM/ICPC Asia Regional Guangxi Online 记录
    2017 ACM/ICPC Asia Regional Beijing Online 记录
    2017 ACM/ICPC Asia Regional Xian Online 记录
    2017 ACM/ICPC Asia Regional Qingdao Online 记录
    django中models字段的联合限制
    redis使用摘要
  • 原文地址:https://www.cnblogs.com/lifetraveler/p/2693407.html
Copyright © 2011-2022 走看看