显然,BDB-XML至少从2003年开始出现,但我最近才在甲骨文的网站上偶然发现它:Berkeley DB XML.这是模糊:
Oracle Berkeley DB XML是一个开源的,可嵌入的XML数据库,基于XQuery访问存储在容器中的文档,并根据其内容编制索引.Oracle Berkeley DB XML构建于Oracle Berkeley DB之上,并继承了其丰富的功能和属性.与Oracle Berkeley DB一样,它与应用程序一起运行,无需人工管理.Oracle Berkeley DB XML在Oracle Berkeley DB之上添加了文档解析器,XML索引器和XQuery引擎,以实现最快,最有效的数据检索.
对我而言,似乎潜在的想法在技术上是合理的,并且可能比基于文档的新数据库(如CouchDB或MongoDB)更成熟.据我所知,它支持C,C++,Ruby和Perl.它甚至具有HA功能,例如使用具有自动选举功能的主/从模型进行自动复制.
但是,我似乎找不到任何使用它的项目.它有什么根本性的错误吗?许可证太繁重了吗?太复杂了吗?
为什么不使用它?
我被要求使用postgreSQL数据库,它将取代我目前使用的berkeleyDB.虽然; 我意识到这不是一个理想的情况,它是我无法控制的.
所以问题是......如果你被要求将postgreSQL变成一个关键值存储库,你将如何做到这一点,同时尽可能提高效率?
我的值是字节数组,我的键是字符串,我可以对这些字符串的长度施加一些限制.
我假设我应该使用blob作为我的价值和持有密钥的主键列,但是当我冒险进入这个旅程时我很好奇堆栈溢出社区中的任何人是否已经这样做了,或者是否有任何具体的"陷阱"我应该留意.
我正在通过DPL界面使用Berkeley DB Java版.
我想询问是否有人知道任何GUI库可以轻松浏览保存在数据库中的数据.
我知道BDB文档说有关存储实体的元数据不会保存在任何地方,因此只有编写数据的人才能知道从那里返回的类的类型.这就是为什么我正在搜索将包含在主项目中的库(不是一个完整的程序),因此它将知道我的类的类型并能够正确显示数据.
ps我发现这个bdb浏览器,但它似乎是一个死的项目.
更新:
到目前为止,我已经找到了一个GUI,它显示了通过JMX为BDB收集的统计信息.以下是如何使用它:http://www.oracle.com/technology/documentation/berkeley-db/je/jconsole/JConsole-plugin.html
仍在搜索数据浏览器...
关注这个问题,似乎基于文件或磁盘的Map实现可能是我在那里提到的问题的正确解决方案.精简版:
Map实现了一个ConcurrentHashMap.在工作中,(强烈)建议我使用SQLite解决这个问题,但在询问上一个问题之后,我认为数据库不是这项工作的正确工具.所以 - 让我知道这听起来有多疯狂 - 我认为更好的解决方案是Map存储在磁盘上.
不好的主意:自己实现这个.更好的主意:使用别人的图书馆!哪一个?
n几天前的条目.如果我必须手动执行此操作,这不是什么大问题.new ConcurrentHashMap<Foo, Bar>();到new SomeDiskStoredMap<Foo, Bar>();(no inserts for an hour)这样(insert 10,000 objects at once).我正在尝试创建一个键/值数据库,其中包含300,000,000个每个8字节的键/值对(包括键和值).要求是拥有一个非常快速的键/值机制,每秒可以查询大约500,000个条目.
我尝试过BDB,Tokyo DB,Kyoto DB和levelDB,当涉及到那么大的数据库时,它们都表现得非常糟糕.(他们的表现甚至没有接近他们在1,000,000个参赛作品的基准价格).
由于硬件限制(32位软件),我无法将数据库存储在内存中,因此memcached是不可能的.
我也不能使用外部服务器软件(只有数据库模块),根本不需要多用户支持.当然,无论如何,服务器软件无法从单个端点每秒保存500,000个查询,因此不包括Redis,Tokyo tyrant等.
我正在设计一个基于Java的网络应用程序,我需要一个键值存储.Berkeley DB似乎适合我,但似乎有两个Berkeley DB可供选择:用C语言实现的Berkeley DB Core和用纯Java实现的Berkeley DB Java Edition.
问题是,如何选择使用哪一个?随着网络应用程序的可扩展性和性能非常重要(谁知道,也许我的想法将成为下一个Youtube),我无法轻易找到两者之间的任何有意义的基准.我还没有熟悉Cores Java API,但我发现很难相信它可能比Java版本更糟糕,Java版本看起来相当不错.
如果其他一些键值存储更好,也可以随意推荐.我正在存储小的二进制blob,键可能是数据的哈希值,或者其他一些唯一的id.
多台计算机是否可以同时访问存储在共享文件系统上的svn存储库?
我正在构建一个应用程序,其中每个Windows客户端计算机都有一组本地工作文件,并且可以定期与团队的其他成员同步.从服务器的角度来看,除了Windows共享挂载点之外,我不想依赖任何东西.svn file:// URL协议是否支持共享文件系统,还是假设文件系统是本地的?
在颠覆文档提到与BDB和FSFS问题在Win9x的环境,但它不是我清楚库是否不同时通过文件访问:// URL是在最近版本的Windows安全(或其他操作系统,对于这个问题).
编辑 我正在构建的应用程序将直接使用svn,因此如果它允许安全的并发共享协作环境,我愿意构建一个相对受限的环境.
如果您到达预先存在的Subversion存储库,如何确定它是使用BDB还是fsfs后端存储方法创建的?
我花了几个小时搜索如何使用bsddb模块的例子,我发现的只有这些(从这里):
data = mydb.get(key)
if data:
doSomething(data)
#####################
rec = cursor.first()
while rec:
print rec
rec = cursor.next()
#####################
rec = mydb.set()
while rec:
key, val = rec
doSomething(key, val)
rec = mydb.next()
Run Code Online (Sandbox Code Playgroud)
有谁知道我在哪里可以找到更多(实用)如何使用这个包的例子?
或者有人会介意分享他们自己编写的使用它的代码吗?
编辑:
我之所以选择Berkeley DB,是因为它具有可扩展性.我正在对大约220万个网页进行潜在的语义分析.我对14个网页的简单测试产生了大约500,000条记录.所以做数学...我的表中将有大约78.6亿条记录.
如果有人知道我可以使用python访问的另一个高效,可扩展的数据库模型,请让我知道它!(lt_kije引起了我的注意,bsddb在Python 2.6中已弃用,并将在3.*中消失)
如何确定给定SVN存储库使用的文件系统类型?我想用svnadmin创建一个新的存储库,但是想确保我使用服务器上已有的其他存储库创建具有一致设置的新存储库.
如果所有其他人都是系统上的FSFS,我不想设置berkley db存储库.
我可以可靠地查看/ repositoryname/db/fs-type吗?
berkeley-db ×10
java ×4
fsfs ×3
svn ×3
database ×2
key-value ×2
bsddb ×1
caching ×1
ehcache ×1
filesystems ×1
hadoop ×1
hash ×1
jdbc ×1
postgresql ×1
python ×1