2013-03-18 62 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

相關問題