当前位置:首页 » 数据仓库 » berkeleydb数据库
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

berkeleydb数据库

发布时间: 2023-05-31 21:07:10

‘壹’ 嵌入式数据库的可用于移动开发的嵌入式数据库简介

嵌入式数据库是轻量级的,独立的库,没有服务器组件,无需管理,一个小的代码尺寸,以及有限的资源需求。目前有几种嵌入式数据库,你可以在移动应用程序中使用。让我们来看看这些最流行的数据库。 数据库数据类型存储 License支持平台BerkeleyDBrelational, objects, key-value pairs, documentsAGPL 3.0Android, iOSCouchbase LitedocumentsApache 2.0Android, iOSLevelDBkey-value pairsNew BSDAndroid, iOSsqliterelationalPublic DomainAndroid, iOS, Windows Phone, BlackberryUnQLitekey-value pairs, documentsBSD 2-ClauseAndroid, iOS, Windows Phone

‘贰’ 键值数据库和文档型数据库的区别

ACCESS文件型数据库局域网面文件型数据库共享效毕竟缺乏网络支持
现型数据库基本都关系型像SQL/Oracle等等...

‘叁’ MySQL数据库存储引擎详解

存储引擎是什么?

MySQL中的数据用各种不同的技术存储在文件(或者内存)中 这些技术中的每一种技术都使用不同的存储机制 索引技巧 锁定水平并且最终提供广泛的不同的功能和能力 通过选择不同的技术 你能够获得额外的速度或者功能 从而改善你的应用的整体功能

例如 如果你在研究大量的临时数据 你也许需要使用内存存储引擎 内存存储引擎能够在内存中存储所有的表格数据 又或者 你也许需要一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力)

这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型) MySQL默认配置了许多不同的存储引擎 可以预先设置或者在MySQL服务器中启用 你可以选择适用于服务器 数据库和表格的存储引擎 以便在选择如何存储你的信息 如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性

选择如何存储和检索你的数据的这种灵活性是MySQL为什么如此受欢迎的主要原因 其它数据库系统(包括大多数商业选择)仅支持一种类型的数据存储 遗憾的是 其它类型的数据库解决方案采取的 一个尺码满足一切需求 的方式意味着你要么就牺牲一些性能 要么你就用几个小时甚至几天的时间详细调整你的数据库 使用MySQL 我们仅需要修改我们使用的存储引擎就可以了

在这篇文章中 我们不准备集中讨论不同的存储引擎的技术方面的问题(尽管我们不可避免地要研究这些因素的某些方面) 相反 我们将集中介绍这些不同的引擎分别最适应哪种需求和如何启用不同的存储引擎 为了实现这个目的 在介绍每一个存储引擎的具体情况之前 我们必须要了解一些基本的问题

如何确定有哪些存储引擎可用

你可以在MySQL(假设是MySQL服务器 以上版本)中使用显示引擎的命令得到一个可用引擎的列表

    mysql>showengines; + + + + |Engine|Support|Comment| + + + + |MyISAM|DEFAULT|DefaultengineasofMySQL withgreatperformance| |HEAP|YES|AliasforMEMORY| |MEMORY|YES|Hashbased storedinmemory usefulfortemporarytables| |MERGE|YES|| |MRG_MYISAM|YES|AliasforMERGE| |ISAM|NO|Obsoletestorageengine nowreplacedbyMyISAM| |MRG_ISAM|NO|Obsoletestorageengine nowreplacedbyMERGE| |InnoDB|YES|Supportstransactions row levellocking andforeignkeys| |INNOBASE|YES|AliasforINNODB| |BDB|NO|Supportstransactionsandpage levellocking| |BERKELEYDB|NO|AliasforBDB| |NDBCLUSTER|NO|Clustered fault tolerant memory basedtables| |NDB|NO|AliasforNDBCLUSTER| |EXAMPLE|NO|Examplestorageengine| |ARCHIVE|NO|Archivestorageengine| |CSV|NO|CSVstorageengine| + + + + rowsinset( sec)

这个表格显示了可用的数据库引擎的全部名单以及在当前的数据库服务器中是否支持这些引擎

对于MySQL 以前版本 可以使用mysql> show variables like have_% (显示类似 have_% 的变量):

    mysql>showvariableslike have_% ; + + + |Variable_name|Value| + + + |have_bdb|YES| |have_crypt|YES| |have_innodb|DISABLED| |have_isam|YES| |have_raid|YES| |have_symlink|YES| |have_openssl|YES| |have_query_cache|YES| + + + rowsinset( sec)

你可以通过修改设置脚本中的选项来设置在MySQL安装软件中可用的引擎 如果你在使用一个预先包装好的MySQL二进制发布版软件 那么 这个软件就包含了常用的引擎 然而 需要指出的是 如果你要使用某些不常用的引擎 特别是CSV RCHIVE(存档)和BLACKHOLE(黑洞)引擎 你就需要手工重新编译MySQL源码

使用一个指定的存储引擎

你可以使用很多方法指定一个要使用的存储引擎 最简单的方法是 如果你喜欢一种能满足你的大多数数据库需求的存储引擎 你可以在MySQL设置文件中设置一个默认的引擎类型(使用storage_engine 选项)或者在启动数据库服务器时在命令行后面加上 default storage engine或 default table type选项

更灵活的方式是在随MySQL服务器发布同时提供的MySQL客户端时指定使用的存储引擎 最直接的方式是在创建表时指定存储引擎的类型 向下面这样:

CREATE TABLE mytable (id int title char( )) ENGINE = INNODB

你还可以改变现有的表使用的存储引擎 用以下语句:

ALTER TABLE mytable ENGINE = MyISAM

然而 你在以这种方式修改表格类型的时候需要非常仔细 因为对不支持同样的索引 字段类型或者表大小的一个类型进行修改可能使你丢失数据 如果你指定一个在你的当前的数据库中不存在的一个存储引擎 那么就会创建一个MyISAM(默认的)类型的表

各存储引擎之间的区别

为了做出选择哪一个存储引擎的决定 我们首先需要考虑每一个存储引擎提供了哪些不同的核心功能 这种功能使我们能够把不同的存储引擎区别开来 我们一般把这些核心功能分为四类:支持的字段和数据类型 锁定类型 索引和处理 一些引擎具有能过促使你做出决定的独特的功能 我们一会儿再仔细研究这些具体问题

字段和数据类型

虽然所有这些引擎都支持通用的数据类型 例如整型 实型和字符型等 但是 并不是所有的引擎都支持其它的字段类型 特别是BLOG(二进制大对象)或者TEXT文本类型 其它引擎也许仅支持有限的字符宽度和数据大小

这些局限性可能直接影响到你可以存储的数据 同时也可能会对你实施的搜索的类型或者你对那些信息创建的索引产生间接的影响 这些区别能够影响你的应用程序的性能和功能 因为你必须要根据你要存储的数据类型选择对需要的存储引擎的功能做出决策

锁定

数据库引擎中的锁定功能决定了如何管理信息的访问和更新 当数据库中的一个对象为信息更新锁定了 在更新完成之前 其它处理不能修改这个数据(在某些情况下还不允许读这种数据)

锁定不仅影响许多不同的应用程序如何更新数据库中的信息 而且还影响对那个数据的查询 这是因为查询可能要访问正在被修改或者更新的数据 总的来说 这种延迟是很小的 大多数锁定机制主要是为了防止多个处理更新同一个数据 由于向数据中插入信息和更新信息这两种情况都需要锁定 你可以想象 多个应用程序使用同一个数据库可能会有很大的影响

不同的存储引擎在不同的对象级别支持锁定 而且这些级别将影响可以同时访问的信息 得到支持的级别有三种:表锁定 块锁定和行锁定 支持最多的是表锁定 这种锁定是在MyISAM中提供的 在数据更新时 它锁定了整个表 这就防止了许多应用程序同时更新一个具体的表 这对应用很多的多用户数据库有很大的影响 因为它延迟了更新的过程

页级锁定使用Berkeley DB引擎 并且根据上载的信息页( KB)锁定数据 当在数据库的很多地方进行更新的时候 这种锁定不会出现什么问题 但是 由于增加几行信息就要锁定数据结构的最后 KB 当需要增加大量的行 也别是大量的小型数据 就会带来问题

行级锁定提供了最佳的并行访问功能 一个表中只有一行数据被锁定 这就意味着很多应用程序能够更新同一个表中的不同行的数据 而不会引起锁定的问题 只有InnoDB存储引擎支持行级锁定

建立索引

建立索引在搜索和恢复数据库中的数据的时候能够显着提高性能 不同的存储引擎提供不同的制作索引的技术 有些技术也许会更适合你存储的数据类型

有些存储引擎根本就不支持索引 其原因可能是它们使用基本表索引(如MERGE引擎)或者是因为数据存储的方式不允许索引(例如FEDERATED或者BLACKHOLE引擎)

事务处理

事务处理功能通过提供在向表中更新和插入信息期间的可靠性 这种可靠性是通过如下方法实现的 它允许你更新表中的数据 但仅当应用的应用程序的所有相关操作完全完成后才接受你对表的更改 例如 在会计处理中每一笔会计分录处理将包括对借方科目和贷方科目数据的更改 你需要要使用事务处理功能保证对借方科目和贷方科目的数据更改都顺利完成 才接受所做的修改 如果任一项操作失败了 你都可以取消这个事务处理 这些修改就不存在了 如果这个事务处理过程完成了 我们可以通过允许这个修改来确认这个操作

lishixin/Article/program/MySQL/201311/29301

‘肆’ 常用嵌入式数据库有哪些(嵌入式数据库是什么区块)

嵌入式数据库还是有很多的,这里举几个吧:

1.BerkeleyDB常用嵌入式数据库有哪些

Berkeley

DB(BDB)是一个高效的嵌入式数据库编程库,C语言、C、Java、Perl、Python、Tcl以及其他很多语言都有其对应的API。

BerkeleyDB可以保存任意类型的键/值对(Key/ValuePair),而且可以为一个键保存多个数据。Berkeley

DB支持让数千的并发线程同时操作数据库,支持最大256TB的数据,广泛用于各种操作系统,其中包括大多数类Unix操作系统、Windows操作系统

以及实时操作系统。谨液蠢

2.CouchbaseLite

CouchbaseLite

是一个为满足在线和离线的移动应用所开发的超轻量的,可靠的,并且安全的JSON数据库。即使在最不确定的网络条件下,亦可以给您的移动应用提供富有成效

的和可靠的信誉。除此之外,’同步门户’功能亦可以提供协作,社交互动或者是用户的更新。

3.LevelDB

LevelDB是Google开源出的一个Key/Value存储引擎,它采用C编写的,支持高并发访问和写入埋和,特别适合对于高写入业务环境。

4.SQLite

SQLite是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的SQL数据库引擎。

其特点是高度便携、使用方便、结构紧凑、高效、可靠。与其他数据库管理系统不同,SQLite的安装和运行非常简单,在大多数情况下-

只要确保SQLite的二进制文件存在即可开始创建、连接和使用数据库。

5.UnQLite

UnQLite是,由Symisc

Systems公司出品的一个嵌入式C语言软件库,它实现了一个自包含、无服务器、零配置、事务化的NoSQL数据库引擎。UnQLite是一个文档存储

数据库,类似于MongoDB、Redis、CouchDB等。同时,也是一个标准的Key/Value存储祥陪,与BerkeleyDB和LevelDB等

类似。

‘伍’ Mysql数据库3种存储引擎有什么区别(mysql数据库的存储引擎有哪些)

MySQL常见的三种存储引擎为InnoDB、MyISAM和MEMORY。其区别体现在事务安全、存储限制、空间使用、内存使用、插入数据的速度和对外键的支持。具体如下:

1、事务安全:

InnoDB支持事务安全,MyISAM和MEMORY两个不支持。

2、存储限制:

InnoDB有64TB的存储限制,MyISAM和MEMORY要是具体情况而定。

3、空间使用:

InnoDB对空间使用程度较高,MyISAM和MEMORY对空间使用程度较低。

4、内存使用:

InnoDB和MEMORY对内存使用程度较高,MyISAM对内存使用程度较低。

5、插入数据的速度:

InnoDB插入数据的速度较低,MyISAM和MEMORY插入数据的速度较高。

6、对外键的支持:

InnoDB对外键支持情况较好,MyISAM和MEMORY两个不支持外键。

三种引擎特点如下:

1、InnoDB存储引擎

InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),其它存储引擎都是非事务安全表,支持行锁定和外键,MySQL5.5以后默认使用InnoDB存储引擎。

InnoDB特点:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。

如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)租芹。

2、MyISAM存储引擎

MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事务,不支持外键。

MyISAM特点:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比较低,也可以使用

3、MEMORY存储引擎

MEMORY存储引擎将表中的数据存储到内存中,为查询和引用其他表数据提供快速访问。

MEMORY特点:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。

它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。

(5)berkeleydb数据库扩展阅读:

mysql其余不太常见的存储引擎如下:

1、BDB:源自BerkeleyDB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性

2、Merge:将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用

3、Archive:非常适合存储大量稿型慧的独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差

4、Federated:将不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用

5、Cluster/NDB:高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用

6、CSV:逻辑上由逗号分割数据的存储引擎。它会在数据库子目录里为每个数据表创建一个.CSV文件。这是一种普通文本文件,每个数据行占用键答一个文本行。CSV存储引擎不支持索引。

7、BlackHole:黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继

‘陆’ 非关系型数据库主要包括几类各有什么特点

NoSQL描述的是大量结构化数据存储方法的集合,根据结构化方法以及应用场合的不同,主要可以将NoSQL分为以下几类。

(1)Column-Oriented
面向检索的列式存储,其存储结构为列式结构,同于关系型数据库的行式结构,这种结构会让很多统计聚合操作更简单方便,使系统具有较高的可扩展性。这类数据库还可以适应海量数据的增加以及数据结构的变化,这个特点与云计算所需的相关需求是相符合的,比如GoogleAppengine的BigTable以及相同设计理念的Hadoop子系统HaBase就是这类的典型代表。需要特别指出的是,Big Table特别适用于MapRece处理,这对于云计算的发展有很高的适应性。

(2)Key-Value。
面向高性能并发读/写的缓存存储,其结构类似于数据结构中的Hash表,每个Key分别对应一个Value,能够提供非常快的查询速度、大数据存放量和高并发操作,非常适合通过主键对数据进行查询和修改等操作。Key-Value数据库的主要特点是具有极高的并发读/写性能,非常适合作为缓存系统使用。MemcacheDB、BerkeleyDB、Redis、Flare就是Key-Value数据库的代表。

(3)Document-Oriented。
面向海量数据访问的文档存储,这类存储的结构与Key-Value非常相似,也是每个Key分别对应一个Value,但是这个Value主要以JSON(JavaScriptObjectNotations)或者XML等格式的文档来进行存储。这种存储方式可以很方便地被面向对象的语言所使用。这类数据库可在海量的数据中快速查询数据,典型代表为MongoDB、CouchDB等。

NoSQL具有扩展简单、高并发、高稳定性、成本低廉等优势,也存在一些问题。例如,NoSQL暂不提供SQL的支持,会造成开发人员的额外学习成本;NoSQL大多为开源软件其成熟度与商用的关系型数据库系统相比有差距;NoSQL的架构特性决定了其很难保证数据的完整性,适合在一些特殊的应用场景使用。