首頁 資料庫 mysql教程 Berkeley DB 由浅入深【转自架构师杨建】

Berkeley DB 由浅入深【转自架构师杨建】

Jun 07, 2016 pm 03:48 PM
Berkeley for 架構

for (fail = 0;;) { /* Begin the transaction. */ if ((ret = dbenv-txn_begin(dbenv, NULL, tid, 0)) != 0) { dbenv-err(dbenv, ret, dbenv-txn_begin); exit (1); } /* Store the key. */ switch (ret = dbp-put(dbp, tid, key, data, 0)) { case 0: /* S

for (fail = 0;;) { /* Begin the transaction. */ if ((ret = dbenv->txn_begin(dbenv, NULL, &tid, 0)) != 0) { dbenv->err(dbenv, ret, "dbenv->txn_begin"); exit (1); } <p>/* Store the key. */ switch (ret = dbp->put(dbp, tid, &key, &data, 0)) { case 0: /* Success: commit the change. */ printf("db: %s: key stored.\n", (char *)key.data); if ((ret = tid->commit(tid, 0)) != 0) { dbenv->err(dbenv, ret, "DB_TXN->commit"); exit (1); } return (0); case DB_LOCK_DEADLOCK: default: /* Failure: retry the operation. */ if ((t_ret = tid->abort(tid)) != 0) { dbenv->err(dbenv, t_ret, "DB_TXN->abort"); exit (1); } if (fail++ == MAXIMUM_RETRY) return (ret); continue; } }</p>
<p> <wbr></wbr></p>
<p>

 <wbr> <wbr> <wbr> Berkeley DB由五个主要的子系统构成.包括: 存取管理子系统、内存池管理子系统、事务子系统、锁子系统以及日志子系统。其中存取管理子系统作为Berkeley DB数据库进程包内部核心组件,而其他子系统都存在于Berkeley DB数据库进程包的外部。每个子系统支持不同的应用级别。</wbr></wbr></wbr></p>
<p>1.数据存取子系统

 <wbr> <wbr>数据存取(Access Methods)子系统为创建和访问数据库文件提供了多种支持。Berkeley DB提供了以下四种文件存储方法:

哈希文件、B树、定长记录(队列)和变长记录(基于记录号的简单存储方式),应用程序可以从中选择最适合的文件组织结构。程序员创建表时可以使用任意一种结构,并且可以在同一个应用程序中对不同存储类型的文件进行混合操作。</wbr></wbr></p>
<p> <wbr> <wbr> <wbr> 在没有事务管理的情况下,该子系统中的模块可单独使用,为应用程序提供快速高效的数据存取服务。

数据存取子系统适用于不需事务只需快速格式文件访问的应用。</wbr></wbr></wbr></p>
<p> <wbr>2.内存池管理子系统

 <wbr> <wbr> <wbr> 内存池(Memory pool)子系统对Berkeley DB所使用的共享缓冲区进行有效的管理。它允许同时访问数据库的多个进程或者

进程的多个线程共享一个高速缓存,负责将修改后的页写回文件和为新调入的页分配内存空间。它也可以独立于Berkeley DB系统之外,单独被应用程序使用,为其自己的文件和页分配内存空间。内存池管理子系统适用于需要灵活的、面向页的、缓冲的共享文件访问的应用。</wbr></wbr></wbr></wbr></p>
<p> <wbr>3.事务子系统

 <wbr> <wbr>事务(Transaction)子系统为Berkeley DB提供事务管理功能。它允许把一组对数据库的修改看作一个原子单位,这组操作要么全做,要么全不做。在默认的情况下,系统将提供严格的ACID事务属性,但是应用程序可以选择不使用系统所作的隔离保证。该子系统使用两段锁技术和先写日志策略来保证数据库数据的正确性和一致性。它也可以被应用程序单独使用来对其自身的数据更新进行事务保护。事务子系统适用于需要事务保证数据的修改的应用。

 <wbr> <wbr> <wbr> 

 <wbr>4.锁子系统

 <wbr> <wbr> <wbr> 锁(Locking)子系统为Berkeley DB提供锁机制,为系统提供多用户读取和单用户修改同一对象的共享控制。

数据存取子系统可利用该子系统获得对页或记录的读写权限;事务子系统利用锁机制来实现多个事务的并发控制。

 <wbr> <wbr> <wbr> 

 <wbr> <wbr> <wbr> 该子系统也可被应用程序单独采用。锁子系统适用于一个灵活的、快速的、可设置的锁管理器。

 <wbr> <wbr> <wbr> 

5.日志子系统 <wbr> <wbr> <wbr> 

 <wbr>日志(Logging)子系统采用的是先写日志的策略,用于支持事务子系统进行数据恢复,保证数据一致性。

它不大可能被应用程序单独使用,只能作为事务子系统的调用模块。</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></p>
<p> <wbr> <wbr> <wbr>以上几部分构成了整个Berkeley DB数据库系统。各部分的关系如下图所示:</wbr></wbr></wbr></p>
<p><img  src="/static/imghw/default1.png" data-src="/inc/test.jsp?url=http%3A%2F%2Fleeon.me%2Fupload%2F2010-04%2F20100403150406_56033.jpg&refer=http%3A%2F%2Fblog.csdn.net%2Fduanbeibei%2Farticle%2Fdetails%2F26456603" class="lazy" alt="Berkeley DB 由浅入深【转自架构师杨建】" >

 <wbr> <wbr> <wbr> 

 <wbr> <wbr> <wbr> 在这个模型中,应用程序直接调用的是数据存取子系统和事务管理子系统,这两个系统进而调用更下层的内存管理子系统、

锁子系统和日志子系统。

 <wbr> <wbr> <wbr> 

 <wbr> <wbr> <wbr> 由于几个子系统相对比较独立,所以应用程序在开始的时候可以指定哪些数据管理服务将被使用。可以全部使用,也可以只用其中的一部分。例如,如果一个应用程序需要支持多用户并发操作,但不需要进行事务管理,那它就可以只用锁子系统而不用事务。有些应用程序可能需要快速的、单用户、没有事务管理功能的B树存储结构,那么应用程序可以使锁子系统和事务子系统失效,这样就会减少开销。 <wbr>  <wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></p>
登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1320
25
PHP教程
1269
29
C# 教程
1249
24
解決kernel_security_check_failure藍色畫面的17種方法 解決kernel_security_check_failure藍色畫面的17種方法 Feb 12, 2024 pm 08:51 PM

Kernelsecuritycheckfailure(內核檢查失敗)就是一個比較常見的停止代碼類型,可藍屏錯誤出現不管是什麼原因都讓很多的有用戶們十分的苦惱,下面就讓本站來為用戶們來仔細的介紹一下17種解決方法吧。 kernel_security_check_failure藍色畫面的17種解決方法方法1:移除全部外部裝置當您使用的任何外部裝置與您的Windows版本不相容時,則可能會發生Kernelsecuritycheckfailure藍色畫面錯誤。為此,您需要在嘗試重新啟動電腦之前拔下全部外部裝置。

深度學習架構的比較分析 深度學習架構的比較分析 May 17, 2023 pm 04:34 PM

深度學習的概念源自於人工神經網路的研究,含有多個隱藏層的多層感知器是一種深度學習結構。深度學習透過組合低層特徵形成更抽象的高層表示,以表徵資料的類別或特徵。它能夠發現資料的分佈式特徵表示。深度學習是機器學習的一種,而機器學習是實現人工智慧的必經之路。那麼,各種深度學習的系統架構之間有哪些差異呢? 1.全連接網路(FCN)完全連接網路(FCN)由一系列完全連接的層組成,每個層中的每個神經元都連接到另一層中的每個神經元。其主要優點是“結構不可知”,即不需要對輸入做出特殊的假設。雖然這種結構不可知使得完

1.3ms耗時!清華最新開源行動裝置神經網路架構 RepViT 1.3ms耗時!清華最新開源行動裝置神經網路架構 RepViT Mar 11, 2024 pm 12:07 PM

论文地址:https://arxiv.org/abs/2307.09283代码地址:https://github.com/THU-MIG/RepViTRepViT在移动端ViT架构中表现出色,展现出显著的优势。接下来,我们将探讨本研究的贡献所在。文中提到,轻量级ViTs通常比轻量级CNNs在视觉任务上表现得更好,这主要归功于它们的多头自注意力模块(MSHA)可以让模型学习全局表示。然而,轻量级ViTs和轻量级CNNs之间的架构差异尚未得到充分研究。在这项研究中,作者们通过整合轻量级ViTs的有效

多路徑多領域通吃! GoogleAI發布多領域學習通用模型MDL 多路徑多領域通吃! GoogleAI發布多領域學習通用模型MDL May 28, 2023 pm 02:12 PM

面向視覺任務(如影像分類)的深度學習模型,通常使用單一視覺域(如自然影像或電腦生成的影像)的資料進行端到端的訓練。一般情況下,一個為多個領域完成視覺任務的應用程式需要為每個單獨的領域建立多個模型,分別獨立訓練,不同領域之間不共享數據,在推理時,每個模型將處理特定領域的輸入資料。即使是面向不同領域,這些模型之間的早期層的有些特徵都是相似的,所以,對這些模型進行聯合訓練的效率更高。這能減少延遲和功耗,降低儲存每個模型參數的記憶體成本,這種方法稱為多領域學習(MDL)。此外,MDL模型也可以優於單

Spring Data JPA 的架構和工作原理是什麼? Spring Data JPA 的架構和工作原理是什麼? Apr 17, 2024 pm 02:48 PM

SpringDataJPA基於JPA架構,透過映射、ORM和事務管理與資料庫互動。其儲存庫提供CRUD操作,派生查詢簡化了資料庫存取。此外,它使用延遲加載,僅在必要時檢索數據,從而提高了效能。

此「錯」並非真的錯:從四篇經典論文入手,理解Transformer架構圖「錯」在何處 此「錯」並非真的錯:從四篇經典論文入手,理解Transformer架構圖「錯」在何處 Jun 14, 2023 pm 01:43 PM

前段時間,一則指出Google大腦團隊論文《AttentionIsAllYouNeed》中Transformer架構圖與程式碼不一致的推文引發了大量的討論。對於Sebastian的這項發現,有人認為屬於無心之過,但同時也會令人感到奇怪。畢竟,考慮到Transformer論文的流行程度,這個不一致問題早就該被提及1000次。 SebastianRaschka在回答網友評論時說,「最最原始」的程式碼確實與架構圖一致,但2017年提交的程式碼版本進行了修改,但同時沒有更新架構圖。這也是造成「不一致」討論的根本原因。

AI基礎架構:IT和資料科學團隊協作的重要性 AI基礎架構:IT和資料科學團隊協作的重要性 May 18, 2023 pm 11:08 PM

人工智慧(AI)已經改變了許多行業的遊戲規則,使企業能夠提高效率、決策和客戶體驗。隨著人工智慧的不斷發展和變得越來越複雜,企業投資於合適的基礎設施來支援其開發和部署至關重要。這個基礎設施的一個關鍵方面是IT和數據科學團隊之間的協作,因為兩者在確保人工智慧計畫的成功方面都發揮著關鍵作用。人工智慧的快速發展導致對運算能力、儲存和網路能力的需求不斷增加。這種需求為傳統IT基礎架構帶來了壓力,而傳統IT基礎架構並非設計用於處理AI所需的複雜和資源密集型工作負載。因此,企業現在正在尋求建構能夠支持AI工作負

手撕Llama3第1層: 從零開始實現llama3 手撕Llama3第1層: 從零開始實現llama3 Jun 01, 2024 pm 05:45 PM

一、Llama3的架構在本系列文章中,我們從頭開始實作llama3。 Llama3的整體架構:圖片Llama3的模型參數:讓我們來看看這些參數在LlaMa3模型中的實際數值。圖片[1]上下文視窗(context-window)在實例化LlaMa類別時,變數max_seq_len定義了context-window。類別中還有其他參數,但這個參數與transformer模型的關係最為直接。這裡的max_seq_len是8K。圖片[2]字彙量(Vocabulary-size)和注意力層(AttentionL

See all articles