基于Berkeley DB实现的持久化队列】的更多相关文章

转自:http://guoyunsky.iteye.com/blog/1169912 队列很常见,但大部分的队列是将数据放入到内存.如果数据过多,就有内存溢出危险,而且长久占据着内存,也会影响性能.比如爬虫,将要抓取的URL放到内存,而URL过多,内存肯定要爆.在读Heritrix源码中,发现Heritrix是基于Bdb实现了一个持久化队列,于是我就将这块代码独立出来,平时使用也蛮爽的,现在拿出来共享.同时数据已经持久化,相比放在内存的一次性,可以循环累加使用. 大家也知道BDB的高性能和嵌入式…
Berkeley DB的数据存储结构 BDB支持四种数据存储结构及相应算法,官方称为访问方法(Access Method),分别是哈希表(Hash Table).B树(BTree).队列(Queue).记录号(Recno).在创建数据库的时候,必须通过dbtype参数将存储结构指定为上述结构中的一种,一旦数据库文件已创建则不能再更改其结构. 结构 描述 BTree 数据存储在一个有序的,平衡的树型结构中.在B树结构中,Key和Value都可以复杂的数据,这意味着它们可以是整数.字符串或复杂的数据…
 Berkeley DB(BDB)是一个高效的嵌入式数据库编程库,C语言.C++.Java.Perl.Python.Tcl以及其它非常多语言都有其相应的API. Berkeley DB能够保存随意类型的键/值对(Key/Value Pair),并且能够为一个键保存多个数据.Berkeley DB支持让数千的并发线程同一时候操作数据库.支持最大256TB的数据.广泛用于各种操作系统,当中包含大多数类Unix操作系统.Windows操作系统以及实时操作系统. Berkeley DB在06年被 O…
近期要使用DBD,于是搜了下相关的资料,先贴个科普性的吧: 转自http://www.javaeye.com/topic/202990 DB综述DB最初开发的目的是以新的HASH訪问算法来取代旧的hsearch函数和大量的dbm实现(如AT&T的dbm,Berkeley的ndbm,GNU项目的gdbm),DB的第一个发行版在1991年出现,当时还包括了B+树数据訪问算法.在1992年,BSD UNIX第4.4发行版中包括了DB1.85版.基本上觉得这是DB的第一个正式版.在1996年中期,Sle…
http://blog.sina.com.cn/s/blog_502c8cc40100yqkj.html NoSQL是现在互联网Web2.0时代备受关注的技术之一,被用来存储大量的非关系型的数据.Berkeley DB作为一款优秀的Key/Value存储引擎自然也在讨论之列.最近使用BDB来发一个KV系统,并将这段时间的BDB的学习和使用经验记录如下.(项目中使用了BDB的4.8.30版本,本文所有涉及的具体问题都基于该版本). 1. Berkeley DB的简介 Berkeley DB(BDB…
一.Berkeley DB的介绍 (1)Berkeley DB是一个嵌入式数据库,它适合于管理海量的.简单的数据.如Google使用其来保存账户信息,Heritrix用其来保存froniter. (2)key/value是Berkeley DB用来管理数据的基础,每个key/value对代表一条记录. (3)Berkeley DB在底层实现采用B树,可以看成能够存储大量数据的HashMap. (4)它是Oracle公司的一个产品,C++版本最新出现,之后JAVA等版本也陆续出现.它不支持SQL语…
http://www.ibm.com/developerworks/cn/linux/l-embdb/index.html UNIX/LINUX平台下的数据库种类非常多,参考资料1中 列举了其中的大部分.通常,我们在设计UNIX/LINUX平台下的应用软件时,如果数据种类繁多,数据与数据之间关系比较复杂,就会选用一些大型的企业 级数据库系统,如DB2,ORACLE.SYBASE等,如果软件规模不大,就倾向选用如MYSQL.POSTGRESQL等中小型数据库.例如使用 PHP/PERL + MYS…
使用最近DBD.然后搜了下相关资料,首先公布的是一门科学: 转会http://www.javaeye.com/topic/202990 DB综述DB最初开发的目的是以新的HASH訪问算法来取代旧的hsearch函数和大量的dbm实现(如AT&T的dbm,Berkeley的ndbm.GNU项目的gdbm),DB的第一个发行版在1991年出现,当时还包括了B+树数据訪问算法.在1992年,BSD UNIX第4.4发行版中包括了DB1.85版.基本上觉得这是DB的第一个正式版. 在1996年中期,Sl…
作者:陈磊 NoSQL是现在互联网Web2.0时代备受关注的技术之一,被用来存储大量的非关系型的数据.Berkeley DB作为一款优秀的Key/Value存储引擎自然也在讨论之列.最近使用BDB来发一个KV系统,并将这段时间的BDB的学习和使用经验记录如下.(项目中使用了BDB的4.8.30版本,本文所有涉及的具体问题都基于该版本). 1. Berkeley DB的简介 Berkeley DB(BDB)是一个高性能的嵌入式数据库编程库(引擎),它可以用来保存任意类型的键/值对 (Key/Val…
将 Oracle Berkeley DB 用作 NoSQL 数据存储 作者:Shashank Tiwari 2011 年 2 月发布 “NoSQL”是在开发人员.架构师甚至技术经理中新流行的一个词汇.尽管这个术语最近很流行,但令人惊讶的是,它并没有一个普遍认可的定义. 通常来说,任何非 RDBMS 且遵循无模式结构的数据库一般都不能完全支持 ACID 事务,并且因高可用性的承诺以及在横向伸缩环境中支持大型数据集而普遍被归类为“NoSQL 数据存储”.鉴于这些共同特征(与传统的 RDBMS 的特征…
一.Berkeley DB的介绍 (1)Berkeley DB是一个嵌入式数据库,它适合于管理海量的.简单的数据.如Google使用其来保存账户信息,Heritrix用其来保存froniter. (2)key/value是Berkeley DB用来管理数据的基础,每个key/value对代表一条记录. (3)Berkeley DB在底层实现采用B树,可以看成能够存储大量数据的HashMap. (4)它是Oracle公司的一个产品,C++版本最新出现,之后JAVA等版本也陆续出现.它不支持SQL语…
Oracle Berkeley DB Java 版是一个开源的.可嵌入的事务存储引擎,是完全用 Java 编写的.它充分利用 Java 环境来简化开发和部署.Oracle Berkeley DB Java 版的架构对于读密集型和写密集型的负载提供非常高的性能和并发性.您可以根据需要选择 Berkeley DB Java 版的 Direct Persistence Layer (DPL).Persistent Collections API 或只存储任意数据的键/值对.如果关系数据库无法满足您的应…
SQLite数据库是中小站点CMS的最佳选择 SQLite 是一个类似Access的轻量级数据库系统,但是更小.更快.容量更大,并发更高.为什么说 SQLite 最适合做 CMS (内容管理系统)呢?并不是说其他数据库不好, Oracle.MySQL.SQLServer 也都是非常优秀的 DBS,只不过他们设计目标不同,特性不同,所以只有更适用某个应用场景,没有绝对的好坏之分. 我归纳的中小型站点的CMS的特点如下: 1.数据量不超过10万 2.日页面访问量不超过10万 3. 一部分网站全部生成…
一个简单的NoSQL内存数据库—Berkeley DB基本操作的例子 最近,由于云计算的发展,数据库技术也从结构式数据库发展到NoSQL数据库,存储模式从结构化的关系存储到现在如火如荼的key/value存储.其中Berkeley DB就是上述过程中的一个比较有代表性的内存数据库产品,数据库的操作是通过程序来实现的,而不是SQL语句.特别是当今数据不断动态增加的过程中,试图 通过数据切割来达到扩充的思路已经行不通了,因为事先不知道客户数据格式,因此服务提供商不可能进行数据切割.而无模式的key/…
上一篇文章写了docker安装RabbitMQ及延迟插件的安装,这篇的话是基于RabbitMQ延迟插件实现延迟队列的示例 那么废话不多说 直接上代码!! 首先创建延迟队列配置类 DelayedQueueConfig import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.Custom…
比Redis更快:Berkeley DB面面观 Redis很火,最近大家用的多.从两年前开始,Memcached转向Redis逐渐成为潮流:而Berkeley DB可能很多朋友还很陌生,首先,我们简单的介绍一下. Berkeley DB介绍 历史悠久.Berkeley DB1991年发行第一版, 2006年被Oracle收购: Berkeley DB是一个嵌入式数据库系统,将其归类到内存数据库范畴没有问题: 使用Key-Value结构存储,本身不支持SQL,5.5版以后整合了SQLite,可使用…
明天回家就没有网络,今晚就将整个编写过程记录下来.顺带整理思路以解决未能解决的问题. 标题有点托大,想将Berkeley DB做成分布式存储,感觉很高端的样子,实际上就是通过ssh将Berkeley DB备份到其他网络地址上,查询的时候向多台电脑发送查询请求并返回结果,仅此而已.现在属于编写阶段,如果效果好会考虑用来做web项目的数据库也不一定. 还是这个图:…
设计一个结构,利用Berkeley DB完成大数据的存储,备份,查询功能. 已有的储备: 1.Berkeley DB的基本操作. 2.数据转存后数据不丢失. 3.过百GB以上数据的存储. 数据流如下,个人称为数据流,具体跟其他术语冲突不在考虑范围.…
最近用BDB写点东西,写了挺多个测试工程.列下表,也理清楚最近的思路 1.测试BDB程序,包括打开增加记录,查询记录,获取所有记录.将数据转存mysql 程序的不足,增加记录仅仅只有key和value,查询记录仅仅是简单的根据key或者同时制定key和value来查,只获取所有记录,没有获取部分记录,转存mysql消耗比较大 2.mysql和BDB插入和选择数据比较. 在java虚拟机内存相同的条件下,mysql插入数据量比较大时会报内存溢出,BDB 插入数据的量可以比mysql大.而且速度也快…
Problem G. Persistent QueueTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=88258#problem/G Description Persistent data structures are designed to allow access and modication of any version of data st…
Berkeley DB是一个嵌入式的数据库,它适合于管理海量的.简单的数据.关键字/数据(key/value)是Berkeley DB用来进行数据管理的基础.每个key/value构成了一条记录,而整个数据库实际上就是由许多这样的结构单元构成的,使用其提供的API访问数据库时,只需要提供关键字就能访问到相应的数据.当然也可以在提供Key和部分Data来查询符合条件的相近数据. Berkeley DB底层实现采用B树,可以看成能够存储大量数据的HashMap.Berkeley DB是通过环境对象E…
import pika connection = pika.BlockingConnection( pika.ConnectionParameters('localhost'))#建立一个最基本的socket chanel = connection.channel()#声明一个管道 chanel.queue_declare(queue='name1',durable=True)#给管道创建一个队列,参数是管道队列名. #持久化队列 chanel.basic_publish(exchange=''…
最近研究内存关系数据库的设计与实现,下面一篇为berkeley db原始两位作为的Berkeley DB设计回忆录: Conway's Law states that a design reflects the structure of the organization that produced it. Stretching that a bit, we might anticipate that a software artifact designed and initially produ…
问题描述: yum 安装更新提示 rpmdb: Thread/process failed: Thread died in Berkeley DB library 问题解决: 01.删除yum临时库文件 rm -fr /var/lib/rpm/__db.* 02.重建rpm数据库 rpm --rebuilddb 03.清理缓存及生产yumdb缓存 yum clean all yum makecache…
使用yum安装出现问题:rpmdb: Thread/process 9180/139855524558592 failed: Thread died in Berkeley DB library 解决办法:  rm -fr /var/lib/rpm/__db.*   删除rpm临时文件  …
Berkeley DB使用SecondKey给数据排序的 实现方法是本文我们主要要介绍的内容,在做项目的时候用到了nosql数据库BDB,借此机会研究了一下它的用法.它的官方示例和文档比较丰富,感觉比较 容易学习.在开发过程中出现了一个需求,要把数据根据插入时间遍历,个人认为通过第二主键(SecondKey)比较容易实现. 以下是我的基本实现过程: 1.在ValueBean中加入insertTime属性 public class ValueBean{ private String insertT…
一.             简介        Berkeley DB Java Edition (JE)是一个完全用JAVA写的,它适合于管理海量的,简单的数据. l         能够高效率的处理1到1百万条记录,制约JE数据库的往往是硬件系统,而不是JE本身. l         多线程支持,JE使用超时的方式来处理线程间的死琐问题. l         Database都采用简单的key/value对应的形式. l         事务支持. l         允许创建二级库.这样…
操作系统:winxp VC环境:VC6.0 必需文件:Berkeley DB安装文件(db-.msi) 下载地址:http://www.oracle.com/technology/software/products/berkeley-db/index.html 步骤: 1.运行db-4.7.25.msi,安装Berkeley DB 2.Build Berkeley DB 1〉用VC6.0 打开工程 (C:\Program Files\Oracle\Berkeley DB \db-4.7.25\b…
Berkeley DB是一个开源的文件数据库,介于关系数据库与内存数据库之间.简称BDB Berkeley DB是嵌入式键值数据库库,为应用程序提供可扩展的高性能数据管理服务. Berkeley DB产品使用简单的函数调用API进行数据访问和管理. 它使用C开发,C#调用是以P/Invoke的形式,不过Oracle发行了C#的版本,里面封装了API的调用,所以我们只需要引用程序集直接调用就行. 更加详细的介绍,请访问Oracle Berkeley DB官网https://www.oracle.c…
明明用rpm查看包存在,但删除的时候进程就停住了.后来出现以下错误:rpmdb: Thread/process 10646/3086534416 failed: Thread died in Berkeley DB library 此时需要清理以下rpm的临时文件 # rm -fr /var/lib/rpm/__db.*…