仓酷云

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

[学习教程] MSSQL网页编程之先容Matisse--专为.NET的后干系型数据库...

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

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

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

x
这章描述如何检查和处理在MySQL数据库中的数据损坏。如果你的表损坏很多,你应该尝试找出其原因!见G.1调试一个MySQL服务器。数据|数据库先容Matisse--专为.NET的后干系型数据库part1先容
当我入手下手打仗用于.NET的数据库,我发明除尽人皆知的一些数据库,如SQLServer、MySQL之外,另有很多选择。Matisse就是个中之一,它是一种后干系型数据库(post-relationaldatabase)。

为何要选择Matisse呢?那是由于它是我所晓得的,独一专为.NET举行扩大,具有全体的工具功能和原生.NET撑持的数据库。它次要的功能包含用户自界说范例,承继,多态和复杂的数据模子等。已往的两年里,我在多个必要庞大数据模子的.NET项目中猎取了Matisse的实践事情常识。

假如有人想要找一篇细致的文章,可以对支流的干系型数据库和其他产物举行深条理的对照。我还没有看到一个复杂的,渐进的教程,能匡助那些但愿可以打仗新一代数据库的开辟职员。因而,我决意公布一系列的漫笔往弥补这一空缺,这是第一篇文章。

这第一篇文章次要是对用Matisse举行SQL编程作一个简介。接上去的文章里,将加倍具体的先容怎样利用.NET和ASP.NET往开辟数据库使用程序。
安装
安装Matisse十分的复杂和疾速.进进Matisse下载站点http://www.matisse.com/developers/downloads/,并在"MatisseDBMS7.0.x"区中下载上面两个文件:

1.Intel-MSWindows(文件名是matisse70x.exe)

2..NETbinding(文件名是matisseDotNet70x.exe)

第一个文件安装数据库服务、办理和开辟工具和一个通用的客户端链接库,该链接库可为分歧的言语共享,好比C#,VB.Net等。第二个文件包括一个.NET的拆卸件(assembly),其供应工具永世化服务和一个原生的ADO.NET供应者。

译者注:在这里,我把nativeADO.NETdataprovider翻译为原生的ADO.NET供应者.

要安装Matisse,你必要具有Windows体系办理员级别(Administrator)的权限,呆板的基础设置:WindowsNT,2000,大概XP,64MB内存和100MB的硬盘空间。起首,实行matisse70x.exe文件,跟从安装导游的指引,当呈现安装范例时,记得选择"Typical/Full",安装历程将在几分钟内停止。接着,实行matisseDotNet70x.exe文件,安装.NET接口,选择与前一个安装不异的目次。

在入手下手利用之前,你应当看看以下几个文档:

1.DiscoveringMatisseEnterpriseManager(fromReadme.html)

2.BuildingreusablecomponentswithSQLPSM(fromReadme.html)

3.GettingStartedwithMatisse

你也能够在以下网址找到一些编程,数据库办理和安装方面的指引:

http://www.matisse.com/developers/documentation/.

假如有RationalRose建模工具,你也能够下载MatisseRoseLink(matisseRoseLink70x.exe)。它同意你利用UML来界说和保护数据库schema。

记着,你也能够在Linux下面运转你的database服务器,然后在Windows上公布你的.NET使用程序。你只必要下载Linux版的Matisse(matisse-7.0-x.i386.rpm)并用rpm安装,假如你利用的是RedHat8,在运转rmp之前,你必要修正情况变量RPM_INSTALL_PREFIX为/usr/local/matisse。

>rpm-ihvmatisse-7.0-x.i386.rpm
利用MatisseEnterpriseManager你能够做甚么?
在入手下手写一个演示程序之前,让我们看一些EnterpriseManager的风趣特征。

1.你能够象其他那些免费软件一样,扫瞄一个数据库中的类,属性,干系和SQL办法。个中一个风趣的特征,你能够看到一个类的一切属性(好比属性,干系和办法)和子类的属性。如许,当你在类中写一个SQL声明的时分,这个特征就变得很有效,由于你不必在父类和子类之间往返切换,以查找某一个属性。





2.数据倒进(CSV)

利用CSV(Comma-Separated)文件,你能够从干系型数据库中倒进数据。当你从CSV文件倒进数据,文件中的每行被存为一个数据工具。一切的CSV文件倒进停止后,你必要界说一个形貌数据库中分歧工具之间链接干系的XRD文件(XMLRelationshipDefinition)。随后依据你UML中的形貌,数据库中的工具被整分解一个成心义的语义收集。工具之间的干系会在SQL查询时,供应一个分明的功能优化。
复杂演示
在这篇文章中,我将会展现一个复杂的演示使用程序,以先容怎样利用SQL往界说一个schema和操纵数据工具。在接上去的文章中,我们会举行更深切的会商。

起首,你必要开启一个数据库。实行EnterpriseManager,选中一个数据库,然后点选Start菜单。几秒钟以后,数据库将被启动。





在这个演示程序中,我们将利用项目办理形式。个中界说了三个类:Project,Employee和Manager。其干系以下:





假如有RationalRose,能够十分便利的倒进UML图。选择Tools->Matisse->ExporttoDatabase…菜单:





假如有RationalRose,你可使用SQLDDL大概ODL(ObjectDefinitionLanguage)。上面的DDL语句和后面的UML图是等效的。

CREATETABLEProject(

ProjectNameSTRING,

BudgetNUMERIC(19,2),

MembersREFERENCES(Employee)

CARDINALITY(1,-1)

INVERSEEmployee.WorksIn,

ManagedByREFERENCES(Manager)

CARDINALITY(1,1)

INVERSEManager.Manages

);



CREATETABLEEmployee(

NameSTRING,

BirthDateDATE,

WorksInREFERENCES(Project)

INVERSEProject.Members

);



CREATETABLEManagerUNDEREmployee(

TitleSTRING,

ManagesREFERENCES(Project)

INVERSEProject.ManagedBy

);

要实行下面的DDLstatement,复制到SQLQueryAnalyzer窗口,实行。



到此,你应当看到了用Matisse举行数据库建模的长处了吧!你不必要修改你的形式,一切的类和其他的容器之间的干系已被保存在数据库的schema中了。关于保护和扩大使用程序,这是一个很年夜的上风。

如今,我们能够在数据库中创建工具了。在SQLQueryAnalyzer窗口中实行上面的代码:

INSERTINTOEmployee(Name,BirthDate)

VALUES(JohnVenus,DATE1955-10-01)

RETURNINGINTOemp1;

INSERTINTOEmployee(Name,BirthDate)

VALUES(AmyMars,DATE1965-09-25)

RETURNINGINTOemp2;

INSERTINTOManager(Name,BirthDate,Title)

VALUES(KenJupiter,DATE1952-12-15,Director)

RETURNINGINTOmgr1;

INSERTINTOProject(ProjectName,Budget,ManagedBy,Members)

VALUES(CampaignSpring04,10000.00,mgr1,SELECTION(emp1,emp2));

下面的代码创立了两个Employee工具,一个Manager工具,一个Project工具。然后将这个两个雇员工具作为成员到场项目工具中,而司理工具作为项目标办理者到场。

要观察拔出的工具,实行"SELECT*FROMEmployee"语句



当你依照Employee查找,查询会前往两品种的工具-Employee和Manager。由于它们都承继至类Employee。可是,Manager工具中的一些属性,好比Title是不会显现在了局表中的,由于这些属性并没有包含在类Employee,而是在其子类中。

你能够界说类的SQL办法。语法遵守SQLPSM(PersistentStoredModule).举例申明一下,让我们界说一个实例办法Age(),该办法前往雇员的岁数。

CREATEMETHODAge()

RETURNSINTEGER

FOREmployee

BEGIN

RETURNEXTRACT(YEARFROMCURRENT_DATE)-EXTRACT(YEARFROMSELF.BirthDate);

END;

在SQLQueryAnalyzer窗口中实行上述语句,然后尝尝上面的查询语句。

SELECT*FROMEmployeeempWHEREemp.Age()>40;

Age()这个办法在Employee中界说,其子类Manager也承继了这一办法,固然,你也能够象在.NET一样利用它,好比在Manager类中覆写这个办法,大概利用它的多态特征。
下一篇文章
在这篇文章中,我复杂的先容了利用Matisse举行SQL编程,并展现了它的工具特征,好比承继和干系。在接上去的文章中,我将加倍具体的逐一先容,并会商它的手艺上风和优势。


mysqld进程在一个写入当中被杀死;计算机的意外关闭(例如,如果计算机掉电);一个硬件错误。
活着的死人 该用户已被删除
沙发
发表于 2015-1-19 15:48:48 | 只看该作者
备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。
再现理想 该用户已被删除
板凳
发表于 2015-1-25 14:09:50 | 只看该作者
代替了原来VB式的错误判断。比Oracle高级不少。
地板
发表于 2015-2-2 22:19:36 | 只看该作者
Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
第二个灵魂 该用户已被删除
5#
发表于 2015-2-8 13:56:44 | 只看该作者
对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。
小妖女 该用户已被删除
6#
发表于 2015-2-25 15:32:50 | 只看该作者
在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。
蒙在股里 该用户已被删除
7#
 楼主| 发表于 2015-3-7 23:36:05 | 只看该作者
你可以简单地认为适合的就是好,不适合就是不好。
飘飘悠悠 该用户已被删除
8#
发表于 2015-3-15 17:30:08 | 只看该作者
SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)
金色的骷髅 该用户已被删除
9#
发表于 2015-3-22 02:40:12 | 只看该作者
而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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