2013-03-18 56 views
-1

我要寻找一个文件DB支持Windows XP 32位,满足以下要求:文件DB的Windows XP 32位

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

因此,从某种意义上说,我在寻找类似于MongoDB的东西,但是支持Windows XP 32位。

任何建议?

P.S.

我知道Windows XP有一年的生活时间,MS会支持它。不过,我必须支持XP。

+0

数据库是否在Windows上?或者说是理由吗?另外“显然,应用程序不是企业应用程序,因此像Cassandra这样的复杂数据库已经不在了。”这是什么意思? MySQL是一个复杂的数据库... – Sammaye 2013-03-18 15:47:44

+0

MySQL可能很复杂,但使用它很简单。顺便说一句,Mysql可以运行嵌入式(libmysqld.dll),这使得使用和部署变得简单。 – mark 2013-03-18 16:16:32

+0

DB必须与应用程序在同一台机器上运行 - 我将编辑该问题以强调事实。 – mark 2013-03-18 16:17:10

回答

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。

+0

我不太明白。如果我有一个JSON文档'{f1:x1,f2:x2,f3:{g1:y1,g2:y2}}',那么你的意思是我将有5个副本的JSON文档与'(fieldname,field) ('f1',x1)','('f2',x2)','('f3.g1',y1)','('f3.g2',y2)'和' '? – mark 2013-03-18 20:56:26

+0

我已更新答案。例如,你将有4行具有相同的CLOB引用。一个clob可以在许多行中重复引用。 – fredt 2013-03-18 21:36:49

+0

你如何在几个不同的记录中引用相同的CLOB? – mark 2013-03-19 02:02:35

1

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

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

+0

我们正在使用Java。问题是RavenDB增加了成本。 – mark 2013-03-18 18:28:18

+0

我用Java的建议更新了答案。 – uldall 2013-03-18 20:03:24

+0

需要检查它。谢谢。 – mark 2013-03-19 09:20:25

相关问题