`
wangyihust
  • 浏览: 436208 次
文章分类
社区版块
存档分类
最新评论

嵌入式内存数据库系统Berkeley DB

阅读更多

1.Berkeley DB支持几乎所有的现代操作系统,如LINUX、UNIX、WINDOWS等,也提供了丰富的应用程序接口,支持C、C++、JAVA、PERL、TCL、PYTHON、PHP等。

2.Berkeley DB for .net 0.95 版本是为.net2.0平台推出的,老外封装的,强。。。但是没有java版做的好。

3. Berkeley DB的设计思想是简单、小巧、可靠、高性能。如果说一些主流数据库系统是大而全的话,那么DB就可称为小而精。DB提供了一系列应用程序接口(API),调用本身很简单,应用程序和DB所提供的库在一起编译成为可执行程序。这种方式从两方面极大提高了DB的效率。
第一:DB库和应用程序运行在同一个地址空间,没有客户端程序和数据库服务器之间昂贵的网络通讯开销,也没有本地主机进程之间的通讯;
第二:不需要对SQL代码解码,对数据的访问直截了当。

实际项目中非常适合快速本地文件存取。

4. DB数据访问算法

    在数据库领域中,数据访问算法对应了数据在硬盘上的存储格式和操作方法。在编写应用程序时,选择合适的算法可能会在运算速度上提高1个甚至多个数量级。大多数数据库都选用B+树算法,DB也不例外,同时还支持HASH算法、Recno算法和Queue算法。接下来,我们将讨论这些算法的特点以及如何根据需要存储数据的特点进行选择。

B+树算法:B+树是一个平衡树,关键字有序存储,并且其结构能随数据的插入和删除进行动态调整。为了代码的简单,DB没有实现对关键字的前缀码压缩。B+树支持对数据查询、插入、删除的常数级速度。关键字可以为任意的数据结构。

HASH算法:DB中实际使用的是扩展线性HASH算法(extended linear hashing),可以根据HASH表的增长进行适当的调整。关键字可以为任意的数据结构。

Recno算法: 要求每一个记录都有一个逻辑纪录号,逻辑纪录号由算法本身生成。实际上,这和关系型数据库中逻辑主键通常定义为int AUTO型是同一个概念。Recho建立在B+树算法之上,提供了一个存储有序数据的接口。记录的长度可以为定长或不定长。

Queue算法:和Recno方式接近, 只不过记录的长度为定长。数据以定长记录方式存储在队列中,插入操作把记录插入到队列的尾部,相比之下插入速度是最快的。

    对算法的选择首先要看关键字的类型,如果为复杂类型,则只能选择B+树或HASH算法,如果关键字为逻辑记录号,则应该选择Recno或Queue算法。当工作集关键字有序时,B+树算法比较合适;如果工作集比较大且基本上关键字为随机分布时,选择HASH算法。Queue算法只能存储定长的记录,在高的并发处理情况下,Queue算法效率较高;如果是其它情况,则选择Recno算法,Recno算法把数据存储为平面文件格式。

(摘自 施聪 《嵌入式数据库系统Berkeley DB》)

5. .net平台序列化问题

 .NET 内置的二进制序列化引擎
       --System.Runtime.Serialization.Formatters.Binary.BinaryFormatter 相对于BdbFormatter,  .NET 内置的二进制序列化引擎有如下弱点:
      1) 空间利用不充分,没必要为每条记录都存储元数据 meta-data
      2) 速度慢,运行时才发现序列化类型
      3) 不能部分反序列化
     4) 没必要支持昂贵时间段数字类型排序
       BDB 需要将对象转换成 byte[] 才能存储,定义的字段序列化转换类型XField,通过其构造方法注册到 BdbFormatter 引擎。

        /// <summary>
        /// 定义的字段序列化转换类型PeopleField,通过其构造方法注册到 BdbFormatter 引擎
        /// Author:EKING
        /// </summary>
        /// <param name="dbf"></param>
        private void useBDBFormatter(DbFile dbf)
        {
            People p = new People();
            p.Name = "Tom";
            p.Age = 23;

            BdbFormatter formatter = new BdbFormatter(3, 2048);
            new PeopleField(formatter, true);

            // Put
            DbEntry key = formatter.ToDbEntry<string>(p.Name);
            DbEntry data = formatter.ToDbEntry<People>(p);
            dbf.Put(null, ref key, ref data);

            dbf.Sync();

            // Get
            data = DbEntry.Out(new byte[2048]);
            dbf.Get(null, ref key, ref data, DbFile.ReadFlags.None);

            People p2 = new People();
            formatter.FromDbEntry<People>(ref p2, ref data);
            MessageBox.Show( string.Format("{0},{1}", p2.Name, p2.Age));

        }

分享到:
评论

相关推荐

    嵌入式数据库系统Berkeley DB

    嵌入式数据库系统Berkeley DB嵌入式数据库系统Berkeley DB

    Java嵌入式NoSQL数据库之Berkeley DB Java Edition

    Berkeley DB Java Edition(简称BDB JE)是一种高性能、轻量级的嵌入式数据库系统,由Oracle公司开发,广泛应用于需要快速数据存储和检索的应用场景。它并非传统的关系型数据库管理系统(RDBMS),而是一种键值对...

    Berkeley DB嵌入式数据库系统,无需独立服务器进程,为BerkeleyDBUI提供高效的数据管理基础

    Berkeley DB嵌入式数据库系统,无需独立服务器进程,为BerkeleyDBUI提供高效的数据管理基础

    db.rar_Berkeley DB_嵌入式 数据库

    **Berkeley DB** 是一款轻量级的嵌入式数据库管理系统,由Oracle公司开发,广泛应用于需要快速、高效数据存储的场景,特别是在嵌入式系统和分布式应用中。这款数据库的特点在于它不需要独立的服务器进程,可以直接在...

    Berkeley DB数据库最新版

    Berkeley DB(简称BDB)是一种高性能、轻量级的嵌入式数据库系统,由Oracle公司开发并维护。它最初在伯克利大学诞生,因此得名“Berkeley DB”。这款数据库系统广泛应用于需要快速、可靠数据存储的应用中,尤其在...

    berkeleyDb嵌入式数据库

    用berkeleydb设计的嵌入式数据库,可进行查询,修改,删除,插入基本功能

    Berkeley DB4.8以上各版本

    Berkeley DB是一款由Oracle公司开发的嵌入式数据库系统,被广泛应用于许多软件项目中,尤其是在需要快速、轻量级数据存储解决方案的场景下。它提供了键值对存储模式,适用于构建高性能的数据缓存和数据库应用程序。...

    Berkeley DB数据库 6.2.32 64位

    Berkeley DB是一个嵌入式数据库,为应用程序提供可伸缩的、高性能的、有事务保护功能的数据管理服务。 主要特点: 嵌入式:直接链接到应用程序中,与应用程序运行于同样的地址空间中,因此,无论是在网络上不同...

    嵌入式开源数据库系统对比

    - **简介**:Oracle Berkeley DB 是一个高性能、工业级别的嵌入式数据库解决方案,它提供了一套完整的工具包用于构建各种类型的应用程序。 - **特性**: - **C-Library 模式**:以 C 语言库的形式提供,可以嵌入到...

    天津科技大学嵌入式操作系统第5章嵌入式数据库

    Berkeley DB是一个高性能、可靠性高的嵌入式数据库,广泛应用于嵌入式系统、移动设备、桌面应用程序等。Berkeley DB具有体积小、速度快、易用性高、支持事务等特点。 本章节对嵌入式数据库的概述、特点、分类和应用...

    嵌入式数据库典型技术―SQLite 和Berkeley DB 的研究.pdf

    1. **体积适当**:由于嵌入式系统对内存空间和处理器资源的要求较高,因此嵌入式数据库需要占用尽可能少的ROM、RAM及CPU资源。 2. **功能齐备**:尽管体积小巧,但嵌入式数据库依然需要提供完整的数据管理功能,包括...

    嵌入式数据库原理与应用.zip

    4. **缓存系统**:嵌入式数据库如Berkeley DB常用于构建本地缓存,提高应用程序性能。 5. **嵌入式操作系统**:在小型嵌入式系统中,如汽车导航系统,嵌入式数据库可提供地图数据的存储和检索。 **设计和选择** ...

    嵌入式数据库典型技术―SQLite 和Berkeley DB 的研究+在指纹识别系统中的应用

    本主题将深入探讨两种常见的嵌入式数据库技术:SQLite 和 Berkeley DB,并分析它们在指纹识别系统中的具体应用。 SQLite 是一种开源的关系型数据库管理系统,它具有轻量级、零配置、自包含的特点,无需独立服务器...

    BerkeleyDB-0.26

    BerkeleyDB 就是一个典型的嵌入式数据库,它的轻量级特性使得它可以轻松地嵌入到各种应用程序中,包括操作系统、设备固件以及各种服务器应用。 **BerkeleyDB 的主要特点:** 1. **无模式设计** - 数据库中的每个...

    Berkeley DB参考资料

    嵌入式数据库系统 Berkeley DB - **21.1 前言** - **嵌入式数据库**:介绍嵌入式数据库的一般特点。 - **21.2 DB 综述** - **Berkeley DB 介绍**:概述 Berkeley DB 的特点和优势。 - **21.3 DB 的设计思想** - ...

    Berkeley DB参考手册PDF版本

    开源嵌入式数据库BerkeleyDB - **23.1 BerkeleyDB简介** - **简介概述**:概括Berkeley DB的定位和发展历程。 - **23.2 基本概念** - **核心概念**:介绍Berkeley DB中的基本概念,如数据库、记录等。 - **23.3 ...

    BerkeleyDB的参考书集

    BerkeleyDB,简称BDB,是一个开源的、高性能的、嵌入式数据库系统,广泛应用于各种分布式应用、日志记录、缓存服务等领域。 在这个压缩包中,我们可以找到以下文件,每一份都是BerkeleyDB学习的重要资料: 1. **...

Global site tag (gtag.js) - Google Analytics