當前位置:成語大全網 - 書法字典 - 如何修改db數據庫文件?

如何修改db數據庫文件?

Berkeley DB (DB)是壹個高性能的嵌入式數據庫編程庫,綁定了C語言、C++、Java、Perl、Python、PHP、Tcl等多種語言。Berkeley DB可以保存任何類型的鍵/值對,並且可以為壹個鍵保存多個數據。Berkeley DB可以支持上千個並發線程同時操作數據庫,最大支持256TB的數據。它廣泛應用於各種操作系統,包括大多數Unix操作系統、Windows操作系統和實時操作系統。Berkeley DB 2.0以上版本由Sleepycat軟件公司開發,基於自由軟件許可協議/私有許可協議雙重授權提供[1],附源代碼。想要在私有軟件中嵌入Berkeley DB的開發者需要得到Sleepycat公司的許可,如果軟件也是根據GPL發布的,他們就可以不經許可使用。2.0以下版本由BSD授權,可免費用於商業用途。Berkeley DB最初的開發目的是為了取代舊的hsearch函數和大量的dbm實現(如AT & amp;t的dbm,Berkeley的ndbm,GNU project的gdbm),Berkeley DB的第壹個版本出現在1991,其中也包含了B+樹數據訪問算法。在1992中,BSD UNIX版包含了Berkeley DB1.85。基本上,這是Berkeley DB的第壹個正式版本。1996年中期成立Sleepycat軟件公司,為伯克利DB提供商業支持。此後,Berkeley DB得到了廣泛的應用,成為壹個獨特的嵌入式數據庫系統。2006年,Sleepycat公司被甲骨文公司收購,伯克利DB成為甲骨文數據庫家族的壹員。Sleepycat的原開發者繼續在Oracle開發Berkeley DB,Oracle延續了原有的授權方式,加大了Berkeley DB的開發力度,繼續提升了Berkeley DB在軟件行業的聲譽。Berkeley DB的最新版本是4.7.25。值得註意的是,DB是嵌入式數據庫系統,不是常見的關系/對象數據庫。它不支持SQL語言,也不提供數據庫常用的高級功能,如存儲過程和觸發器。Berkeley DB的架構Berkeley DB以其比微軟SQL Server、Oracle等數據庫系統更簡單的架構而聞名。例如,它不支持網絡訪問——程序通過進程中的API訪問數據庫。他不支持SQL或其他數據庫查詢語言,不支持表結構和數據列。訪問數據庫的程序決定如何在記錄中存儲數據。Berkeley DB並沒有將記錄中的數據打包,每條記錄只有兩部分:鍵和值。因此,在Berkeley DB的上下文中,通常使用鍵/數據對來引用記錄。記錄及其密鑰的長度都可以達到4gb。雖然架構簡單,但是Berkeley DB支持很多高級數據庫特性,比如ACID數據庫事務處理、細粒度鎖、XA接口、熱備份和同步復制等。Berkeley DB包含與壹些經典的Unix數據庫編程庫兼容的接口,包括dbm、ndbm和hsearch。數據庫環境handle DB_ENV,Berkeley DB的核心數據結構:每個DB_ENV相當於壹個數據庫,包含數據庫的全局信息,比如緩沖區大小,事務、日誌、鎖等子系統的全局配置信息。數據庫句柄結構DB:每個DB相當於壹個關系數據庫表,其中存儲了許多鍵/數據對。DB句柄表示許多描述數據庫表屬性的參數,如數據庫訪問方法類型、邏輯頁面大小、數據庫名稱等。同時,DB結構中包含了大量的數據庫處理函數指針,大部分是(* dosomething) (DB *,arg1,arg2,…)的形式。最重要的函數有open、close、put、get等等。數據庫記錄結構DBT:DB中的記錄由關鍵字和數據組成,關鍵字和數據都用結構DBT表示。事實上,關鍵字可以被視為特殊數據。結構中最重要的兩個字段是void * data和u_int32_t size,分別對應數據本身和數據的長度。數據庫遊標結構DBC:遊標是數據庫應用中常見的概念,本質上是對特定記錄的遍歷。請註意,DB支持重復記錄,即多個記錄具有相同的關鍵字。在多條記錄的處理中,使用遊標是最簡單的方法。數據庫環境句柄結構DB_ENV: Environment是DB中的壹個高級特性。本質上,環境是多個數據庫的包裝器。當在環境中打開壹個或多個數據庫時,環境可以為這些數據庫提供各種子系統服務,例如多線程/進程處理支持、事務處理支持、高性能支持、日誌恢復支持等等。DB中的核心數據結構在使用前要進行初始化,然後才能調用結構中的函數(指針)完成各種操作,最後必須關閉數據結構。從設計思想上看,這種設計方法是壹種利用面向過程語言實現面向對象編程的模式。Berkeley DB數據訪問算法在數據庫領域,數據訪問算法對應的是數據在硬盤上的存儲格式和操作方法。寫應用的時候,選擇壹個合適的算法,可能會把運算速度提高1甚至更多的數量級。大多數數據庫都使用B+樹算法,DB也不例外。同時還支持哈希算法、Recno算法和隊列算法。接下來,我們將討論這些算法的特點,以及如何根據要存儲的數據的特點進行選擇。B+ tree算法B+ tree是壹種平衡樹,關鍵字按順序存儲,其結構可以隨著數據的插入和刪除而動態調整。為了代碼簡單起見,DB並沒有對關鍵字實現前綴碼壓縮。B+樹支持數據查詢、插入和刪除的恒速。關鍵字可以是任何數據結構。哈希算法DB實際上使用的是擴展線性哈希算法,可以根據哈希表的增長適當調整。關鍵字可以是任何數據結構。每個記錄都需要有壹個邏輯記錄號,它是由算法本身生成的。其實這和關系數據庫中的邏輯主鍵通常定義為int AUTO type是壹個概念。Recho基於B+ tree算法,提供了存儲有序數據的接口。記錄的長度可以是固定的,也可以是可變的。它類似於Recno,只是記錄的長度是固定的。數據以定長記錄的形式存儲在隊列中,插入操作將記錄插入隊列的尾部,速度最快。算法的選擇首先取決於關鍵詞的類型。如果是復雜類型,只能選擇B+樹或者哈希算法。如果關鍵字是邏輯記錄號,應該選擇Recno或隊列算法。當工作集關鍵字有序時,B+樹算法更適合;如果工作集很大,關鍵詞基本隨機分布,則選擇HASH算法。隊列算法只能存儲定長記錄,在高並發處理的情況下效率更高。在其他情況下,選擇Recno算法,Recno算法以平面文件格式存儲數據。Berkeley DB資源鏈接:官方主頁:/database/Berkeley-DB/DB/index . html產品下載:/technology/software/products/Berkeley-DB/index . html官方開發者文檔中心:/technology/Documentation/Berkeley-DB/DB/index . html產品技術信息:/technology/products/Berkeley-DB/pdf/Berkeley-DB-family-data sheet . pdf/database/docs/在Berkeley-d b-data sheet . pdf/database/docs/Berkeley-d b-v-relational . PD的官方主頁上有很多有趣的白皮書和技術文檔