2013-03-18 2 views
-1

я ищу документа БД с поддержкой Windows XP 32 бита, удовлетворяющие следующим требованиям:Документ DB для Windows XP 32 бит

  • поддержка не должна быть прекращена. То есть Я хочу иметь возможность установить самую последнюю версию БД. MongoDB не подходит, поскольку они отказались от поддержки XP, а CouchDB не подходит, поскольку они отказались от поддержки любых 32-битных Windows 32.
  • Это должно быть относительно просто. Очевидно, что приложение не является корпоративным, поэтому сложная БД, такая как Cassandra, отсутствует. На самом деле, я хотел бы избежать базы данных столбцов, так как я думаю, что они существуют для решения проблем уровня предприятия, чего здесь нет. С другой стороны, мне не нужны реляционные БД, потому что я хочу избежать обновлений БД при каждом добавлении новых полей (и они будут добавлены).
  • Он должен поддерживать индексацию на части документа, например MongoDB. Я мог бы использовать реляционную БД, такую ​​как hsqldb, чтобы хранить данные как строку json. Это позволяет легко добавлять новые поля - никакая схема не нуждается в изменении. Но эти поля не будут индексироваться базой данных. Опять же, в отличие от MongoDB.
  • Наконец, БД будет работать на том же компьютере, что и само приложение - еще один для MongoDB, который украл бы всю ОЗУ из приложения для себя.

Итак, в некотором смысле, я ищу что-то вроде MongoDB, но при поддержке Windows XP 32 бит.

Рекомендации:

P.S.

Я знаю, что Windows XP может жить до того, как MS откажется от поддержки. Тем не менее, я все равно должен поддерживать XP.

+0

Должна ли база данных находиться на окнах? Или приложение? Также «Очевидно, что приложение не является корпоративным, поэтому сложная БД, такая как Кассандра, отсутствует». Что это должно значить? MySQL - сложная база данных ... – Sammaye

+0

MySQL может быть сложным, но работать с ним просто. BTW, Mysql можно запустить встроенным (libmysqld.dll), что упрощает использование и развертывание. – mark

+0

БД должна работать на том же компьютере, что и приложение, - я отредактирую вопрос, чтобы подчеркнуть этот факт. – mark

ответ

1

С HSQLDB и некоторыми другими реляционными базами данных вы храните документ в виде 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 будут иметь один и тот же CLOB в столбце DOCUMENT. Одна строка вставляется с первым полем и клобом, затем дублируется путем выбора и вставки существующих 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

+0

Я обновил ответ. Например, у вас будет 4 строки с одинаковой ссылкой CLOB. Один клоб можно многократно ссылать на многие строки. – fredt

+0

Как вы ссылаетесь на тот же CLOB в нескольких разных записях? – mark

1

Какую структуру программирования вы используете? Если .NET - это возможность, вы можете попробовать RavenDB. Он может использоваться как как embedded, так и автономная база данных.

Для Java вы можете попробовать OrientDB.Это также возможно: https://github.com/nuvolabase/orientdb/wiki/Embedded-Server

+0

Мы используем Java. Вопрос в том, что RavenDB значительно увеличивает стоимость. – mark

+0

Я обновил ответ с предложением Java. – uldall

+0

Необходимо проверить. Благодарю. – mark

Смежные вопросы