找回密码
 欢迎注册
搜索
热搜: 活动 交友 discuz
楼主: XoD

面向对象的数据库CACHE

[复制链接]
发表于 2005-4-5 10:59:29 | 显示全部楼层

面向对象的数据库CACHE

ODBSM成熟吗?
发表于 2005-4-5 16:49:43 | 显示全部楼层

面向对象的数据库CACHE

最初由 kylix 发表
[B]大致看了一下,不知性能真的象文档中所说,万一用它?怎么购买,上了贼船,还能下来不? [/B]


可以挂电话021-5665 4986问购买的事宜.
发表于 2005-4-7 00:11:07 | 显示全部楼层

面向对象的数据库CACHE

前面都在关心Cache的数据库本身怎么样,我问个开发方面的事吧。。
Cache最适合的开发语言是什么?是csp么?还是什么Java,.Net,or...?
建议类似sun的petstore,.Net的petshop似的发布个完整的示例。
看了一下Cache安装后带的Sample,里边的csp的例子如:
<QueryResult>
        <SQL>#(..EscapeHTML($get(%request.Data("QUERY",1),"SELECT Name FROM Sample.Person")))#</SQL>
        <Result>
        <script language="cache" runat="server">
                New colnames
                For col=1:1:query.GetColumnCount() {
                        Set colnames(col)=query.GetColumnHeader(col)
                }
        </script>
        <CSP:WHILE COUNTER=row CONDITION=query.Next()>
                <Row>
                <CSP:WHILE COUNTER=col CONDITION='(col<query.GetColumnCount())'>
                        <#(colnames(col))#>#(query.GetData(col))#</#(colnames(col))#>
                </CSP:WHILE>
                </Row>
        </CSP:WHILE>
        </Result>
</QueryResult>
这种写法是不是太bad smell了一些?
发表于 2005-4-7 00:14:34 | 显示全部楼层

面向对象的数据库CACHE

[PHP]
<?xml version="1.0" ?>
<csp:class description="Demo of displaying result of an SQL Query as XML.">
<script language=Cache method=OnPreHTTP arguments="" returntype=%Boolean>
        // Initialize variable for column names
        New cols
        // Force the content-type of the reponse to text/xml
        Set %response.ContentType="text/xml"
        Quit 1
</script>
<SCRIPT LANGUAGE=SQL NAME=query P1=#($get(%request.Data("1",1),"A"))# P2=#($get(%request.Data("2",1),"B"))#>
#(%request.Get("QUERY","SELECT Name FROM Sample.Person"))#
</SCRIPT>
<QueryResult>
        <SQL>#(..EscapeHTML($get(%request.Data("QUERY",1),"SELECT Name FROM Sample.Person")))#</SQL>
        <Result>
        <script language="cache" runat="server">
                New colnames
                For col=1:1:query.GetColumnCount() {
                        Set colnames(col)=query.GetColumnHeader(col)
                }
        </script>
        <CSP:WHILE COUNTER=row CONDITION=query.Next()>
                <Row>
                <CSP:WHILE COUNTER=col CONDITION='(col<query.GetColumnCount())'>
                        <#(colnames(col))#>#(query.GetData(col))#</#(colnames(col))#>
                </CSP:WHILE>
                </Row>
        </CSP:WHILE>
        </Result>
</QueryResult> [/PHP]
发表于 2005-4-8 10:43:17 | 显示全部楼层

面向对象的数据库CACHE

可以参看:
http://www.intersystems.cn/forums/ShowPost.aspx?PostID=64

用各种前端开发方式都可以连接到cache'上,无所谓java或是windows窗体等。如果在设计时将业务逻辑的部分都放到cache'服务器上才是真正的在用cache'(充分利用了cache'服务器的分布式能力),同时也与前端的实现方式无关了。

另外,csp运行在cache'服务器上,相比其他页面技术而言,肯定是距离数据存储最近的。相应的,不需要去连接数据源这样的操作。使用起来非常灵活。上面贴的代码其实也只是实现方式之一。

有的查询,在其他脚本技术中,需要 建立数据库连接+输入sql+取回结果集+得到数据 这样的操作, 在csp中有时只需要嵌入#($ListGet(^Sample.Person(20),3))#这样的语法就可以了(得到第20个person的第三个字段)。同时,也可以通过select * from ...这样的sql语句来进行处理,也可以通过打开对象实例,如p.Father.Friends.GetAt(10).Company.Name这种方式来访问数据。这些属性和方法不需要额外O/R转换代码的实现(不需要加入这一层),完全可以通过cache'的类定义甚至DDL直接实现。

cache'的技术架构绝对是最灵活的,大家可以不局限于一种方式进行开发。
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

快速回复 返回顶部 返回列表