青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

[意譯]Berkeley DB 文檔 - C++入門篇 - 1.2節 - Berkeley DB 概述

譯者序(轉載 -- Berkeley DB簡介):

    Berkeley DB是由美國Sleepycat Software公司開發的一套開放源碼的嵌入式數據庫的程序庫(database library),它為應用程序提供可伸縮的、高性能的、有事務保護功能的數據管理服務。Berkeley DB為數據的存取和管理提供了一組簡潔的函數調用API接口。
    
    它是一個經典的C-library模式的toolkit,為程序員提供廣泛豐富的函數集,是為應用程序開發者提供工業級強度的數據庫服務而設計的。其主要特點如下:

    嵌入式(Embedded):它直接鏈接到應用程序中,與應用程序運行于同樣的地址空間中,因此,無論是在網絡上不同計算機之間還是在同一臺計算機的不同進程之間,數據庫操作并不要求進程間通訊。

    Berkeley DB為多種編程語言提供了API接口,其中包括C、C++、Java、Perl、Tcl、Python和PHP,所有的數據庫操作都在程序庫內部發生。多個進程,或者同一進程的多個線程可同時使用數據庫,有如各自單獨使用,底層的服務如加鎖、事務日志、共享緩沖區管理、內存管理等等都由程序庫透明地執行。

    輕便靈活(Portable):它可以運行于幾乎所有的UNIX和Linux系統及其變種系統、Windows操作系統以及多種嵌入式實時操作系統之下。它在32位和64位系統上均可運行,已經被好多高端的因特網服務器、臺式機、掌上電腦、機頂盒、網絡交換機以及其他一些應用領域所采用。一旦 Berkeley DB被鏈接到應用程序中,終端用戶一般根本感覺不到有一個數據庫系統存在。

    可伸縮(Scalable):這一點表現在很多方面。Database library本身是很精簡的(少于300KB的文本空間),但它能夠管理規模高達256TB的數據庫。它支持高并發度,成千上萬個用戶可同時操縱同一個數據庫。Berkeley DB能以足夠小的空間占用量運行于有嚴格約束的嵌入式系統,也可以在高端服務器上耗用若干GB的內存和若干TB的磁盤空間。

    Berkeley DB在嵌入式應用中比關系數據庫和面向對象數據庫要好,有以下兩點原因:

    (1)因為數據庫程序庫同應用程序在相同的地址空間中運行,所以數據庫操作不需要進程間的通訊。在一臺機器的不同進程間或在網絡中不同機器間進行進程通訊所花費的開銷,要遠遠大于函數調用的開銷;

    (2)因為Berkeley DB對所有操作都使用一組API接口,因此不需要對某種查詢語言進行解析,也不用生成執行計劃,大大提高了運行效.

正文

Berkeley DB Documentation -- C++ Getting Started Guide
Berkeley DB 文檔 -- C++入門篇

Berkeley DB Concepts
Berkeley DB 概述

Before continuing, it is useful to describe some of the larger concepts that you will encounter when building a DB application.

先看看構建一個DB應用時你可能遇到的一些概念.

Conceptually, DB databases contain records. Logically each record represents a single entry in the database. Each such record contains two pieces of information: a key and a data. This manual will on occasion describe a a record's key or a record's data when it is necessary to speak to one or the other portion of a database record.

概念上說,DB數據庫包含了記錄(records),每條技術是一個邏輯上的實體.這種記錄通常包含兩部分的信息,鍵和值.本手冊會適當的時候來進一步說明.

Because of the key/data pairing used for DB databases, they are sometimes thought of as a two-column table. However, data (and sometimes keys, depending on the access method) can hold arbitrarily complex data. Frequently, C structures and other such mechanisms are stored in the record. This effectively turns a 2-column table into a table with n columns, where n-1 of those columns are provided by the structure's fields.

根據鍵值對的DB數據庫模型,我們有時會認為它是一個只有兩列的表.然而,值(有時也可以是鍵,這由訪問的方式決定)可以是一種復雜的數據結構.通常,記錄中保存的是C的結構體或一些類似的東西.這種方式有效的把2列的表轉變為n列的表,其中n-1列是由結構體提供.

Note that a DB database is very much like a table in a relational database system in that most DB applications use more than one database (just as most relational databases use more than one table).

注意,我們這里的DB數據庫和關系數據庫中的表十分類似,絕大部分DB應用使用不只一個數據庫(正如大部分關系數據庫不只一個表).

Unlike relational systems, however, a DB database contains a single collection of records organized according to a given access method (BTree, Queue, Hash, and so forth). In a relational database system, the underlying access method is generally hidden from you.

但與關系系統不同的是,DB數據庫可以通過指定方式(B樹,隊列,哈希,諸如此類)訪問一個的數據集.在關系數據庫系統中,這些隱藏的訪問方式通常是用戶不可見的.

In any case, frequently DB applications are designed so that a single database stores a specific type of data (just as in a relational database system, a single table holds entries containing a specific set of fields). Because most applications are required to manage multiple kinds of data, a DB application will often use multiple databases.

基本上,常用的DB應用設計是一個單獨的數據庫來保存一個特定的數據類型(正如關系數據庫中,一張單獨的表包含一種特定的集合).由于一個程序通常要包含多種數據類型,一個DB應用通常也使用多個數據庫.

For example, consider an accounting application. This kind of an application may manage data based on bank accounts, checking accounts, stocks, bonds, loans, and so forth. An accounting application will also have to manage information about people, banking institutions, customer accounts, and so on. In a traditional relational database, all of these different kinds of information would be stored and managed using a (probably very) complex series of tables. In a DB application, all of this information would instead be divided out and managed using multiple databases.

比如,想像一個賬目程序.這種程序可以管理銀行帳號,支票帳號,股票,債券,貸款等等.一個賬目程序還需要管理用戶,用戶帳戶,銀行等等的信息.在傳統的關系數據庫中,所有的這些信息可能通過一系列(也許非常非常)復雜的表來保存和管理.在DB應用中,所有的這些信息則被分離,用多個數據庫來管理.

DB applications can efficiently use multiple databases using an optional mechanism called an environment. For more information, see Environments.

DB應用可以通過一種可選的叫做"環境(environment)"機制來有效的使用多個數據庫.更多內容參見"Environments"章節.

You interact with most DB APIs using special structures that contain pointers to functions. These callbacks are called methods because they look so much like a method on a C++ class. The variable that you use to access these methods is often referred to as a handle. For example, to use a database you will obtain a handle to that database.

你通過使用特定包含指針和函數的結構體和DB的API互交.這些回調和C++中類的method看上去很像,因此被稱為方法(methods).
用來訪問方法的變量通常是一個句柄(handle).比如,使用一個數據庫,你必須獲得一個數據庫的句柄.

Retrieving a record from a database is sometimes called getting the record because the method that you use to retrieve the records is called get(). Similarly, storing database records is sometimes called putting the record because you use the put() method to do this.

從數據庫中找回一條記錄有時被稱為get一條記錄,原因是找回記錄的方法是get().類似保存一條記錄有時被稱為put一條記錄,因為相應的方法是put().

When you store, or put, a record to a database using its handle, the record is stored according to whatever sort order is in use by the database. Sorting is mostly performed based on the key, but sometimes the data is considered too. If you put a record using a key that already exists in the database, then the existing record is replaced with the new data. However, if the database supports duplicate records (that is, records with identical keys but different data), then that new record is stored as a duplicate record and any existing records are not overwritten.

當你通過句柄保存,或者說是put一條記錄,這條記錄通過數據庫指定的順序被插入.順序主要是由鍵來確定,但有時值也是被考慮的因素.如果你put了一個鍵已經存在的記錄,它會用新的數據替換原有數據.然而,如果數據庫支持多重(duplicate)記錄(也就是說鍵同值不同),那么新的記錄會作為另一個副本保存.

If a database supports duplicate records, then you can use a database handle to retrieve only the first record in a set of duplicate records.

如果數據庫支持多重記錄,你可以通過數據庫找回多重記錄集中的第一條記錄.

In addition to using a database handle, you can also read and write data using a special mechanism called a cursor. Cursors are essentially iterators that you can use to walk over the records in a database. You can use cursors to iterate over a database from the first record to the last, and from the last to the first. You can also use cursors to seek to a record. In the event that a database supports duplicate records, cursors are the only way you can access all the records in a set of duplicates.

再提一點關于數據庫句柄使用,你可以通過一種叫做游標(cursor)的特定機制來讀/寫數據.游標本質上是用來遍歷數據庫中記錄的迭代器(iterator).你可以使用游標來查詢記錄.在數據庫支持多重記錄的情況下,游標是唯一可以訪問這些記錄副本集的方式.

Finally, DB provides a special kind of a database called a secondary database. Secondary databases serve as an index into normal databases (called primary database to distinguish them from secondaries). Secondary databases are interesting because DB records can hold complex data types, but seeking to a given record is performed only based on that record's key. If you wanted to be able to seek to a record based on some piece of information that is not the key, then you enable this through the use of secondary databases.

最后,DB提供了一種特殊的數據庫叫做次級(secondary)數據庫.次級數據庫作為普通數據庫(為了區別,稱他為主數據庫)的索引而存在.由于DB數據庫可以保存復雜的數據結構,但是查詢時只能通過記錄的鍵.如果你想通過不是鍵的部分進行查詢,就需要通過次級數據庫來實現了.
posted on 2007-05-10 10:49 張沈鵬 閱讀(901) 評論(0)  編輯 收藏 引用 所屬分類: C++
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区二区黄| 午夜精品999| 亚洲国产精品免费| 蜜臀va亚洲va欧美va天堂| 亚洲福利国产| 亚洲国产欧美日韩| 欧美日韩在线高清| 亚洲尤物在线视频观看| 亚洲一区二区免费| 国产尤物精品| 欧美成人精品一区| 欧美肥婆在线| 午夜精品一区二区三区在线| 欧美淫片网站| 亚洲人成在线播放| 一区二区三区久久精品| 国产欧美一区二区精品婷婷| 久久中文字幕一区| 欧美日韩国产丝袜另类| 久久精品99无色码中文字幕| 久久久女女女女999久久| 日韩午夜激情电影| 亚洲自拍高清| 亚洲精品欧美激情| 亚洲欧美日本国产有色| 亚洲国产精品久久| 一区二区三区导航| 亚洲国产专区| 亚洲一区二区视频| 亚洲精品一区二区三区99| 亚洲视屏一区| 亚洲老司机av| 久久精品视频亚洲| 亚洲一区一卡| 欧美成人黄色小视频| 久久精品久久综合| 欧美日韩国产小视频| 毛片一区二区三区| 国产精品女主播一区二区三区| 你懂的国产精品| 国产精品视频免费| 亚洲乱码视频| 亚洲国产二区| 欧美在线视频网站| 欧美亚洲一区| 欧美视频1区| 亚洲高清不卡在线| 影音先锋成人资源站| 性视频1819p久久| 亚洲欧美国产精品桃花| 欧美成熟视频| 欧美激情影音先锋| 激情另类综合| 久久精品一区| 欧美伊久线香蕉线新在线| 欧美性猛片xxxx免费看久爱| 亚洲欧洲一区二区三区| 亚洲一区二区免费视频| 日韩视频免费在线| 免费成人在线观看视频| 久久综合五月| 一区二区亚洲精品| 久久久精品一区二区三区| 久久成人这里只有精品| 国产女优一区| 久久成人av少妇免费| 久久久噜噜噜久久久| 国产亚洲一二三区| 美女诱惑黄网站一区| 黄色精品免费| 久久久夜精品| 欧美激情第二页| 亚洲精品小视频| 欧美日韩国产首页在线观看| 亚洲精品婷婷| 亚洲一区一卡| 国产欧美 在线欧美| 欧美亚洲视频在线看网址| 久久久国产精品一区二区三区| 国产欧美日韩麻豆91| 欧美影片第一页| 男人天堂欧美日韩| 日韩一级成人av| 欧美日韩性生活视频| 亚洲一区二区三区精品视频| 久久超碰97中文字幕| 在线观看视频一区| 欧美成人一品| 夜夜精品视频| 久久精品人人爽| 91久久中文字幕| 国产精品电影观看| 新67194成人永久网站| 你懂的视频欧美| 亚洲午夜久久久久久尤物| 国产精品一区二区久久精品| 久久久精品久久久久| 亚洲三级电影全部在线观看高清| 亚洲一区二区不卡免费| 极品日韩久久| 欧美视频在线视频| 久久久噜噜噜久噜久久| 亚洲精品中文在线| 久久视频精品在线| 一区二区三区视频观看| 国产一区二区剧情av在线| 欧美国产日韩一二三区| 亚洲欧美日韩中文在线制服| 亚洲黄色尤物视频| 久久久xxx| 亚洲少妇自拍| 亚洲国产一区二区三区在线播| 欧美性色aⅴ视频一区日韩精品| 欧美在线观看视频一区二区三区| 亚洲精品一区二区三区蜜桃久| 久久精品国产成人| 亚洲天堂成人在线观看| 在线看欧美视频| 国产欧美日韩综合| 欧美日韩亚洲一区二区三区| 久久青草欧美一区二区三区| 亚洲欧美精品在线观看| 亚洲三级电影全部在线观看高清| 久久天堂国产精品| 午夜精品久久久| 这里是久久伊人| 91久久在线| 在线成人www免费观看视频| 国产精品一二一区| 欧美日韩综合久久| 欧美国产日韩精品| 久久综合激情| 亚洲欧洲一区| 亚洲第一精品在线| 榴莲视频成人在线观看| 久久av在线看| 欧美在线视频免费播放| 午夜亚洲激情| 亚洲尤物在线| 亚洲欧美日韩在线| 亚洲一区免费网站| 亚洲伊人观看| 亚洲免费在线电影| 亚洲欧美日韩一区| 亚洲一区图片| 欧美一进一出视频| 欧美伊人久久久久久久久影院| 亚洲欧美视频| 欧美一区日韩一区| 久久久久久久久久久一区| 久久久成人网| 久久尤物视频| 欧美成人综合在线| 亚洲国产精品第一区二区 | 欧美精品一区二区高清在线观看| 蜜桃久久av| 欧美国产日韩精品| 欧美日韩中文另类| 国产精品一区免费观看| 黑人极品videos精品欧美裸| 亚洲成人资源| 亚洲免费av电影| 亚洲免费视频网站| 欧美专区亚洲专区| 美女视频网站黄色亚洲| 亚洲欧洲综合另类| 一区二区三区精品视频在线观看| 午夜精品视频一区| 六月丁香综合| 欧美日韩在线不卡一区| 国产一区二区三区久久悠悠色av| 亚洲成人在线观看视频| 99伊人成综合| 久久国内精品自在自线400部| 美女黄网久久| 一区二区三区精密机械公司 | 亚洲欧美日韩精品久久久| 久久精品免费电影| 欧美巨乳波霸| 国产香蕉97碰碰久久人人| 亚洲日韩欧美视频一区| 午夜亚洲影视| 欧美激情一区二区三区成人| 亚洲一级电影| 蜜桃av综合| 国产亚洲一区在线| 一区二区欧美亚洲| 久久久久久午夜| 一区二区三区日韩精品视频| 久久久另类综合| 国产精品久久亚洲7777| 亚洲精品欧美日韩专区| 久久福利精品| 亚洲美女精品成人在线视频| 久久久99爱| 国产毛片精品国产一区二区三区| 91久久精品国产91久久性色| 久久精品99国产精品| 宅男在线国产精品| 欧美好吊妞视频|