仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 679|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL网站制作之Jasmine KBMS体系的完成

[复制链接]
精灵巫婆 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:28:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
mysql的prepare其实是本地PHP客户端模拟的,并没有根据你mysql的设置做字符集的调整。应该交与mysqlserver端做prepare,同时得调用mysql_set_character_set去操作,server才会按照字符集去做转义。
Jasmine体系的完成


用户

数据办理

工具办理

使用软件



常识库
1、Jasmine体系的整体布局

Jasmine是个由数据办理子体系和工具办理子体系构成的条理布局体系。数据办理体系用来无效的存储和会见辅存上的工具。数据办理体系为嵌套干系、元组和页供应操纵接口,它是干系数据库的扩大XRDB。而

工具办理体系为这个可扩大的数

据库体系供应工具模子和言语接

口,言语接口包含言语编译器、

实行期撑持库、言语注释器。

我这所要先容的是工具办理

子体系。

2、工具存储布局

在Jasmine中类与实例的存储布局

不不异,工具到干系的转换是经由过程体系

完成的,有关转换的信息也存储在类中。

(1)、经由过程使用干系来存储实例

依据元组的实例和域的属性,一切参照类本身的实例存储在干系中。多值属性存储在多值域中,这是最复杂的嵌套干系的情势。另外一种办法,经由过程分别干系完成多值属性将引发分外的开支。我们在分别干系中存储一个超类本身的实例和超类的子类的实例。假如我们实例化或开释一个类的本身的实例,我们不用到它的超类或子类中往修正任何中央,从而使我们能够无效率地修正工具。

流动长度的字符串和数字存储在固长域中,变长字符串和数字存储在变长域中。而就参考属性,我们仅将工具标记号(OID)存储在固长域中,这完成了非簇聚化的庞大工具。非簇聚化的庞大工具是CAD使用软件所必要的,在CAD使用软件中庞大工具是自底向上创立的,如许组件工具就能够被重用。固然,用户能够逻辑上对非簇聚化的庞大工具强迫实施庞大工具的完全性。详细完成能够经由过程“after”demon为全部工具的实例化办法来实例化各个组件工具,也能够增添”befor”demon为全体工具的烧毁办法来烧毁各组件工具。在属性中,作为干系工具,我们充实利用嵌套干系,将干系工具与外部嵌套干系和他们外部干系域的属性相干联。响应的,干系工具的组件工具不成能离开他们的全体工具而存在。簇聚化庞大工具经由过程干系工具来完成,能逻辑上和物理上以单位情势来办理。

OID属性与一个域相干联,但这个类的属性和通用属性不被存储在实例干系中,这是为了增添空间的效力。一个OID由一个常识库ID号、一个类号和一个实例ID号构成,OID能单独地间接传送给常识库和类信息。依据用户申明,体系在行列、B树和哈希干系当选择用来存储实例。

(2)、用干系来存储类

由于class是CLASS的实例,我们将一切的classes存储在一个干系中,如许有助于无效地会见类工具。但是,类有异种布局,以是我们必需计划一个形式,用来在一个干系中无效地存储类工具。基本上,我们有类工具与一个元组(tuple)相干联。属性分类,如列举和历程属性,这对一切类是通用的,而且属性有一组流动的正面(facet),我们在外部干系域中在分歧的外部干系和facet中存储列举和历程属性。

3、面向汇合的会见撑持

面向汇合会见和单值会见都被编译以早绑定并削减实行期用度,但是,一个交互式查询必要注释器来处置而不是编译器。Jasmine编译器是用一个C编译器来完成的,在Jasmine/c中写的使用程序被预编译成C程序,发生的C程序被编译并链接上实行期撑持库。预处置被用来到达最优笨重性和C编译器的代码优化目标。


使用软件

预编译

C程序

C编译器和链接

实行期撑持库

方针代码






(编译)


Jasmine

方针代码

常识库

Jasmine

用户查询

常识库














(实行)(注释器)

使用程序在三个阶段被翻译成C程序,这三个阶段是:查询图天生、存取计划天生和代码天生。第一个阶段,从用户查询到天生一个查询图,而且将查询图转化为依据利用用户界说的工具模子的一个更无效的查询图。第二个阶段依据查询图天生一系列干系运算和一个最优的计划,这个阶段利用划定规矩库优化手艺,最初一个阶段C代码被天生C编译器。

(1)、查询图天生

这个阶段参照工具模子,将查询图与用户查询相干联。这个查询图是一个工具模子的子图,这个工具模子注解有工具和前提信息。在这个阶段,包括不完全的常识会见的用户查询被转换为一个更无效的情势。在Jasmine中,用户依据详细化通用类而不是这个详细类来构成一个查询。依据回类道理,用户能用前提来详细化一个非叶节点类,假如给定的前提与一些回类前提相婚配,那末非叶节点类被详细化成一些切合回类前提的组件成员。

(2)、会见计划天生

这个阶段以间接形式体例将查询图翻译成工具运算。翻译划定规矩构建在查询语义学基本上。经由过程利用工具模子信息如统计数据、会见办法、类到干系的映照,工具运算别转化为扩大干系运算。工具表达式是分歧处置的,这依附于它是不是包括有历程属性。

4、单值存取会见和工具缓冲

与面向汇合的会见一样,单值存取会见也被编译成C程序,编译时必要毗连运转期撑持库。

第一次会见一个工具时,会从二级存储器掏出工具到页面缓冲区。如许工具就被缓冲寄存在举动工具表(AOT)中。实践上AOT是一个外部哈希表。AOT有一个OID键和出口。该出口含有一个指向外部实例布局的指针TID和几个更新标记位。一个实例的外部布局与一个元组相似,这使参考别的工具和修正变得简单。当一个事件停止时,具有更新标记的工具从AOT直达存到页面缓冲区和二级存储器。用户能够经由过程申明AOT巨细来把持AOT中的抵触处置。为了加倍无效地存储空间,工具能够从AOT中删除,但OID组和TID组仍间接从数据库中掏出,这些工具先前从内存中已丧失。我们将单值存取会见工具表达式翻译成基于AOT的会见。比方工具表达式obj.attr变量obj具有AOT的指针。起首,反省AOT出口的更新标记位,假如标记指出这个工具已被删除,则产生毛病。假如一个工具从内存中扫除是为了举行空间的办理,那末这个工具会经由过程TID间接从二级存储器中掏出。别的情形下体系会从由AOT指针指向的外部实例布局中取attr,工具表达式前往这个值。假如这个属性域含有一个参考工具,即另外一个OID。体系经由过程哈希表在AOT中查找具有这个OID的工具。若没有,再经由过程AOT中缓冲寄存的OID或TID到二级存储器中查找。如许工具表达式的值是一个指向参考工具的出口指针,它将成为attr属性的值。一样平常工具表达式obj.attr-1.iattr-n被递回的注释。工具变量具有一个指向AOT出口的指针,不是提早会见的OID。因为制止了基于哈希表的搜刮,因而工具存取速率失掉了进步。关于基于毗连的会见好比超媒体使用,这一点很好。

一样平常来讲,缓冲区和工具存取形式间接相干。页面缓冲具有合适不异类的分歧实例存取的布局。AOT,工具缓冲区具有合用与分歧类的相干实例的存取布局。初级使用比方CAD具有这两种形式。就就必要双缓冲战略,包含页面缓冲和工具缓冲,而不单单是一个单一缓冲战略,它会包括不用要的工具,也会下降内存使用率。但是,双缓冲办法使得一样一个工具以分歧的格局同时呈现在分歧的缓冲区中,因而我们不能不保护申明统一个实体的两个工具的外部分歧性。

5、注释器

体系为程序的高效运转供应了编译器,为使用的疾速开辟和处置特别的查询供应懂得释器。编译器将查询语句翻译成扩大的干系操纵符。注释器将查询语句翻译为扩大的操纵符并实行。思索到有用性,注释器只能实行面向汇合的存取,查询的了局送到由一个编译好的程序援用的汇合变量。用户能够在一个集成的情况里利用注释器和编译好的程序。因为程序存在与实例中,以是他们能够在一个面向查询中交互会见。程序能够在静态编译以后互相激活,编译器息争释器共享代码,注释器编译剖析器剖析输出的查询语句。注释器利用运转时撑持库供应的功效发生两头代码。



本文叙说了一个常识库办理体系KBMS---Jasmine,重点议论了工具办理子体系。
由MySQL用来存储数据的文件格式以已经被广泛地测试过,但是总是有外部情况可以导致数据库表被破坏:
飘飘悠悠 该用户已被删除
沙发
发表于 2015-1-19 13:52:29 | 只看该作者
学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了!
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-1-24 15:32:03 | 只看该作者
如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
小女巫 该用户已被删除
地板
发表于 2015-2-1 20:24:12 | 只看该作者
Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
再见西城 该用户已被删除
5#
发表于 2015-2-7 15:03:47 | 只看该作者
是要和操作系统进行Socket通讯的场景。否则建议慎重!
透明 该用户已被删除
6#
发表于 2015-2-22 11:53:57 | 只看该作者
大侠们有推荐的书籍和学习方法写下吧。
admin 该用户已被删除
7#
发表于 2015-3-7 00:27:07 | 只看该作者
一个是把SQL语句写到客户端,可以使用DataSet进行加工;
因胸联盟 该用户已被删除
8#
发表于 2015-3-14 00:20:22 | 只看该作者
微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。
愤怒的大鸟 该用户已被删除
9#
发表于 2015-3-20 23:36:28 | 只看该作者
我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 04:56

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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