import java.io.File;
import java.util.concurrent.CountDownLatch;
import com.sleepycat.db.Environment;
import com.sleepycat.db.EnvironmentConfig;
import com.sleepycat.db.LockDetectMode;
import com.sleepycat.dbxml.XmlContainer;
import com.sleepycat.dbxml.XmlContainerConfig;
import com.sleepycat.dbxml.XmlDocument;
import com.sleepycat.dbxml.XmlDocumentConfig;
import com.sleepycat.dbxml.XmlException;
import com.sleepycat.dbxml.XmlManager;
import com.sleepycat.dbxml.XmlManagerConfig;
import com.sleepycat.dbxml.XmlQueryContext;
import com.sleepycat.dbxml.XmlResults;
import com.sleepycat.dbxml.XmlTransaction;
import com.sleepycat.dbxml.XmlUpdateContext;
public class DbxmlThreads extends Thread {
public static XmlManager mgr = null;
public static String containerName = "test.dbxml";
public static Environment dbEnv = null;
private static XmlContainer cont = null;
static {
EnvironmentConfig envConf = new EnvironmentConfig();
envConf.setThreaded(true);
envConf.setAllowCreate(true);
envConf.setTransactional(true);
envConf.setInitializeCache(true);
envConf.setInitializeLocking(true);
envConf.setInitializeLogging(true);
envConf.setCacheSize(64 * 1024 * 1024);
envConf.setLockDetectMode(LockDetectMode.DEFAULT);
XmlManagerConfig xmlMgrConfig = new XmlManagerConfig();
xmlMgrConfig.setAdoptEnvironment(true);
File dbHome = new File(".");
try {
dbEnv = new Environment(dbHome, envConf);
mgr = new XmlManager(dbEnv, xmlMgrConfig);
// 创建XmlContainer
if(mgr.existsContainer(containerName)!=0)
mgr.removeContainer(containerName);
XmlContainerConfig containerConf = new XmlContainerConfig();
containerConf.setTransactional(true);
containerConf.setAllowCreate(true);
containerConf.setContainerType(XmlContainer.NodeContainer);
cont = mgr.openContainer(containerName, containerConf);
cont.setAutoIndexing(false);
} catch (Exception e) {
e.printStackTrace();
}
}
private String name;
private CountDownLatch doneSignal;
DbxmlThreads(String name, CountDownLatch doneSignal) {
this.name = name;
this.doneSignal = doneSignal;
}
public void run() {
XmlTransaction txn = null;
try {
String content = "<"+name+">I am "+name+""+name+">";
for (int i = 0; i < 100; i++) {
XmlDocumentConfig dc = new XmlDocumentConfig();
dc.setGenerateName(true);
System.out.println(name+" insert "+i);
txn = mgr.createTransaction();
XmlDocument doc = mgr.createDocument();
doc.setContent(content);
cont.putDocument(txn, doc, dc);
txn.commit();
}
} catch (XmlException e) {
System.out.println("insert error:" + e.getMessage());
} finally {
doneSignal.countDown();
}
}
public static void main(String[] args) throws Exception {
CountDownLatch doneSignal = new CountDownLatch(5);
DbxmlThreads threadA = new DbxmlThreads("A", doneSignal);
DbxmlThreads threadB = new DbxmlThreads("B", doneSignal);
DbxmlThreads threadC = new DbxmlThreads("C", doneSignal);
DbxmlThreads threadD = new DbxmlThreads("D", doneSignal);
DbxmlThreads threadE = new DbxmlThreads("E", doneSignal);
threadA.start();
threadB.start();
threadC.start();
threadD.start();
threadE.start();
doneSignal.await();
XmlQueryContext qc = mgr.createQueryContext();
String query = "collection('"+containerName+"')/A";
XmlResults res = mgr.query(query, qc);
System.out.println("The results size is: "+res.size());
res.delete();
cont.close();
mgr.close();
}
}
首先祝各位访客新年快乐,虎年富贵吉祥!
Oracle Berkeley DB在LinkedIn.com上的新建了一个群,供全球的相关人士(包括工程师、产品经理、客户等)共同讨论Berkeley DB的话题和业界动态。群地址:http://www.linkedin.com/groups?gid=2131985. 欢迎加入!
Oracle Berkeley DB 中国研发团队
众所周知,Berkeley DB是开源的,个人用户可以下载做学习、试用。但实际上,Berkeley DB是Oracle的一个产品,也是要收费的。
英文好的同学,可以读一下我们的授权申明:http://www.oracle.com/technology/software/products/berkeley-db/htdocs/licensing.html。
英文不好的同学,我在此可以稍作解释(强调:我的观点仅作参考,Oracle公司拥有最终解释权):
1. Berkeley DB产品家族三大产品(BDB,BDB-JE和BDB-XML)都是采取双license的授权模式,即开源(免费使用)和商用(付费使用)两种模式。
2. 衡量两种授权模式的一个主要区别是 – “redistribute”,意即你是否将自己的应用程序(在你的应用中使用了BDB)发布给第三方,如客户,机构,附属机构,母公司,合作者,中间商,第三方的非营利组织等。
3. 举例子来说:
- 如果是个人用户做学习研究之用,可以选择开源授权,免费;
- 如果是个人用户在BDB上做一些应用,如果你的应用是开源发布的,可以选择开源授权(但要符合BSD、GPL等开源条款);如果是闭源,需要选择商业授权;
- 如果是在公司的商用项目使用,需要选择商业授权,即付费;
如果大家再有问题,或者不确定,欢迎留言。版权保护,也是保护到每个IT从业人员。
—
附件: Oracle官方网站给出TimesTen和Berkeley DB 产品家族在美国市场参考价格(见下图)。

Berkeley DB 价格清单
关于Oracle产品的价格清单,请浏览官方网址: http://www.oracle.com/corporate/pricing/pricelists.html.
注意: 价格仅作参考,Oracle公司拥有最终解释权。
2010财年甲骨文(中国)校园招聘大致流程:
校园宣讲 -> 在线申请 -> 在线测试(涵盖:技术、性格、英文等)-> 初步筛选 -> 邀请合格同学on-site 笔试和面试 -> 进一步筛选 -> 发offer
校园宣讲会初步日程(注意:日期及时间请以51job和校园广告为准):
- Oct. 19th Shanghai Tongji Univ. (19:00-21:00)
- Oct. 20th Shenzhen HIT Graduate School (19:00-21:00)
- Oct. 21th Guangzhou Southern China Univ. of Tech. (15:00-17:00)
- Oct. 26th Beijing Tsinghua Univ. (19:00-21:00)
- Oct. 27th Wuhan Huazhong Univ. of Science and Tech. (19:00-21:00)
- Oct. 30th Hangzhou Zhejing Univ. (19:00-21:00)
- Nov. 2nd Suzhou Suzhou Univ. (14:00-16:00)
- Nov. 4th Nanjing Southest Univ.(19:00-21:00)
- Nov. 5th Dalian Dalian Univ. of Tech. (19:00-21:00)
更新!!原计划于Nov. 6th的在线测试,因后台录入部分同学的纸质简历而推迟。新的时间安排:HR给的反馈是定在本周(Nov. 9th这周末或者周末以前),请大家留意Email通知并谅解。
注: BDB的招聘行程(此项会持续更新,期待届时与你见面交流):
- Chao Huang – 校园宣讲,Oct. 19th Shanghai Tongji Univ. (19:00-21:00)
- Eric Wang – 校园宣讲,Oct. 20th Shenzhen HIT Graduate School (19:00-21:00)
今年Oracle会组织在多个城市进行面试,BDB初步决定参加下面4个。各位面试同学的时间地点请以电话通知为准。
- Eric Wang – 面试官,Nov. 17-18,深圳
- Linchun Sun – 面试官,Nov. 19-20,广州
- Chao Huang – 面试官,Nov. 25-27,北京
- Chao Huang – 面试官,Nov. 24-25,上海
近十年来,XML应用越发广泛,政府也推出了《基于XML的电子公文格式规范》等标准。那么,在需要XML数据库引擎的情况下,采用原生XML数据库Berkeley DB XML(以下简称BDB XML)取代MySQL(或其它传统DB)做后台数据库是一个更好的选择。
BDB XML是Oracle推出的一款开源原生XML数据库。与传统数据库相比,原生XML数据库的优势有:
1. 可以直接操作XML文件,XML数据无损–在某些场合,无损的数据源意味着法律效力。
2. 原生检索方式,支持XQuery和XPath,符合XML习惯。
3. 性能优化:原生XML数据库会针对XML特点进行各种优化,如插入文档索引、建立节点ID等。
4. 支持相同数据的不同视图。
和其它原生XML数据库相比,BDB XML优势有:
1. 完整的ACID 事务处理、自动恢复、热备份、用于分布式事务的HA支持。
2. 支持XQuery(含XQuery Update)和XPATH。
3. 可以利用其特有的二进制元数据存取大容量二进制对象(非XML数据)。
4. 支持全Unicode字符集,中文存储、查询都不成问题。
5. 提供一套容器和迭代器接口访问和操作查询结果。
6. 提供交互式命令行工具。
阅读全文…
重要:关于招聘的最新信息,请看:Oracle 2010 校招日程
各位2010届的毕业生同学,你们好!
你喜欢编程,擅长算法吗?你有志于开发数据库内核吗?欢迎你申请加入Berkeley DB全球研发团队。
关于我们及职位要求(见下图):

职位要求
阅读全文…
大家好!
BDB小礼物 – 若干2GB U盘(带Oracle Logo)
最近留意到我们BDB中国社区算是小有人气了,我们开发人员也十分开心。在此也感谢大家的支持。
我很努力争取到了一些U盘,用来奖励有兴趣为BDB做点事情的朋友。礼物虽不贵重,但希望大家理解,实是我们的一片心意。由于数量有限,先到先得吧。
重在人人参与
BDB的3个产品都是开源的,大家可以下载并研究源代码。有心的开发者,也可以把你自己写的示例程序、文章、使用心得、创意等发给我(chao.huang at oracle dot com)。每个入围的朋友都可以收到我们寄出的小奖品,并且获奖者会在bdbchina blog上公布。
我们鼓励每个人的参与,和大家分享你的才智,共同进步。同时,也期待能出现眼前一亮的创意(idea),实现自己的事业成功。比如,由于BDB的非关系型数据库的特性,它很适合于用作基因测序等方面数据(基因节点,序列图等)的管理、在医疗监控仪器(大型仪器,小型的传感器等)等应用,等等。
2009年9月14日,Berkeley DB Xml 发布了最新的2.5版本 (包含最新发布的Berkeley DB 4.8版本),此版本增加了新功能,并对上一个版本的所有bug进行了修复,是一个更快更加稳定的版本,推荐大家升级。下载地址在:http://www.oracle.com/technology/software/products/berkeley-db/index.html。 Berkeley DB Xml 2.5 新特性主要有一下几个方面:
1. 自建索引
2. 在wholeDocument存储模式下的压缩存储
3. Debugging API 和 debug 命令
4. 用户自定义XQuery external 函数
5. XmlResults 增强
6. 更高效的节点存储模式
阅读全文…
大家好,
在今年上半年,我们国家推出了一项7,000亿人民币的医疗改革方案,针对我们IT业界可谓影响很大。近期,我也关注到国内从事生命科学、医疗卫生等方向的一些IT的大动作。我想,在此从嵌入式应用的方向,和大家分享我的一些体会和心得。
- 生命科学中应用
我们的观察:
- 发现一味新药通常历时8-12年,涉及到庞大的数据量(来自美国辉瑞的反馈:1,000,000种配比; 若干TB的数据量,1 TB约合2,000张CD光盘信息)
- 新药研究可以是跨多个组织的合作行为,彼此共享数据 – 全球各地的临床研究机构,风险合资公司等
- 监管机构要求对数据严格管理和控制
- 数据安全,访问控制,审计,保存,审批,变更,搜索,来自相关规定和标准作业程序的要求
- 需要经济且可靠的数据管理方式,贯穿于每一个步骤和阶段
- 需要简单易用的,自适应的软件;倾向于“本地化”数据管理方案
- 个性化功能实现也需要基于一套高可靠的数据管理软件之上
- 很多的分析仪器和不同分析技术不间断地产生数据
- 仪器产生的数据直接写到文件系统,从而容易产生错误和数据丢失
- 没有标准化的数据格式:每台仪器连着一台独立的计算机
- 搜索分散于这些独立仪器中的数据几乎是不可能的
- 越来越多的实验室笔记的电子化
阅读全文…
1. 简介
Berkeley DB Xml Shell(以下简称DbXml Shell)是包含在发行包里的工具,可运行于UNIX家族平台(Linux, Solaris, HP-UX, Mac OS, Cygwin, AIX, FreeBSD…)和Windows平台上。DbXml Shell包含Berkeley DB XML的绝大多数常用功能,可以让我们在不编写一行代码的情况下,通过指令快速完成多种常用操作如创建/删除容器、插入/删除文档、查询、验证Query Plan等等,实为居家旅行必备佳品。要是在周五下午遭受紧急任务袭击,就更得靠它来拯救周末了。有时为了解决开发中遇到的问题,只要写一个非常简短的DbXml Shell脚本就可以实现预期功能或是重现环境,极大地提高了劳动生产率。
阅读全文…
最近评论