首页天道酬勤数据库是,database数据库

数据库是,database数据库

admin 05-12 19:56 197次浏览

最近要用DBD,找相关资料,贴上科普性的东西吧:

来自3http://www.javaeye.com/topic/202990

数据库摘要

DB最初的目的是开发新的混列接入算法,以代替旧的hsearch函数和大量的DBm实现(ATT的DBm、Berkeley的ndbm、GNU项目的gdbm等)。 数据库的最初版本出现于1991年,当时也包括b树数据访问算法。 1992年,BSD UNIX版本4.4包含数据库版本DB1.85。 我基本上认为这是数据库的第一个正式版。 1996年中期,Sleepycat软件公司成立,为数据库提供业务支持。 此后,数据库得到广泛应用,目前最新版本为4.3.27。

数据库支持几乎所有现代操作系统,包括LINUX、UNIX和WINDOWS,以及支持c、c、JAVA、PERL、TCL、PYTHON和PHP的丰富的APP应用程序界面数据库的应用非常广泛,在很多有名的软件中都可以看到它的身影。 例如参考资料2中作者论述了利用数据库在LINUX上实现内核级文件系统; 参考资料3中,从实际的测试数据显示DB提高了OPENLDAP的效率。 LINUX下的软件包管理器RPM也使用DB来管理与软件包相关的数据,并在使用命令文件查看RPM数据目录/var/lib/rpm下的文件时,输出格式如下:

dirnames : Berkeley db (树,版本9,本机字节顺序)。

Filemd5s:Berkeleydb(hash,版本8,本机字节顺序) )。

值得注意的是,数据库是嵌入式数据库系统,而不是典型的基于关系/对象的数据库,不支持SQL语言,也不提供数据库常见的高级功能,如存储过程和触发器

数据库的设计思想

数据库的设计思想简单、紧凑、可靠、高性能。 如果一些主要的数据库系统大而完整,那么数据库可以说是小而精。 数据库提供了一组APP应用程序编程接口(API ),调用本身很简单,将APP应用程序和数据库提供的库编译在一起成为可执行程序。 这种方式从两个方面大大提高了数据库的效率。 第一,数据库库和APP应用程序在同一地址空间中运行,没有客户端程序和数据库服务器之间的昂贵的网络通信开销,也没有本地主机进程之间的通信。 第二,不需要解码SQL代码,对数据的访问很坦率。

数据库对应该管理的数据进行了简单的思考。 数据库包含多个记录,每个记录都由关键字和数据(KEY/VALUE )组成。 数据可以是简单的数据类型,也可以是复杂的数据类型,如c语言结构。 数据库对数据类型没有任何说明,完全由程序员自己处理,是典型的c语言指针的“自由”样式。 如果将记录视为具有n个字段的表,则第一个字段是表的主键,第2--n个字段对应于其他数据。 数据库APP应用程序通常使用多个数据库。 从某种意义上说,它是关系数据库中的多个表。 数据库库非常紧凑,不超过500K,但最多可以管理256T的数据量。

数据库的设计充分体现了UNIX的基于工具的哲学。 也就是说,可以通过几个简单的工具的组合来实现强大的功能。 数据库的每个基础功能模块都是独立设计的。 这意味着其使用空间不限于数据库本身。 例如,锁定子系统可用于非db APP应用程序的常规操作,内存共享缓冲区mhdhh系统可用于内存中基于页面的文件缓冲区。

数据库核心数据结构

句柄结构数据库:包含若干描述数据库属性的参数,如数据库访问方法类型、逻辑页大小和数据库名称,数据库结构还包含大量数据库处理函数指针,大多数格式为(* ) 其中最重要的是open、close、put、get等函数。

数据库记录结构DBT:DB中的记录由关键字和数据组成,关键字和数据用结构DBT表示。 实际上,可以将关键字视为特殊的数据。 结构中最重要的两个字段是void * data和u_int32_t size,它们分别对应于数据本身和数据长度。

数据库结构DBC :游标(cursor )是数据库APP应用程序中的常见概念,本质上是与特定记录相关的遍历器。 请注意,数据库支持多个记录。 也就是说,请注意多个记录具有相同的关键字。 处理多个记录时,使用游标是最简单的。

环境句柄结构DB_ENV :环境在DB中是高级特性,本质上环境是多个数据库的包装器。 当在环境中打开一个或多个数据库时,环境将提供各种子系统服务,包括多行/进程处理支持、事务处理支持、高性能支持和日志恢复支持

数据库中的核心数据结构必须在使用前初始化,然后调用结构中的函数(指针)完成各种操作,最后关闭数据结构。 从设计思想层面看,该设计方法是利用面向过程语言实现面向对象编程的典范。

数据库数据访问算法

在数据库领域,数据访问算法支持将数据存储在硬盘中的形式和操作方法。 在创建APP应用程序时,如果选择适当的算法,计算速度可能会提高一位或多位。 大多数数据库选择b树算法,数据库也不例外,还支持混列算法、重做算法和队列算法。 接下来,我们将介绍这些算法的特点,以及如何根据需要存储数据

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算法把数据存储为平面文件格式。

AnycastEIP Anycast加速 AnycastEIPQt专栏之模态与非模态对话框的实现java包装类
数据库使用,数据库是 内存泄漏和内存溢出,oracledmp文件查看器
相关内容