Berkeley DB Java

URL队列(爬虫队列)-Berkeley DB的使用示例(Java) 网络爬虫中URL队列即爬虫队列是较为关键的数据结构,对于数据量要求不大的爬虫,我们可以简单的使用Java类库中的内存数据结构,例如链表或者队列来实现URL队列,但是当我们面对数以亿计的链接时,内存数据结构就会因内存的持续增长显得力不从心,这时就需要用到内存数据库-Berkeley DB,它能够存储海量数据,当数据超出内存限制时,能够把它固化在硬盘上,而且存取速度也非常快并且支持多线程访问。Berke 阅读详情

Berkeley DB Java版简介

起源

加州大学伯克利分校的BSD 4.3及以前的所有版本包含了专属于AT&T Unix代码,而当时从AT&T获得源码许可证是非常地昂贵。为了不受许可证的支配,当时BSD的开发者Keith Bostic提议,BSD系统中应该有更多的非AT&T部分,以Net/1的协议发布。随后,在1991年,Keith Bostic和Margo Seltzer 以及 Mike Olson一起着手开发了Berkeley DB以替换当时的Unix下经典的数据库引擎ndbm(New Database Manager, http://en.wikipedia.org/wiki/Ndbm)。这之后Berkeley DB迅速流行起来,并促成了Sleepycat Software公司(在2006年2月时,Sleepycat Software被甲骨文收购)。 时间进入到2004年,随着Java语言的大行其道以及其对多线程机制的良好支持,Berkeley DB的开发者们为Java开源社区带来一味大餐,这便是今天的Oracle Berkeley DB Java版(下文简称为 JE)。

JE 介绍

关系数据库是开发人员可用来进行数据存储和分析的最复杂的工具之一。大多数持久化的对象数据并非为特定的SQL的查询分析而存在;它们通常在程序中被检索,然后重构成为具体Java 对象才能使用。我想这就是现在一些主流Java企业应用中用到的Object-Relational Mapping(ORM)的技术。但从Java面向对象编程的角度看,能否直接将要持久化的对象通过诸如IO serialization 的办法直接保存到文件上,并能享有关系数据库系统提供的事务,并发,和高效的好处呢? 设想一下,去掉了SQL解析和优化的开销,抛开了JDBC以及数据在客户端/服务器通信的巨大开销,应用的速度提升将会有多少?
JE正是居于这一设计思想而孕育出来的,是完全用 Java 设计,运行在应用程序的地址空间中,没有客户端/服务器通信的开销,从而使开发人员能够快速、简单、可靠地存储和检索信息。

主要特性

1. 轻松快速地数据存储
Berkeley DB Java 版可以轻松快速地存储数据,而不会导致像其他数据库中那么多的开销。Berkeley DB Java 版是与您的应用程序运行在同一 JVM 中的单个 JAR 文件,因此不需要远程服务器。本地缓存在内存中保存最活跃的数据以避免了开销较大的磁盘访问,并将 JVM 内存的使用限制到一个可预测的数量。

* 本地、进程间数据存储
* 与模式无关的、应用程序本机数据存储
* 按关键字访问的数据检索和顺据数据检索
* 易于使用的 Java 集合 API
* 用于访问 Java 对象的直接持久层 (DPL)
* DPL 类的模式进化
* 单进程、多线程模型
* 用于高并发性的记录级锁定
* 对辅助索引的支持
* 内存中和/或磁盘上
* 可配置的后台清理器线程重新组织数据并优化磁盘使用

2. 可靠地事务处理能力
Berkeley DB Java 版可靠地存储数据并确保数据完整性。如果系统发生故障,Berkeley DB Java 版将恢复事务数据并根据日志和数据库信息将系统重置为可运行的、一致的状态。

* 完全符合 ACID
* 可选择的隔离级别和持久性保证,可在每事务基础上进行配置
* 使用 Java 事务 API (JTA) 托管的事务
* 使用 J2EE 连接器体系结构 (JCA) 进行 J2EE 应用服务器集成
* 使用 Java 管理扩展 (JMX) 进行审计、监视和管理
* 灾难和例程故障恢复模式
* 基于超时的死锁检测
* 冷热备份、日志文件压缩和完整的数据库转储

3. 易于部署
Berkeley DB Java 版是高度可移植的、非常灵活且易于集成。它从一开始就被设计为一个充分利用 Java 环境的纯 Java 产品。作为单个 Java 存档 (JAR) 文件,它在运行您应用程序的 JVM 中运行。Berkeley DB Java 版旨在通过企业级、纯 Java 的数据存储解决方案为不断增长的大型 Java 社区提供服务。

* 100% 的纯 Java,便于移植且易于开发
* 单个 JAR 文件 – 易于安装,与应用程序运行在相同的 JVM 上
* 需要 Java 1.4.2 或更高的标准版 JVM
* 编程管理
* 无需人为管理
* 针对例行管理功能的 API
* 体积小 820KB
* 可扩展到数以 TB 计的数据,数百万条记录
* 包含源代码、测试套件

性能比较:JE vs Derby

正如一份关于JE和Derby的性能比较的Oracle白皮书(http://www.oracle.com/technology/products/berkeley-db/pdf/je-derby-performance.pdf)展示的那样: 在相同的硬件平台,JE只使用了相当于Derby一半的内存却达到了近乎于数量级的性能提升!

尾记

Oracle Berkeley DB Java 版的体系结构对于读密集型和写密集型的工作负载支持非常高的性能和并发性。有鉴于其良好的伸缩性,和易于部署性,JE成功应用到上至全球型的电子商务网站,下至终端设备。同时,由于其开源和双重licence特性,对于广大Java爱好者和数据库工程人员而言也是不可多得的参考宝典。

Berkeley DB Java Edition oracle 官方实现的 基于B+树 文件磁盘 数据存储 的文件数据库。 立即下载

相关推荐

VTK vtkLookupTable vtkScalarBarActor 颜色条

有时需要给数据做一个 vtkScalarBarActor, 我们把显示的数据的一个 坐标系 来显示 颜色条1.以 Z 显示颜色 效果如下。

q610098308的专栏 4033

berkeley db java_Oracle Berkeley DB Java 版

Oracle Berkeley DB Java 版Oracle Berkeley DB Java 版是一个开源的、可嵌入的事务存储引擎,是完全用 Java 编写的。它充分利用 Java 环境来简化开发和部署。Oracle Berkeley DB Java 版的架构对于读密集型和写密集型的负载提供非常高的性能和并发性。您可以根据需要选择 Berkeley DB Java 版的 Direct Per...

weixin_36086032的博客 283

Web自动化神操作:如何用OpenCV 破解滑块验证码?

验证码作为一种安全机制,可以有效防止暴力破解密码、发帖、灌水、刷票等,大家在做 Web 自动化的时候应该有碰到验证码这个难题,一般我们可以和开发沟通请求他们的帮助:去掉验证码或者设置一个万能验证码,而如果开发不帮忙我们该如何去解决呢? 本篇文章以 Java 语言为例教你怎么破解验证码。 现在大多数网址会采用滑块验证码的方式,下面以腾讯的滑块验证码为例,先来看看破解的效果: 要破解滑块验证码,我们一般采取的思路如下: 获取滑块到背景缺口图的距离 通过 selenium 的 Actio

不喝枸杞的程序员 2034

BerkeleyDB数据库的简介和工具类的JAVA实现

        berkeleydb是一款古老而功能强大嵌入式数据库(伴随代码运行存在),数据插入和查询效率极高,内外存相结合的 kv 数据库、文件型数据库。内存意味着效率极高,外存意味着可持久化。早期MySQL的元数据就使用berkeleyDB存储。BDB跨语言支持l良好,且轻量级可拓展,是不错的非关系型数据库选择,适合构建查询引擎。        当然他也有缺点:无网络通信模块,数据共享不方便...

如果能思维清晰,从上往下,不断深入,就好了~~~ 1136

Windows Server远程桌面断开后,PyWinAuto/按键精灵脚本失效?试试这个‘会话保持’的终极配置

本文深入解析Windows Server远程桌面断开后导致PyWinAuto/按键精灵脚本失效的问题,提供会话保持的终极配置方案。通过转换到控制台会话(console模式)和调整组策略,确保自动化程序在断开连接后持续稳定运行,适用于Windows Server各版本。

weixin_28738165的博客 227

Python 高级语法:闭包

闭包(Closure)是函数式编程中的一个重要概念。在Python中,闭包可以简单理解为:一种特殊的函数。外函数:嵌套函数中最外层的函数称之为外函数。内函数:嵌套函数中最内层的函数称之为内函数;内函数引用了外函数的临时变量;外函数的返回使用了临时变量的内函数。

moment159的博客 2353

BDB 入门篇 第1章 Berkeley DB Java Edition简介

目录 1. Introduction to Berkeley DB Java Edition 1.1 Features(特点) 1.1.1 DPL Features (DPL 特点) 1.1.2 Base API Features (底层API特点) 1.1.3 Which API Should You Use? (你应该使用那种API?) 1.2 The JE...

极客星云-优快云博客 4385

Hadoop实战:用MapReduce分析YouTube视频数据集(附完整代码)

本文提供了一个完整的Hadoop MapReduce实战教程,指导读者使用MapReduce框架分析YouTube视频数据集,统计不同视频类别的数量分布。教程涵盖从数据获取、预处理、HDFS操作到Java代码编写、作业提交及结果可视化的全流程,并附有完整代码,帮助开发者深入理解分布式计算思想。

lilh34434的博客 198

Berkeley DB JE版

JE是一个100%用Java编写的通用事务保护嵌入式数据库(JE不提供JNI调用)。因此,它为Java开发人员提供了对任意数据进行安全高效的进程内存储和管理。您可以通过一系列的Java API来使用JE,这些API能够读写数据,管理你的数据库,而且可以执行一些更高级的活动,如管理事务。和JE进行交互的Java API有两种基本形式。第一个是高层次的API,可让您的Java类的持久性。第二个是一个低级别的API,它提供了额外的灵活性与JE数据库。给大家推荐一个能够直接运行起来的博客。

jinyuttt的专栏 445

STM32F407单一定时器输出4路不同频率及占空比的PWM波

STM32F407单一定时器输出4路不同频率及占空比的PWM波

qq_43868701的博客 4916

LTspice仿真实战:共模电感差模/共模插入损耗测试全流程(附WE 744821201参数)

本文以Würth Elektronik 744821201型号共模电感为例,详细介绍了在LTspice中搭建差模与共模插入损耗测试电路的全流程。通过从规格书提取关键参数、构建SPICE模型,到执行仿真并与官方数据对比,旨在帮助硬件工程师在PCB设计前期精准预测EMC性能,弥合器件选型与系统设计之间的鸿沟。

info6的博客 758

berkeley db java_BerkeleyDB的Java版本的使用

序BerkeleyDB在爬虫、搜索领域里头用的比较多,整体来讲的特点是嵌入式、kv数据库,功能强大,能支持几百T的存储。本文主要讲述怎么在java里头使用它。添加依赖com.sleepycatje6.4.9如果是5以上的版本,则需要添加oracle的仓库oracleReleasesOracle Released Java Packageshttp://download.oracle.com/mav...

weixin_30951271的博客 441

【 Git学习记录(三)】推荐四款主流的Git代码托管平台 —— GitHub、GitLab、Gitee、Coding

了解过Git之后,作为一个程序猿最基本的,你还需要了解目前主流的在线代码托管平台,并至少选择其中一款在平时开发中使用。这里特别介绍以下四款: 国外平台 GitHub —— 全球最流行的代码托管平台 GitLab —— 基于git的仓库管理程序 国内平台 Gitee —— 开源中国旗下的代码托管平台 Coding —— 支持社交元素的代码托管平台 一. GitHub 链接地址:https://github.com/ GitHub目前是全球最流行的代码托管平台(别称:全球最大的同性交友.

JZevin的博客 6090

berkeley db java sql,Berkeley DB 数据库的使用示例,je

import java.io.File;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import com.sleepycat.je.Cursor;import com.sleepycat.je.CursorConfig;import com.sleepycat.je.Database;import c...

weixin_42510835的博客 310

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Berkeley DB for Java

一、关于JE 设计思想:      直接将要持久化的对象通过诸如IO serialization 的办法直接保存到文件上,并能享有关系数据库系统提供的事务,并发,和高效的好处。JE正是居于这一设计思想而孕育出来的,是完全用 Java 设计,运行在应用程序的地址空间中,没有客户端/服务器通信的开销,从而使开发人员能够快速、简单、可靠地存储和检索信息。 Berkeley DB Jav

Jerry's Home 1273

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Oracle Berkeley DB Java 版

Oracle Berkeley DB Java 版是一个开源的、可嵌入的事务存储引擎,是完全用 Java 编写的。它充分利用 Java 环境来简化开发和部署。Oracle Berkeley DB Java 版的架构对于读密集型和写密集型的负载提供非常高的性能和并发性。您可以根据需要选择 Berkeley DB Java 版的 Direct Persistence Layer (DPL)、Persi

成长是一个持续的过程 1885

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

java 开源 内存数据库_Berkeley DB 开源的文件数据库

开源的文件数据库,介于关系数据库和内存数据库之间,按键值对方式存储下面是一个实例,是网上抄的,然后自己本机运行的package org;import java.io.File;import java.io.UnsupportedEncodingException;import java.util.concurrent.TimeUnit;import com.sleepycat.je.Databas...

weixin_39964833的博客 481

berkeley db java edition 源码,Berkeley DB JAVA Edition 的使用有关问题

Berkeley DB JAVA Edition 的使用问题最近在研究网络爬虫,需要用到BerkeleyDBJAvaEdition,学习了一下,照着写了一份代码,如下:packagetest;importjava.io.File;importcom.sleepycat.je.Database;importcom.sleepycat.je.DatabaseConfig;importc...

weixin_34379040的博客 202

Berkeley DB Java Edition使用说明

    头一次看英文文档,翻译的不是十分准确,而且还有错误,还请大家多多谅解。一、             简介       Berkeley DB Java Edition (JE)是一个完全用JAVA写的,它适合于管理海量的,简单的数据。l         能够高效率的处理1到1百万条记录,制约JE数据库的往往是硬件系统,而不是JE本身。l         多线程支持,JE使用

zzjjzzgggg的专栏 909

java berkeley db 教程_Berkeley DB Java Edition使用说明

一、 简介Berkeley DB Java Edition (JE)是一个完全用JAVA写的,它适合于管理海量的,简单的数据。l能够高效率的处理1到1百万条记录,制约JE数据库的往往是硬件系统,而不是JE本身。l多线程支持,JE使用超时的方式来处理线程间的死琐问题。l Database都采用简单的key/value对应的形式。l事务支持。l 允许创建二级库。这样我们就可以方便的使用一级key,二级...

weixin_39927861的博客 644

Berkeley DB Java Edition Research

转载地址:http://blog.youkuaiyun.com/baijsp/article/details/120886 一、Berkeley DB Java Edition简介 Berkeley DB JE is a general-purpose, transactionally protected, embedded database written in 100% Java (JE

轩辕剑仙のBLOG 647

berkeley db java 教程_Berkeley DB Java Edition 基本示例

envMutableConfig = new EnvironmentMutableConfig();envMutableConfig.setCachePercent(50);//设置je的cache占用jvm 内存的百分比。//envMutableConfig.setCacheSize(123456);//设定缓存的大小为123456BytesenvMutableConfig.setTxnNoSy...

weixin_31261145的博客 474

[转]Berkeley DB Java Edition基本示例

package test; import com.sleepycat.je.*; import com.sleepycat.bind.EntryBinding; import com.sleepycat.bind.tuple.TupleBinding; import com.sleepycat.bind.serial.StoredClassCatalog; import com.sle...

kim 212

berkeley db java 教程,java Berkeley DB数据库操作,berkeleydb,Berkeley DB

java Berkeley DB数据库操作,berkeleydb,Berkeley DBBerkeley DB Java Edition数据库操作[Java]代码package cn.outofmemory.demos.bdb;import java.io.File;import com.sleepycat.je.Cursor;import com.sleepycat.je.Database;im...

weixin_39967096的博客 266

Berkeley DB Java Edition 基本示例

package test; import com.sleepycat.je.*; import com.sleepycat.bind.EntryBinding; import com.sleepycat.bind.tuple.TupleBinding; import com.sleepycat.bind.serial.StoredClassCatalog; import com.slee

WHATIFSO 722
下一篇: Ubuntu 12.04开机默认进入命令行模式.
heipacker
博客等级 码龄17年 9粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值