原創|其它|編輯:郝浩|2009-09-01 10:30:21.000|閱讀 379 次
概述:近日抓緊時間對之前討論到的XML數據庫做了完善,今天發布第一個供測試的版本。下面是有關的說明。該文件(readme.txt)可以在源代碼包中找到
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
近日抓緊時間對之前討論到的XML數據庫做了完善,今天發布第一個供測試的版本。下面是有關的說明。該文件(readme.txt)可以在源代碼包中找到
此次發布包含了三個部分
1. 可執行的dll。(包含兩個,一個是XmlDatabase.core.dll, 一個是DataEntities.dll)
2. 源代碼(里面還包含了一個范例)
3. 類庫幫助文件
感興趣的朋友可以到下面這個地址下載
【備注】這個項目在CodePlex上面的站點今天也正式啟用,以后的發布都會直接放在這個位置
陳希章 于 2009年8月
======================================================
1.1 完全基于XML的存儲。數據庫的配置信息和對象數據、索引、日志全部是用XML格式保存的。這樣的出發點主要是XML數據格式很易于閱讀和傳輸,轉換。
1.2 基于文件夾的數據存儲。這個設計褒貶不一,好處就是不用一個文件存放所有的東西,那么在讀寫的時候很方便。其可能導致的麻煩也許就是得小心地保證這個文件夾不被破壞。
1.3 完全基于.NET編寫,結合了LINQ的語法。這個數據庫引擎也可以算是一個所謂的嵌入式的數據庫引擎吧,它是通過一個dll提供了全部的功能。目前是基于Visual Studio 2008和.NET Framework 3.5開發的。后續可能會視情況提供直接可用于.NET Framework 2.0的版本。
1.4 目前提供的查詢是基于LINQ to Object的,所有的操作都是面向對象的。但還沒有設計專門的LINQ Provider來做查詢。
基于上面的特點,我本人給它的定位是:面向.NET開發平臺的、小型的、面向對象的數據庫。它比較適合于本地數據緩存、嵌入式數據庫應用的場景。
需要提一下,這次發布的alpha版本,有一個非常重要思路的變化:就是現在只有數據庫的概念,已經沒有表的概念了。也就是說,開發人員只需要關心對象,不再需要關心表以及具體的存儲了。
備注:這個思想是參考了db4o,我們自己也討論過最后決定做了比較大的修改。
2.1 數據庫的創建、打開、關閉(其實這里的數據庫是一個文件夾的概念)
2.2 面向對象的增、刪、改、查功能
2.3 簡單的批處理模式(就是說3.2 的操作除了立即生效的模式之外,還有一種批處理模式)
2.4 簡單的事務控制。(在批處理中,可以選擇支持事務的批處理,那么如果任何一個操作失敗,所有操作都不會生效)
2.5 日志重定向功能。(默認會在數據庫目錄中,每天會有一個日志文件。可以重定向)
3.1 LINQ to XmlDatabase :這是想要實現的一個特殊的LINQ Provider,可以很方便地結合LINQ的技術來實現查詢,該Provider的實現主要是考慮到針對一類對象可能分開多個文件存放,那么有這個Provider可能就能起到很大的作用。目前的方式,一類對象是統一放在一個文件的,那么LINQ to Object的方式就是最好的,為什么呢?因為如果僅僅只有一個文件的話,不管怎么樣設計,這個文件都需要全部加在到XDocument中。
3.2 索引功能:索引的實現有了思路,但具體做的時候還很繁瑣
3.3 多文件存儲機制:這是一個可能要實現的方式
上面三點其實是密切相關的。由于要多文件存儲,那么就可能需要專門的LINQ Provider來實現更高級別的查詢過濾,而要使得LINQ Provider能起作用,那么索引就顯得比較重要。
3.4 二進制大對象的存儲
3.5 緩存設計(這一塊還得討論)
3.6 可視化調試工具(這個已經做了一個雛形,只是時間問題)
這個數據庫的設計完全開源,大家只要愿意可以免費使用,也可以修改。我首先非常歡迎大家提供一些反饋意見和建議,同時我也可能需要下面幾方面的幫助
4.1 多語言翻譯(幫助文檔和資源文件的多語言)---這部分工作量不會很大,就兩個文件。
4.2 簡單的管理工具(我希望有朋友可以在這個引擎基礎上做一個簡單的管理工具)
4.3 XSLT方面的支持。(XML數據庫的一大特點就是很容易轉換為不同的格式,我希望能有一套比較標準的XSLT來處理那些文件,提供給用戶參考)
你也可能會說它不能算是真正的數據庫引擎,其實這又有什么關系呢。我認為,它當然是不能和SQL Server或者Oracle這樣的數據庫相提并論的。
開發這個項目是因為很早之前就這么思考過,所以花了一些時間付諸實現。我相信很多人在工作中都會有些創意,這些創意不論大小,但關鍵在于要敢于動手去做。在開發和討論的過程中,我自己就感覺到很有收獲。當然,如果這個項目能有助于我們了解到數據庫也可以這樣來做,并且激發大家的一些思考,那我更高興了。
這個版本在之前的基礎上做了很多的修改,在實現功能的前提下,我盡量簡化了類型的設計。我認為這是正確的思路,如果能用更少的代碼來實現,當然更好,沒有必要搞得過于復雜
雖然我很認真地做了不少工作,但限于個人能力,恐怕疏漏甚至錯誤之處在所難免,我希望大家給予批評指正
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:博客園