存档

2009年1月7日 的存档

Berkeley DB的动态散列技术

2009年1月7日 davidzhao 2 条评论

这篇文章最早发布在我的百度博客上的( http://hi.baidu.com/dazhao%5Fdbblog ),现在把它贴过来。

一个Berkeley DB数据库(也就是关系数据库中的一个表)存储的数据是key/data pair(键/值)对的集合,这些key/data pairs原本可以是任何结构、模式和意义的数据,Berkeley DB不理会它们的结构和意义,只把他们当作字节串来存取;但是从应用程序设计的角度看,一个数据库中最好是保存一类数据,比如在同一个Berkeley DB数据库中保存所有员工的信息,对于每一个key/data pair,以工号为key,以一个员工的全部信息为data。要存储部门信息时,把它保存到另一个Berkeley DB数据库中。 阅读全文…

数据库通用基础实现技术—多进程共享信息

2009年1月7日 davidzhao 没有评论

这篇文章最早发布在我的百度博客上的( http://hi.baidu.com/dazhao%5Fdbblog ),现在把它贴过来。

Berkeley DB数据库以程序库的方式链接到应用程序中,而应用程序可以以多线程、多进程的方式访问同一个数据库环境中的所有数据库。注意,这里的数据库环境(Database Environment, DB_ENV)是Berkeley DB的一个术语,相当于关系数据库中的一个“数据库”,我们知道这个“数据库”中有很多个“关系表”。而Berkeley DB当中用“数据库”(”Database”)来指代大家所熟悉的“关系表”—记住这个术语的改变,否则后面就很难理解了。

在通常的关系数据库服务器中,通常也是有很多个进程在向客户连接提供数据,所以本文所描述的技术适用于所有的数据库系统。 阅读全文…

编写可移植的C++ 模板代码

2009年1月7日 davidzhao 没有评论

这篇文章最早发布在我的百度博客上的( http://hi.baidu.com/dazhao%5Fdbblog ),现在把它贴过来。

MSVC8 对c++模板的支持,基本上遵循了c++标准的规定,不过在某些细节之处仍然超越了c++标准,多做了一些工作,从而一定程度上减轻了程序员编程的负担。但是这种简化,是一把双刃剑—当你使用MSVC8编程的时候你会感觉轻松而简便,你不知不觉中就陷入了MS的陷阱—当你需要把代码移植到使用gcc的*nix上时候,你将遇到很多头疼的问题,甚至不得不放弃,从而困在微软的小世界里面。为了防患于未燃,我们应该在编码之前,就知道如何编写可移植的c++模板代码,不要使用MSVC8的扩展。我把我工作中学到的经验列出来,供大家参考,这样大家就不会犯我曾经犯过的错误。要知道,为了修正这些不可移植的代码,我用去了整整一个星期。 阅读全文…

分类: David Zhao 标签: ,