我正在开发一个将数据存储在表中的应用程序,类似于RDBMS。我正在寻找一种方法让我的用户使用SQL查询这些数据。理想情况下,我想这样做而不必实现我自己的SQL解析器,查询优化器等。到目前为止,从Apache Derby这样的东西中删除部分看起来是最好的选择,但我想知道是否有一种更简单的方法。
我想我需要:
或者,有没有人知道我可以用我自己的文件/数据格式替换数据存储的任何开源数据库?
最后一点,我不需要交易,主键,外键,约束等等。谢谢!
感谢您的回复,伙计们!
答案 0 :(得分:2)
答案 1 :(得分:1)
显而易见(最简单)的方法是将数据存储在数据库中。听说您需要实现自己的数据库,没有适合的现有数据库,这有点令人惊讶。
答案 2 :(得分:1)
你的意思是你的'表'不是真正的SQL表吗?并且你希望实现一个SQL接口,实际上不是DMBS,而是你自己的一个?
我认为您最好使用像Derby这样的现有DBMS,让用户直接查询它。
如果您担心数据损坏,可以提供一些查询过滤功能。
总而言之,这看起来并不是一个明智的决定。
也就是说,您可以通过“Storage Engine API”实现自己的MySQL存储引擎,它可以让您定义文件格式(以及更多):
答案 3 :(得分:0)
我很确定HSQLDB可以让你做你想做的事情,并且还允许你将数据存储在平面文件中。
你也可以使用SQLite,其缺点是你没有(至少我最后一次检查过)任何纯Java JDBC驱动程序。这是SQLite格式。
Apache Derby和HSQLDB都非常轻量级,您不需要将它们剥离。
您不需要编写解析器BTW - 您需要做的就是从用户捕获SQL并执行它。
优化器将是棘手的部分,但这取决于您认为表格的大小 - 如果它们足够小并且机器足够快,您可能不需要打扰。
如果您要通过网络以任何形式公开此内容,您可能需要重新考虑一下。你提出的是黑客的梦想。