用于Windows XP的文档DB 32位

时间:2013-03-18 15:43:47

标签: mongodb couchdb hsqldb document-database database

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

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

所以,从某种意义上说,我正在寻找像MongoDB这样的东西,但是在Windows XP 32位的支持下。

有任何建议吗?

P.S。

我知道在MS支持它之前,Windows XP还有一年的生存时间。但是,无论如何,我必须支持XP。

2 个答案:

答案 0 :(得分: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的可能性。

答案 1 :(得分:1)

您使用的是哪种编程框架?如果有可能是.NET,你可以试试RavenDB。它既可以用作embedded,也可以用作独立数据库。

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