BerkeleyDB简介

华为交换机链路聚合对接思科交换机链路聚合故障 2台华为交换机采用堆叠方式与思科交换机之间使用链路聚合,华为交换机与cisco交换机链路捆绑接口频繁UP/DOWN,业务中断。 阅读详情

与常用的关系数据库相比,BerkeleyDB更像是一种内存数据库,可嵌入到系统应用程序,手机甚至是路由器中。由于大部分操作在缓存中进行,因此访问速度非常高效。

BerkeleyDB JE是由纯Java语言编写的,数据主要缓存在JVM当中。BerkeleyDB JE对开发人员提供了两套API操作:分别是DPL API和Base API,通常在Schema结构不经常变动的情况下,推荐使用DPL API。通过DPL API可直接将Java对象进行持久存储(前提:该Java对象有默认的构造函数),检索效率相对较快。

DPL的英文全称为Direct Persistence Layer,与Hibernate的ORM功能相比,两者都是以操作对象的方式来操纵底层数据。所不同的是,Hibenrate的ORM是完成了Java实体到库表结构的映射,在执行CURD操作时,需要先由对象实体构造出sql语句,在通过sql语句去操纵数据库;而DPL是直接将java实体对象进行存储,因此在执行操作时,没有中间的映射转换过程,从而便加快了数据的访问和执行速度。

DPL对存储实体的描述是通过Annotation来实现的,它提供了以下几个标签用来对实体类进行说明描述:

@Entity
该标签放在class声明上,表示该类是可持久存储的,并且还可通过预定义的键值信息(primaryKey,SecondaryKey)进行检索。
@Persistence
该标签放在class声明上,表示该类可持久存储,但是不能用于检索。此种类型的实体类主要充当Entity Class的辅助类,供Entity Class进行调用、反问。
@PrimaryKey
该表签只能在Entity类中声明(不能声明在Persistence类中),相当于关系数据库中的主键。每个Entity类只能定义一个PrimaryKey。
@SecondaryKey
同样该标签也只能在Entity类中进行声明。但不同于PrimaryKey,Entity类可以声明多个SecondaryKey,用来表示该实体类的外键信息。

一个简单的实体类声明如下:

@Entity
public class Book {
	@PrimaryKey(sequence="SEQ_Book")//通过指定sequence可自动生成主键值
 	private long id;
	//多对一关联,关联的实体为Library,级联删除模式为cascade,即当Library被删除时同时删除Book信息
 	@SecondaryKey(relate = MANY_TO_ONE,relatedEntity=Library.class,onRelatedEntityDelete=CASCADE)
	private Long library;
	//多对多关联,关联的实体为Author,级联删除模式为NULLIFY,即当Author被删除时,Book的author属性指定为null
 	@SecondaryKey(relate = MANY_TO_MANY,relatedEntity=Author.class,onRelatedEntityDelete=NULLIFY)
	private Set<Long> authors=new HashSet<Long>();
 	public long getId(){
 		return id;
 	}
 	public void setId(long value){
 		this.id=value;
 	}
 	public Long getLibrary(){
 		return library;
 	}
 	public void setLibrary(Long value){
 		this.library=value;
 	}
 	public Set<Long> getAuthors(){
 		return authors;
 	}
 	public void setAuthors(Set<Long> value){
 		this.authors=value;
 	}
}

使用BerkeleyDB,首先需要构造它的数据库环境,可通过如下API操作完成。
EnvironmentConfig envConf=new EnvironmentConfig();
Environment env=new Environment(new File("envHome"),envConf);
EnvironmentConfig提供了很多set方法用来配置数据库的功能特性,如:
setAllowCreate():当envHome不存在的时候,是否自动创建
setTransactional():是否启用事务管理功能
setCacheSize():设置缓存大小
setReadOnly():以只读方式打开数据库

DPL对存储实体的访问主要是通过EntityStore来完成的,该对象可基于Enviroment来构建。
StoreConfig storeConf=new StoreConfig();//首先构造StoreConfig对象
storeConf.setAllowCreate(true);//当存储路径不存在时,是否自动创建
EntityStore store=new EntityStore(env,"EntityStore",storeConf);
有了EntityStore对象之后,便可通过它对底层的数据进行检索(只有在实体类的属性被声明成@PrimaryKey或@SecondaryKey的情况下,才可通过该属性对实体类进行检索)


批量导入经纬度点到奥维地图中 随便说说 最近出来出差,天天东奔西跑的,跑完了回到酒店还得整理一天的成果,基本上晚上9点才能整理完,累的基本上倒头就睡,没时间鼓捣自己喜欢的东西了。但想着也得写点啥吧,想来想去就那最近工作中用到的东西吧。因为我们现在的工作内容呢,基本上就是按照着上面给的地理位置找到地方开始检查。所以呢,就需要批量的把手上的经纬点信息导入到地图中,安排好路线,利用导航高效的找到地方。给的坐标就是gps点,wgs-84的,使用奥维地图最方便了,不用做坐标转换直接能用。所以作为组里的gis担(苦)当(力),这个导坐标的活就由我来 阅读详情

相关推荐

Solidworks钣金设计:折弯系数、K因子与折弯扣除的实战应用解析

本文深入解析Solidworks钣金设计中折弯系数、K因子与折弯扣除的核心概念与实战应用。通过厘清三者间的逻辑关系与换算方法,并结合材料特性、工艺参数及车间实测,指导工程师精准确定展开长度,确保设计图纸与加工实物的一致性,有效提升钣金件设计精度与生产效率。

weixin_29268267的博客 925

SRA数据下载的一个坑

SRA数据真坑啊!

xuzhougeng blog 3509

SQLite 和 Berkeley DB 的比较

   一、内存数据库:FastDB、BerkeleyDB、SQLite   内存数据库, 顾名思义就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。 最近要做一个项目,需要用到实时数据库,PI太贵了,想找一个免费的,实在不行就只能自己编了。找了半天,找到了FastDB、BerkeleyDB和SQLite...

pjl1119的专栏 1万+

BRep实战指南:从理论到文件格式的全面解析

本文全面解析BRep(边界表示法)从基础概念到文件格式的实战应用。详细介绍了BRep的数学定义、工业应用场景,以及STEP、IGES等主流文件格式的对比与使用技巧,帮助读者掌握三维建模核心技术并优化性能。

weixin_29235923的博客 410

LabVIEW调用.so文件的方法

LabVIEW调用.so文件的方法

m0_37878912的博客 3025

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

SAP RAP 里的 EML 全解:从语言定位到事务语义,再到真实案例的落地方式

摘要:EML(Entity Manipulation Language)是ABAP RAP模型的核心组件,作为ABAP的子集用于操作业务对象(BO)。它通过声明式语法(READ/MODIFY/EXECUTE/COMMIT)统一访问BO的行为与数据,并由RAP运行时自动处理校验、锁定、草稿管理等生命周期。EML将业务语义融入代码,确保与Fiori应用共享同一套校验逻辑,并通过FAILED/REPORTED/MAPPED管道传递错误与消息。其事务控制(IN LOCAL MODE与COMMIT ENTITIES)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 528

[转]Berkeley DB介绍及主从复制机制

Berkeley DB(BDB)是一个高性能的嵌入式数据库编程库(引擎),它可以用来保存任意类型的键/值对 (Key/Value Pair),而且可以为一个键保存多个数据。Berkeley DB可以支持数千的并发线程同时操作数据库,支持最大256TB的数据。

heiyeluren的blog(黑夜路人的开源世界) 6818

训练YOLOv11 | Pytorch和Pycharm的安装教程适用W11系统(附详细的系统变量添加过程)

根据你之前下载的版本选择对应的选项即可,然后复制底下的绿色代码到Anaconda的命令行输入即可(这里要在你安装的python环境里进行安装,例如我的环境名字是PyTorch,那么就是activate PyTorch里进行安装)然后同之前一样会加载一会,然后会询问我们是否下载配件,我们输入Y等待即可(下载过程中我们要确保网络通常如果有波动可能会下载失败)。类似于我的电脑是Windows11选择上面红框内的选项即可点击后即下载,(注意这里下载的是zip文件)下载完成后复制下面几个文件。

Snu77的博客 1万+

fast-lio系列改进版本

2.回环检测的优化结果,更新到FAST-LIO2的当前帧位姿中,幷进行ikdtree的重构,进而更新submap。其它的效果还不清楚,实测lio部分稳定性很好。用fast-lio_slam就很稳定。融合了fast-lio2和sc-pgo,两部分分开运行,SC-PGO从FAST-LIO2节点获取里程计和激光雷达点云主题。的作者kim在FAST-LIO2的基础上,添加SC-PGO模块,通过加入ScanContext全局描述子,进行回环修正,SC-PGO模块与FAST-LIO2解耦,非常方便,很优秀的工作。

z1872385的博客 3189

BerkeleyDB的使用

class Queue(object): """docstring for Bqueue""" def __init__(self,dbFile): #创建DB home = C["DB_PATH"] self.dbFile = home + os.sep + dbFile self.lock = threading.Lock() self.dbenv=bsddb.db.D

SteveRocket's-Blog 991

华为OD机考双机位C卷 - 虚拟理财游戏(Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 虚拟理财游戏(OD上机考试双机位C卷)。提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。

算法大师! 668

BerkeleyDB-JE 简介

Berkeley DB Java Edition(JE)是一个使用纯java编写的通用的,支持事务的,嵌入式的数据库。它让java开发人员可以安全而有效的在进程中存储和管理任意的数据。 JE提供了两种API供开发人员选择开和数据库交互。 [list] [*]直接持久层(DPL),有点类似于Hibernate或JPA一样的ORM技术,通过DPL你可以很方便持久化任何类型的数据。 [*]基本A...

iteye_19622的博客 406

老版QQ原生表情gif动态

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

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C#使用BerkeleyDB操作简介

Berkeley DB是历史悠久的嵌入式数据库系统,主要应用在UNIX/LINUX操作系统上。Berkeley DB的存储的是key/value键值对,可以理解为硬盘上的超级hash表。其可以管理256TB数据,而且能支撑几千个并发访问。目前Berkeley DB有C++版和Java版。所以,我们需要一个访问的中间转换,已经有人发布了C#的API。可以从 Berkeley DB for .NET ...

weixin_34130269的博客 294

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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

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

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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Berkeley DB程序员参考指南--序言

Preface   Welcome to Berkeley DB (DB). Thisdocument provides an introduction and usage notes for skilled programmers whowish to use the B

A Beautiful Draeam, A Beautiful Future 1258

BerkeleyDB概述

<!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"

zgqtxwd的专栏 825

BerkeleyDB java的简单使用

BerkeleyDB java的简单使用 关于BerkeleyDB的有点和优点,列在以下 JE offers the following major features: Large database support. JE databases efficiently scale from one to million...

weixin_30639719的博客 87

Berkeley DB使用简介

Berkeley DB使用简介 1来源: 作者: 时间:2007-12-02 Tag: 点击: 587 1        简介BDB的全称Berkeley DB,是一套开放源码的嵌入式数据库的程序库。它为应用程序提供可伸缩的、高性能的、有事务保护功能的数据管理服务。Berkeley DB为数据的存取和管理提供了一组简洁的函数调用API接口。BDB为多种编程语言提供了API接口,其中包括C、

xiaonamylove的专栏 3274
上一篇: simple-spring-memcached简介
下一篇: 淘宝TFS使用
JavaMan_chen
博客等级 码龄19年 329粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值