在企業應用軟體設計中,原來往往只需要與乙個sql資料打交道,現在卻往往要連線多個資料來源,這些資料來源可能是sql資料庫、nosql資料、xml檔案、**資料等。這麼多複雜的資料,有沒有辦法讓它們構成乙個資料中心,以相對統一的方式進行管理和資料處理呢?xquery是合適的前端。
具體做法:
1、在企業伺服器上設定資料庫連線池,並指定連線名稱。
2、選擇合適的xquery引擎,並繫結企業伺服器。
3、擴充套件xquery的函式用於運算元據庫,比如連線關聯式資料庫,擴充套件以下函式,原型如下:
declare function sql:select($a as xs:string, $b as xs:string) as node() external;
declare function sql:update($a as xs:string, $b as xs:string) as xs:boolean external;
4、使用xquery查詢各單元的資料,合併處理後返回結果。
5、使用xquery維護各資料單元。
這樣做有以下的優缺點:
優點:
1、與sql一樣,對外提供統一查詢和維護方式。
2、可以以一種統一的方式構建資料中心管理工具。
3、按資料特性,選擇合適高效的儲存單元。
以後的模式是否應該這樣:
一些廠商提供各種具有一定特性的(比如sql、cache、xml、json、 file)的高效能資料單元。
一些廠商提供高效能的資料中心管理工具,主要的查詢和維護語言是xquery,也可延伸sql。
資料庫廠商不需要面面俱到,只需要提供的儲存單元足夠高效就可以。
4、提高sql資料庫的分布性
5、提高內容的分布性。
6、更有效規劃內容的儲存方式。
缺點:
1、xquery的效能還需要提高。
2、增加了資料儲存規劃複雜性。
下面是具體使用的例子:
1、查詢某類別下產品貨號,類別以xml的方式儲存在dbxml庫,貨號放在sql server中。
declare function sql:select($a as xs:string, $b as xs:string) as xs:string external;
declare function sql:update($a as xs:string, $b as xs:string) as xs:boolean external;
let $stxt := xqilla:parse-xml($str)
let $id := $stxt/search/@id
let $t := doc("dbxml:/product/productcategory.dbxml/data")//category[@id=$id]
let $k := data($t/@id|$t//category/@id)
let $s := concat("'",string-join($k,"','"),"'")
let $sql :=
select rtrim(itemno) as code,name,spec from itemdetail where categoryid in ()
order by itemno
for xml path ('product'),root ('
products
')let $link := "link_erp1"
return sql:select($link,$sql/text())
2、使用xquery查詢企業資源。
初學 sql2005中的xquery
今天小試了一下sql2005中操作xml的語句 如表divname中有列 id int型 stylecontent xml弄 content內容格式如下 rows p head p div id title class title p span class lower span p div p ul...
連通Hive與HBase,用SQL操作HBase
hive與hbase同在hadoop生態體系內。hive可以看作hadoop的sql程式設計介面 hbase則是真正意義上的儲存海量資料的分布列式資料庫。生產環境中,hbase用作線上實時資料庫,hive用在離線資料處理 資料倉儲領域。hbase中查詢資料,不能使用大眾熟知的sql,也不支援複雜的查...
LCT 與連通問題
所有問題只有加邊,沒有刪邊。並查集就可以了。考慮連邊時維護割邊。如果把割邊的值設為 1 非割邊的值設為 0 那麼只需要修改和維護鏈的和即可。因為根會變,所以邊的資訊需要新建點來儲存。例題 p2542 ahoi2005 航線規劃 圓方樹有乙個很好的性質 兩點之間的割點為圓方樹上兩點路徑的圓點 含端點 ...