国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

介紹Matisse--專為.NET的后關系型數據庫part 1

2024-07-21 02:08:14
字體:
來源:轉載
供稿:網友

介紹matisse--專為.net的后關系型數據庫part 1 介紹
當我開始接觸用于.net的數據庫,我發現除了眾所周知的一些數據庫,如sql server、mysql以外,還有不少選擇。matisse就是其中之一,它是一種后關系型數據庫(post-relational database)。

為什么要選擇matisse呢? 那是因為它是我所知道的,唯一專為.net進行擴充,具有全部的對象性能和原生.net支持的數據庫。它主要的性能包括用戶自定義類型,繼承,多態和簡單的數據模型等。過去的兩年里,我在多個需要復雜數據模型的.net項目中獲取了matisse的實際工作知識。

如果有人想要找一篇詳盡的文章,能夠對主流的關系型數據庫和其他產品進行深層次的比較。我還沒有看到一個簡單的,漸進的教程,能幫助那些希望能夠接觸新一代數據庫的開發人員 。因此,我決定發布一系列的短文去填補這一空白,這是第一篇文章。

這第一篇文章主要是對用matisse進行sql編程作一個簡介。接下來的文章里,將更加詳細的介紹如何使用.net 和 asp.net去開發數據庫應用程序。
安裝
安裝matisse非常的簡單和快速. 進入matisse下載站點 http://www.matisse.com/developers/downloads/,并在"matisse dbms 7.0.x"區中下載下面兩個文件:

1.      intel - ms windows (文件名是 matisse70x.exe)

2.      .net binding (文件名是 matissedotnet70x.exe)

第一個文件安裝數據庫服務、管理和開發工具以及一個通用的客戶端鏈接庫,該鏈接庫可為不同的語言共享,比如c#, vb.net等。第二個文件包含一個.net的裝配件(assembly),其提供對象永久化服務和一個原生的ado.net提供者。

          譯者注:在這里,我把native ado.net data provider翻譯為原生的ado.net提供者.

要安裝matisse,你需要擁有windows 系統管理員級別(administrator)的權限, 機器的基本配置:windows nt, 2000, 或者xp, 64mb內存以及100mb的硬盤空間。首先,執行matisse70x.exe文件,跟隨安裝向導的指引,當出現安裝類型時,記得選擇"typical/full",安裝過程將在幾分鐘內結束。接著,執行matissedotnet70x.exe文件,安裝.net接口,選擇與前一個安裝相同的目錄。

在開始使用之前,你應該看看以下幾個文檔:

1.      discovering matisse enterprise manager (from readme.html)

2.      building reusable components with sql psm (from readme.html)

3.      getting started with matisse

你也可以在以下網址找到一些編程,數據庫管理和安裝方面的指引:

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

如果有rational rose建模工具,你也可以下載matisse rose link(matisseroselink70x.exe)。它允許你使用uml來定義和維護數據庫schema。

記住,你也可以在linux上面運行你的database服務器,然后在windows上發布你的.net應用程序。你只需要下載linux版的matisse(matisse-7.0-x.i386.rpm)并用rpm安裝,如果你使用的是redhat 8,在運行rmp之前,你需要修改環境變量rpm_install_prefix 為/usr/local/matisse。

 > rpm -ihv matisse-7.0-x.i386.rpm
使用matisse enterprise manager你可以做什么?
在開始寫一個演示程序之前,讓我們看一些enterprise manager的有趣特性。

1. 你可以象其他那些收費軟件一樣,瀏覽一個數據庫中的類,屬性,關系和sql方法。其中一個有趣的特性,你可以看到一個類的所有屬性(比如屬性,關系和方法)以及子類的屬性。這樣,當你在類中寫一個sql聲明的時候,這個特性就變得很有用,因為你不用在父類和子類之間來回切換,以查找某一個屬性。





2. 數據倒入(csv)

使用csv(comma-separated)文件,你可以從關系型數據庫中倒入數據。當你從csv文件倒入數據,文件中的每一行被存為一個數據對象。所有的csv文件倒入結束后,你需要定義一個描述數據庫中不同對象之間鏈接關系的xrd文件(xml relationship definition)。隨后根據你uml中的描述,數據庫中的對象被整合成一個有意義的語義網絡。對象之間的關系會在sql查詢時,提供一個明顯的性能優化。
簡單演示
在這篇文章中,我將會展示一個簡單的演示應用程序,以介紹如何使用sql去定義一個schema和操作數據對象。在接下來的文章中,我們會進行更深入的討論。

首先,你需要開啟一個數據庫。執行enterprise manager,選中一個數據庫,然后點選start菜單。幾秒鐘之后,數據庫將被啟動。





在這個演示程序中,我們將使用項目管理模式。其中定義了三個類:project, employee和manager。其關系如下:





如果有rational rose, 可以非常方便的倒入uml圖。選擇tools -> matisse -> export to database…菜單:





如果有rational rose, 你可以使用sql ddl或者odl(object definition language)。下面的ddl 語句和前面的uml圖是等效的。

create table project (

  projectname string,

  budget numeric(19,2),

  members references (employee)

    cardinality (1, -1)

    inverse employee.worksin,

  managedby references (manager)

    cardinality (1, 1)

    inverse manager.manages

);

 

create table employee (

  name string,

  birthdate date,

  worksin references (project)

    inverse project.members

);

 

create table manager under employee (

  title string,

  manages references (project)

    inverse project.managedby

);

要執行上面的ddl statement,復制到sql query analyzer窗口,執行。



到此,你應該看到了用matisse進行數據庫建模的優點了吧!你不需要改動你的模式,所有的類和其他的容器之間的關系已經被保留在數據庫的schema中了。對于維護和擴展應用程序,這是一個很大的優勢。

現在,我們可以在數據庫中建立對象了。在sql query analyzer窗口中執行下面的代碼:

insert into employee (name, birthdate)

  values ('john venus', date '1955-10-01')

  returning into emp1;

insert into employee (name, birthdate)

  values ('amy mars', date '1965-09-25')

  returning into emp2;

insert into manager (name, birthdate, title)

  values ('ken jupiter', date '1952-12-15', 'director')

  returning into mgr1;

insert into project (projectname, budget, managedby, members)

  values ('campaign spring 04', 10000.00, mgr1, selection(emp1, emp2));

上面的代碼創建了兩個employee對象,一個manager對象,一個project對象。然后將這個兩個雇員對象作為成員加入項目對象中,而經理對象作為項目的管理者加入。

要察看插入的對象,執行"select * from employee"語句



當你按照employee查找,查詢會返回兩種類的對象-employee 和 manager。因為它們都繼承至類employee。但是,manager對象中的一些屬性,比如title是不會顯示在結果表中的,因為這些屬性并沒有包括在類employee,而是在其子類中。

你可以定義類的sql方法。語法遵循sql psm (persistent stored module).舉例說明一下,讓我們定義一個實例方法age(),該方法返回雇員的年齡。

create method age()

returns integer

for employee

begin

  return extract(year from current_date) - extract(year from self.birthdate);

end;

在sql query analyzer窗口中執行上述語句,然后試試下面的查詢語句。

select * from employee emp where emp.age() > 40;

age()這個方法在employee中定義,其子類manager也繼承了這一方法,當然,你也可以象在.net一樣使用它,比如在manager類中覆寫這個方法,或者使用它的多態特性。
下一篇文章
在這篇文章中,我簡單的介紹了使用matisse進行sql編程,并展示了它的對象特性,比如繼承和關系。在接下來的文章中,我將更加詳細的逐個介紹,并討論它的技術優勢和劣勢。

 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桂平市| 潮州市| 平昌县| 科技| 上饶市| 泸西县| 盐亭县| 重庆市| 巴彦淖尔市| 含山县| 灵寿县| 姚安县| 红桥区| 涟水县| 江北区| 桦川县| 阿尔山市| 漳平市| 郓城县| 大田县| 石嘴山市| 吐鲁番市| 彩票| 化州市| 桐城市| 逊克县| 英德市| 海口市| 岫岩| 桐城市| 谷城县| 女性| 嫩江县| 突泉县| 蓬安县| 通榆县| 门头沟区| 三穗县| 江油市| 贵德县| 文成县|