在API中捆绑数据库

时间:2011-03-06 07:48:50

标签: java database api file

我目前正在开发一个项目,在这个项目中,我需要将数据库与JAVA API打包在一起。从某种意义上说,数据库应该是安全的,除了API之外,没有人能够访问它。关键是数据库中的数据是知识产权,不应暴露。这就是问题所在。该数据库包含大约500万条记录(仅4-5列)。我需要基于具有聚合函数的索引字段来查询它。我很清楚有java嵌入式数据库,如derby,hsql和他们的喜欢。但我非常怀疑他们的表现。我知道这个要求听起来很奇怪。但至少它是一个开始。

API应该同时访问并需要从这个数据库中检索查找值。这真的是一个很好的设计,或者该方法有问题。欢迎任何架构建议

NewInfo:如果嵌入式数据库看起来不太有希望,那么嵌入式文件如何与API一起放置。这可行吗?

3 个答案:

答案 0 :(得分:2)

如果您正在分发数据库,​​则不会阻止人们直接访问它。这只是DRM,正如我们从长期经验中所知,DRM 不起作用

保持数据私密性的最简单方法是将其保留在您控制的服务器上,并提供网络API。这也允许您使用您选择的数据库。

如果您确实将其保留在客户端上,我认为您会发现嵌入式数据库的性能比您预期的要好。另一个不错的选择是SQLite。

我不确定你需要什么样的并发性。您是否设想在同时访问数据库的给定客户端上有多个程序?

答案 1 :(得分:1)

我会将H2数据库与纯JDBC api一起使用。 H2为ultra fast并支持encryption。出于安全原因,您可以将密钥存储在其他地方的加密数据库中(在某些auth服务器上?)。你可能无法找到比纯JDBC更快的东西。

答案 2 :(得分:0)

我同意Matthew的说法,你无法阻止用户访问它。如果您使用标准数据库引擎,也可以轻松实现。你几乎只限于加密数据然后将其解密到内存中,以便你可以查询它。

SQLite是一个很好的嵌入式数据库,但并发性很差。如果可以将HSQL,Derby或其他任何内容保存在内存中,它们应该可以正常工作。