-1

我正在寻找一个支持 Windows XP 32 位的文档数据库,满足以下要求:

  • 不得中断支持。即我希望能够安装最新版本的数据库。MongoDB 不适合,因为它们不再支持 XP,而 CouchDB 不适合,因为它们不再支持任何 Windows 32 位。
  • 应该比较简单。显然,该应用程序不是企业应用程序,因此像 Cassandra 这样的复杂数据库已经不存在了。事实上,我想避免列数据库,因为我认为它们的存在是为了解决企业级问题,而这里不是这样。另一方面,我不想要关系数据库,因为我想避免每次添加新字段时都升级数据库(并且它们将被添加)。
  • 它应该支持对部分文档进行索引,例如 MongoDB。我可以使用关系数据库,如 hsqldb 将数据存储为 json 字符串。这使得添加新字段变得容易 - 无需更改架构。但是这些字段不能被数据库索引。同样,与 MongoDB 不同。
  • 最后,数据库将与应用程序本身在同一台机器上运行 - MongoDB 会再运行一台机器,这会将应用程序的所有 RAM 都窃取给它自己。

所以,从某种意义上说,我正在寻找类似 MongoDB 的东西,但要支持 Windows XP 32 位。

有什么建议吗?

附言

我知道 Windows XP 在 MS 放弃支持它之前还有一年的寿命。但是,无论如何我必须支持XP。

4

2 回答 2

1

使用 HSQLDB 和其他一些关系数据库,您可以将文档存储为 CLOB。可以通过包含所有索引字段的索引的单个表访问此 clob。例如

CREATE TABLE DATAINDEX(DOCID BIGINT GENERATED BY DEFAULT AS IDENTITY, FIELDNAME VARCHAR(128), FIELD VARCHAR(10000),
    DOCUMENT CLOB, PRIMARY KEY (DOCID, FIELDNAME))

CREATE INDEX IDS ON (FIELDNAME, FIELD);

整个文档就是 CLOB。需要索引进行搜索的选定字段的副本存储在 (fieldnname, field) 列中。具有相同 DOCID 的行在 DOCUMENT 列中将具有相同的 CLOB。用第一个字段和 clob 插入一行,然后通过选择并插入现有的 DOCID 和带有第二个字段的 clob 来复制它,依此类推。

-- use this to insert the CLOB with the first field
INSERT INTO DATAINDEX VALUES DEFAULT, 'f1', 'fieldvalue 1', ?
-- use this to insert the second, third and other fields
INSERT INTO DATAINDEX VALUES
    IDENTITY(), 'f2', 'filedvalue 2', 
    (SELECT DOCUMENT FROM DATAINDEX WHERE DOCID = IDENTITY() LIMIT 1)

以上只是一个例子。您可以创建自己的 DOCID。原则是使用相同的 DOCID 并插入带有 CLOB 的第一行。第二行和第三行从先前插入的行中选择 DOCID 和 clob,以使用其他字段创建新行。您可能会使用 JDBC 参数来插入 FIELDNAME 和 FIELD 列。

这允许您执行搜索,例如:

SELECT DOCID, DOCUMENT FROM DATAINDEX 
    WHERE FIELDNAME = 'COMPANY NAME' AND FIELD LIKE  'Corp%'

这可能无法满足您的所有要求,但答案旨在涵盖 HSQLDB 的可能性。

于 2013-03-18T17:23:31.097 回答
1

您使用的是哪个编程框架?如果可以使用 .NET,您可以尝试RavenDB。它既可以用作嵌入式数据库,也可以用作独立数据库。

对于 Java,您可以尝试OrientDB。它也是可嵌入的:https ://github.com/nuvolabase/orientdb/wiki/Embedded-Server

于 2013-03-18T17:34:27.380 回答