我目前正在开发一个项目,在这个项目中,我需要将数据库与JAVA API打包在一起。从某种意义上说,数据库应该是安全的,除了API之外,没有人能够访问它。关键是数据库中的数据是知识产权,不应暴露。这就是问题所在。该数据库包含大约500万条记录(仅4-5列)。我需要基于具有聚合函数的索引字段来查询它。我很清楚有java嵌入式数据库,如derby,hsql和他们的喜欢。但我非常怀疑他们的表现。我知道这个要求听起来很奇怪。但至少它是一个开始。
API应该同时访问并需要从这个数据库中检索查找值。这真的是一个很好的设计,或者该方法有问题。欢迎任何架构建议
NewInfo:如果嵌入式数据库看起来不太有希望,那么嵌入式文件如何与API一起放置。这可行吗?
答案 0 :(得分:2)
如果您正在分发数据库,则不会阻止人们直接访问它。这只是DRM,正如我们从长期经验中所知,DRM 不起作用。
保持数据私密性的最简单方法是将其保留在您控制的服务器上,并提供网络API。这也允许您使用您选择的数据库。
如果您确实将其保留在客户端上,我认为您会发现嵌入式数据库的性能比您预期的要好。另一个不错的选择是SQLite。
我不确定你需要什么样的并发性。您是否设想在同时访问数据库的给定客户端上有多个程序?
答案 1 :(得分:1)
我会将H2数据库与纯JDBC api一起使用。 H2为ultra fast并支持encryption。出于安全原因,您可以将密钥存储在其他地方的加密数据库中(在某些auth服务器上?)。你可能无法找到比纯JDBC更快的东西。
答案 2 :(得分:0)
我同意Matthew的说法,你无法阻止用户访问它。如果您使用标准数据库引擎,也可以轻松实现。你几乎只限于加密数据然后将其解密到内存中,以便你可以查询它。
SQLite是一个很好的嵌入式数据库,但并发性很差。如果可以将HSQL,Derby或其他任何内容保存在内存中,它们应该可以正常工作。