在嵌入SQLite3并使用内存数据库的应用程序中,是否可以在应用程序的两个运行实例之间复制数据库?我可以通过自制协议复制我的所有数据库访问来手动执行此操作,但它似乎应该在数据库层内完成.
我正在尝试为独立的Java应用程序设置嵌入式Derby数据库,但在完成各种文档之后,我似乎无法找到任何简单的解释或示例.我正在使用带有Derby插件的Eclipse,并为我的项目启用了Derby特性.
我找到了一个在独立通讯录中使用嵌入式Derby数据库的例子,以及在Eclipse中使用Derby的概述(这似乎不包括嵌入式部署),但我仍然觉得我缺少一些基本的东西.
这是我第一次尝试使用Java数据库,我有点困惑,所以这是我的基本问题:
代码片段将非常有用!
我有一个已建立的软件产品,它使用HSQLDB作为其内部设置数据库.客户项目存储在此数据库中.多年来,HSQLDB已经为我们提供了相当好的服务,但它有一些稳定性/腐败问题,我们必须围绕这些问题进行编码,即便如此,我们也似乎无法完全保护自己.
我正在考虑更改内部数据库.从开发的角度来看,这样做会相当痛苦,但是向客户解释损坏的数据库(和丢失的数据)并不好玩.
所以我的问题是:有没有人有足够的经验来衡量Apache Derby的长期稳定性?我发现谷歌的一篇帖子抱怨德比不稳定,但是从2006年开始,所以我觉得它在过去的4年里得到了改善.或者,是否存在我可以使用的另一个纯Java嵌入式(进程中)数据库(商业或开源).性能对我来说不是很重要.稳定是王道.断电时的数据完整性,良好的BLOB支持和热备份都是必须的.
请不要建议不是基于SQL的关系数据库.我正在尝试改造现有产品,而不是从头开始,谢谢.
我正在考虑为我的Windows桌面应用程序使用/实现某种嵌入式键值(或文档)存储.我希望能够存储各种类型的数据(GPS轨道就是一个例子),当然也能够查询这些数据.数据量将无法同时加载到内存中.
我正在考虑使用sqlite作为键值存储的存储引擎,类似于y-serial,但是用.NET编写.我还读到了FriendFeed使用MySQL来存储无模式数据,这是如何将RDBMS用于非关系数据的一个很好的指针.sqlite似乎是一个很好的选择,因为它的简单性,可移植性和库大小.
我的问题是嵌入式非关系型商店是否还有其他选择?它不需要是可分发的,也不必支持事务,但它必须可以从.NET访问,并且应该具有较小的下载大小.
更新:我发现了一篇名为SQLite作为键值数据库的文章,它将sqlite与Berkeley DB进行了比较,Berkeley DB是一个嵌入式键值存储库.
我最近问过一个关于Neo4j的问题,我开始工作,看起来不错.它是可嵌入的,它是用Java编写的,并没有(太多)依赖.
然而,这是一个图形数据库,我不知道将它用作简单的键/值存储是否是一个好主意.
基本上我有一张大地图,在Java中看起来像这样:
Map<Integer,Map<String,String>>
Run Code Online (Sandbox Code Playgroud)
我在主地图中有几千万个条目,每个条目都包含一个属性/值的映射."内部"地图相对较小:约20个条目.
我需要一种方法来保持从运行webapp到另一个的映射.
使用Neo4j,我所做的是为每个ID(整数)创建一个节点,然后为内部映射中的每个条目放置一个属性.从我早期的测试看起来似乎有效,但我不确定这是一个很好的方法.
用Java编写的哪个可嵌入数据库会用到吗?
要求是:
用Java编写
可嵌入(所以没什么太大)
不是 SQL(*)
开源
易于备份(我需要能够在服务器运行时进行"实时"备份)
我的术语也可能有点不对,所以请随时帮助我/纠正我.对于我的"地图地图",最合适的是键/值对DB吗?
由于键/值对DB,文档DB,大表,图形DB等之间的差异,我有点迷失.
我也喜欢使用像Neo4J这样的图形数据库来满足我的需求(我认为性能确实不会是一个问题,因为我会看到相对少量的条目).
当然我可以自己坚持我的地图地图,但我真的不想在这里重新发明任何轮子.我想重用一个久经考验的DB ......
(*)我不想要SQL的原因是我总是会有这个"地图图",内部地图会不断发展,所以我不想要太结构化的东西.
我需要在客户端计算机上部署带有数据库的WCF服务.我对SQL Server Express感到困惑.我需要验证以下所有内容.
在文件App_Data夹中附加数据库文件时,是否仍需要在客户端计算机上安装SQL Server Express引擎(Windows服务)?
有一种称为SQL Server Express LocalDb的风格.那个不需要引擎(Windows服务)?但我认为它需要安装LocalDb的先决条件.
SQL Server 2012引入了Localdb.SQL Server 2008没有localdb.正确吗?我在MS网站上找不到2008版本.
我是一个嵌入式人,而不是数据库人.我被要求重新设计一个在几个地方存在瓶颈的现有系统.
嵌入式设备基于运行频率为220mHz的ARM 9处理器.
应该有一个50k条目的数据库(可能增加到250k),每个条目有1k数据(最多8个字段).这是近似的 - 如果有必要,我可以尝试获得更精确的数字.
他们目前正在使用SqlLite 2并计划迁移到SqlLite 3.
没有开始火焰战 - 我是一个完整的d/b新手只是寻求建议 - 这是"最好的"决定吗?我意识到这可能是"一根绳子有多长?" 问题,但任何指针都会受到极大的欢迎.我不介意做很多阅读和研究,但只是希望你能让我开始飞速发展.谢谢.
ps同样,完全重写,甚至可能不会坚持使用嵌入式Linux,但切换到eCos,不要太担心d/b格式之间的一次转换.哦,访问应该是不常见的,每隔几秒钟最多一次.
编辑:好的,似乎他们有30k条目(可能达到100k或更多),每个只有5或6个字段,但其中至少有3个可以是记录的搜索键.他们正在玩弄"完全没有d/b,因为数据非常简单",但在我看来,使用多个键,我们无法使用像quicksort()类型搜索这样的花哨的东西(递归,二进制搜索) ).关于"没有d/b"的任何想法,只是数据结构?
顺便说一句,一键是800k - 不确定SqlLite处理得多好(也许用"没有d/b"我必须将800k散列到更小的东西?)
我需要一个用于Clojure应用程序的嵌入式数据库.也许它与任何其他Java应用程序的标准相同,但我还是得到其他人的意见.我不是选择SQLite,因为那不是纯Java,因此独立应用程序的分发变得复杂得多.似乎要走的路是Apache Derby.还有什么我应该考虑的吗?
我认为我正在寻找的是一个无SQL,嵌入式磁盘,在磁盘上(即非内存中)数据库,可以从java访问(最好在我的JVM实例中运行).这不是一个真正的数据库,我很想自己动手.基本上我正在寻找"我们应该把它保存在内存中还是放在磁盘上"的数据库部分.
我们的模型已增长到几千兆字节.现在这都是在内存中完成的,这意味着我们正在推动JVM达到几千兆字节.它目前全部存储在一个平面XML文件中,使用xstream进行序列化和反序列化,并使用内置的gzip库中的Java进行压缩.当我们的模型保持在100MB以下时,这种方法运行良好,但现在它的大于它成为一个问题.
松散地说,模型可以分解为
我想做的是有一些符合guid - > run-model的地图界面的东西.这个迷你数据库将保留这些对象的平面表.在我们的实验模型中,我们将使用guid列表替换运行模型列表,并在应用程序层添加对此映射的get调用,这将把它从磁盘中拉出并进入内存.
这意味着我们可以使用XML(我非常满意)保持程序的配置,并在DBMS中保留一个大数据表,这将使我们不会消耗多GB的内存.在程序启动和退出时,我可以从存档格式加载和卸载我们模型的两个部分(XML中的配置部分和数据库格式的运行模型).
我对这一点感觉很好,并且认为我可以用一些X-Stream的XML检查策略和自定义地图实现来实现它,但是在我的脑海中有一种声音告诉我我应该找到一个库来代替.
我应该自己动手还是有一个足够小的数据库来满足这个要求?
多谢你们,
-Geoff
database ×5
java ×4
derby ×3
nosql ×3
sqlite ×2
.net ×1
clojure ×1
embedded ×1
hsqldb ×1
javadb ×1
localdb ×1
performance ×1
postgresql ×1
replication ×1
sql ×1
sql-server ×1