我的问题是这一个的变种.
由于我的Java Web应用程序项目需要大量读取过滤器/查询以及与GridFS等工具的接口,因此我很难想到以上述解决方案建议的方式使用MongoDB的合理方法.
因此,我正在考虑在我的集成测试中运行MongoDB的嵌入式实例.我希望它能自动启动(对于每个测试或整个套件),为每个测试刷新数据库,最后关闭.这些测试可能在开发机器和CI服务器上运行,因此我的解决方案也需要是可移植的.
任何对MongoDB有更多了解的人都能帮助我了解这种方法的可行性,并且/或者建议任何可能帮助我入门的阅读材料吗?
我也对人们对如何处理这个问题的其他建议持开放态度......
我打算开发一个小型(Java)应用程序来管理我的财务状况.我相信我需要使用嵌入式数据库,但我对此问题没有经验.我试着看一些可用的产品,但我无法决定哪一种更适合我.H2,HSQLDB,Derby和Berkeley DB似乎都是不错的候选者,但我仍然看不出他们如何相互比较.感谢您帮助我们比较它们并帮助我决定使用哪一个.
我打算在我的应用程序中使用Hibernate(除非你建议使用DBMS提供的API),但我也希望能够使用SQL浏览工具(修改模式和更改数据)轻松编辑数据库.
谢谢.
我正在研究RSS阅读器应用程序.我需要找到一个后端数据库.我希望嵌入数据库,因为我不希望用户安装数据库服务器.
我知道SQLite是一个不错的选择,但我想知道是否还有其他任何nosql选择?
我想获得有关Java中嵌入式数据库的意见或建议.特别是我在看H2,HSQLDB和Derby.您是否在生产项目中使用了这些?您是否有评论或建议选择其他人?
谢谢
编辑:我目前正在评估这些选项,以用于我们的内部开发,所以我没有考虑具体的用例.我正在评估它们的一个可能用途是使用数据库作为本地存储库的桌面应用程序.在某些时候,它与中央存储库(在本例中为DB2)同步.它是一个存储和转发架构.无论如何,这只是指导你的答案的可能性,基本上我正在寻找你使用这些工具的经验.
所以我最近才开始学习数据库如何工作,如何使用SQL等.并决定开始在我的Java应用程序(特别是H2数据库)中实现嵌入式数据库,并且似乎在我编写的计算机上运行得相当好.
当我移动到另一台计算机继续我的编码时,我注意到即使我移植了嵌入式数据库文件(h2 - *.jar)我在第一台计算机上创建的所有准备好的表都不存在于第二台计算机上.我不知何故有这样一种先见之明,即通过数据库引擎生成的实际数据也存储在嵌入式数据库文件中.
所以我的问题是,数据库中的数据实际存储在哪里?是否可以准备一个已包含数千条记录的数据库并将其与实际应用程序一起分发?
我还要提一下,我在第一台计算机上连接数据库的方式是通过JDBC连接,即URL:JDBC:h2:〜/ test,当我尝试在第二台计算机上连接到该数据库时,它不存在.
谢谢!
对于集成测试,您的Spring配置与使用嵌入式h2数据源以及可选的JUnit 相似?
我第一次尝试使用SingleConnectionDataSource基本上可以工作,但是在更复杂的测试中失败了,你需要同时连接多个连接或挂起事务.我认为基于tcp的服务器模式中的 h2 也可以正常工作,但这可能不是内存中临时嵌入式数据库的最快通信模式.
有哪些可能性及其优点/缺点?另外,如何创建表/填充数据库?
更新:让我们指定一些对此类测试很重要的具体要求.
我正在Delphi中创建一个桌面应用程序,并计划使用嵌入式数据库.我使用SQlite3和DISQLite3库启动了项目.它有效,但文档似乎有点轻松.我最近发现Firebird(是的,我已经离开了Windows一段时间),它似乎有一些引人注目的功能和支持.
每个嵌入式数据库有哪些优缺点?规模很重要,支持和资源也很重要.你用过什么,为什么?
我需要一个快速,可靠且内存有效的Linux键值数据库.我的密钥大约是128个字节,最大值大小可以是128K或256K.数据库子系统不应使用超过大约1 MB的RAM.总数据库大小为20G(!),但一次只访问一小部分数据.如果有必要,我可以将一些数据blob从数据库中移出(到常规文件),因此大小最多可降至2 GB.数据库必须在系统崩溃后继续存在,而不会丢失最近未修改的数据.我的读取次数比写入次数多100倍.如果它可以使用块设备(没有文件系统)作为存储,那么这是一个加分.我不需要客户端 - 服务器功能,只需要一个库.我需要Python绑定(但如果它们不可用,我可以实现它们).
我应该考虑哪些解决方案,您建议使用哪种解决方案?
我知道哪些候选人可以工作:
bsddbPython模块提供绑定)mmap()是整个文件,repack操作有时会使文件大小翻倍,如果数据库大于2G(即使在64位系统上)也会产生神秘的故障,集群实现(CTDB也可用;文件经过大量修改后变得太大;文件在大量哈希争用后变得太慢;没有内置方法来重建文件;通过锁定单个哈希桶来实现非常快速的并行更新)我不会用这些:
auto_vacuum;注意:小写入事务可能非常慢;注意:如果繁忙的过程是做很多交易,其他流程都饿了,他们永远无法获得锁定)仅供参考,最近一篇关于 Linux杂志中关键值数据库的文章.
仅供参考,一个较旧的软件列表
是否有嵌入式PostgreSql,以便我们可以对PostgreSql驱动的应用程序进行单元测试?
由于PostgreSql有一些方言,因此最好使用嵌入式PostgreSql本身而不是其他嵌入式数据库.
嵌入式并不一定意味着它必须嵌入JVM进程中.它也不一定需要使用内存中持久性.它应该由依赖关系管理(Maven,Gradle)自动加载,这样Unit测试可以在每台机器上运行,而无需安装和配置本地PostgreSQL服务器.
我(现在仍在)寻找在.net(c#)应用程序中使用的嵌入式数据库.警告:应用程序(或至少数据库)存储在网络驱动器上,但一次仅由1个用户使用.
现在,我的第一个想法是SQL Server Compact版.这真的很好地融合了,但它无法在网络上运行.
Firebird似乎有同样的问题,但.net集成似乎并不是真正的一流,而且很大程度上没有文档记录.
Blackfish SQL看起来很有趣,但没有.net版本的试用版.定价也行.
对.net 运行良好并且无需实际安装服务器软件即可在网络上运行的任何其他建议?