-1

以下の要件を満たす、Windows XP 32 ビットをサポートするドキュメント DB を探しています。

  • サポートを中止してはなりません。つまり、DB の最新バージョンをインストールできるようにしたいのです。MongoDB は XP のサポートを中止したため適合せず、CouchDB は Windows 32 ビットのサポートを中止したため適合しません。
  • 比較的単純なはずです。明らかに、アプリケーションはエンタープライズ向けではないため、Cassandra のような複雑な DB は出ていません。実際、列データベースは企業レベルの問題を解決するために存在すると考えられるため、避けたいと思いますが、ここではそうではありません。一方で、新しいフィールドが追加される (そして追加される予定である) たびに DB のアップグレードを避けたいので、リレーショナル DB は必要ありません。
  • MongoDB のように、ドキュメントの一部のインデックス作成をサポートする必要があります。hsqldb のようなリレーショナル DB を使用して、データを json 文字列として保存できます。これにより、新しいフィールドを簡単に追加できます。スキーマを変更する必要はありません。しかし、これらのフィールドはデータベースによってインデックス付けできません。繰り返しますが、MongoDB とは異なります。
  • 最後に、DB はアプリケーション自体と同じマシンで実行されます。MongoDB の場合はもう 1 つダウンします。これにより、すべての RAM がアプリケーションから自身に奪われます。

ある意味では、MongoDB のようなものを探していますが、Windows XP 32 ビットをサポートしています。

何かアドバイスはありますか?

PS

Windows XP は、MS がサポートを終了するまであと 1 年あることを私は知っています。ただし、とにかく 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 で 1 つの行が挿入され、次に既存の DOCID と clob を選択して挿入することで複製され、2 番目のフィールドで 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 を挿入します。2 番目と 3 番目の行は、以前に挿入された行から 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 に答える