База данных XML, это хорошо для следующего? - PullRequest
0 голосов
/ 02 декабря 2011

Я использую XML-файл в качестве базы данных, которая в настоящее время находится в разработке.

XML-файл будет изменяться несколькими пользователями по сети (не на сервере, скажем, но на моем компьютере, где они имеют доступ по сети)

Я знаю, что это плохая идея использовать xml для этого, но структура xml намного лучше / чище / что-то, что мне нравится.

Хотите знать, каковы мои варианты? Как я смогу продолжить с XML с каким-то странным фоновым пользовательским соединением? (Который проверил бы все необходимые детали, чтобы позволить мне писать / читать из XML без проблем)

Или я застрял в использовании базы данных типа SQL? Если бы я застрял в использовании, то была бы какая-то база данных, которая чем-то похожа на XML ...

РЕДАКТИРОВАТЬ: Причина, по которой нравится XML. Сгруппированы легко для глаз.

<SomeDocument name="Something">
   <URL>bbbb</URL>
   <Something>2342</Soemthing>
   <Something_That_would_of_been_in_another_database>derp</...>

вместо того, чтобы связать 3-4 таблицы вместе ...

Ответы [ 4 ]

2 голосов
/ 02 декабря 2011

Есть несколько примеров баз данных на основе XML, которые поддерживают многопользовательские среды.Одним из них является формат файла редакции OneNote, используемый Microsoft OneNote.Хотя есть очень подробная документация по этому вопросу, поддержка нескольких пользователей, редактирующих один файл, чрезвычайно сложна.По сути, можно утверждать, что хранилище на основе XML не является жизнеспособным вариантом, когда вам требуется многопользовательская поддержка.

Если вы застряли с файлом XML, вы можете посмотреть в формат файла OneNote, но это не так.традиционный формат XML, поскольку он также использует «двоичную оболочку», то есть фактическое содержимое определяется в данных XML в двоичном файле, но транзакции / ревизии / свободные фрагменты представляются в двоичном виде.Это необходимо, так как вам нужно выделить определенные части файла для пользователей, чтобы записывать в них, пока у вас есть открытый файл.

Если вы не хотите использовать программное обеспечение выделенного сервера, вы можете использовать различные файлыбазы данных, такие как SQL CE или SQLite.

1 голос
/ 09 декабря 2011

Вопрос о том, использовать ли собственную базу данных XML, базу данных с поддержкой XML, так называемую базу данных NoSQL или любой из более традиционных методов, может зависеть от нескольких факторов. Просто упомянуть два:

  • Самое главное, у вас есть ваши данные в XML, и вы хотите сохранить их в таком виде? Если это так, используйте решение с поддержкой XML.
  • Вам нужна масштабируемость или производительность? Если это так, вам нужно решение, которое может справиться с этим. Существует множество баз данных NoSQL и XML, которые вполне способны справиться с этим.

Что касается параллелизма: любая база данных должна иметь дело с этим изначально.

Ряд баз данных уже упоминался. Чтобы выделить несколько, MarkLogic Server (www.marklogic.com) создан для масштабирования и работы до терабайтного масштаба (и выше) и имеет разъемы для подключения, среди прочего, к Java и .Net. Решение от 28 мсек (www.28msec.com на основе Zorba) работает в облаке и должно масштабироваться.

Но самое интересное отметить, что эти базы данных часто используются через интерфейсы HTTP / REST. Это упрощает интеграцию с любым языком программирования и упрощает обмен.

1 голос
/ 02 декабря 2011

Я не знаком с душой C #, но для нашего Java-приложения мы используем eXist-db и запрашиваем его с помощью xquery. Я не слишком знаком с этим, но некоторые используют markLogic . Еще больше используйте Berkley db .

1 голос
/ 02 декабря 2011

Вам потребуется решить проблемы с параллелизмом, если вы используете файл, к которому имеют доступ несколько пользователей.Необходимо сделать гарантии, чтобы один пользователь не перезаписывал изменения другого пользователя, сделанные в одно и то же время.

Я предлагаю использовать подходящую базу данных (например, SQL Server), которая будет решать эти проблемы за вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...