MySql с XPath против MySql в унисон с MongoDB для необычных требований к структуре - PullRequest
1 голос
/ 08 января 2012

Если ваша база данных должна содержать сложные отношения / ограничения вы бы предпочли:

  • Option 1: простая структура MySql с полем XML в одной таблице, которую вызапрос с использованием XPath ( ExtractValue () ).
  • Option 2: та же простая структура MySql плюс отдельная установка MongoDB, содержащая MongoDB-эквивалент XML *,

И почему?


Допущения:

  • Если необходимо удалить целую сущностьэто было бы проще с опцией 1 (просто удалите весь кортеж).
  • Запрос MongoDB будет быстрее, чем XPath.Но это необходимо сделать после запроса MySql, если только идентификатор не был получен в более раннем запросе.
  • Незначительные обновления были бы быстрее / проще с вариантом 2, потому что с функцией XML MySql UpdateXML () Вы можете обновить только всего XML.
  • Необходимо быть более осторожным с вариантом 2;при вставке / обновлении я должен убедиться, что не вставлял / не обновлял MongoDB, если запрос вставки / обновления MySql не удался.
  • Игнорирование части 'простая структура MySql' (соединения и т. д.), есть ExtractValue () (вариант 1);Мне нужно извлечь большой кусок XML и сделать все остальное в моем PHP / JS.В то время как MongoDB может обрабатывать гораздо больше.

Примечания:

  • * плюс идентификатор, соответствующий MySqlкортеж, которому он принадлежит.
  • Поправьте меня, если я ошибаюсь по поводу любого из моих предположений.

Редактировать:

В любом случае, этоЯ буду использовать PHP или JS через PHP, который буду использовать для взаимодействия с базами данных.

1 Ответ

0 голосов
/ 11 января 2012

Вы можете определенно сохранить структуру в MongoDB.Как правило, BSON намного проще / чище, чем использование XML для представления сложных отношений (и вы также можете читать и редактировать его из оболочки).В MongoDb есть много атомарных операций, которые делают изменения быстрыми и легкими.

Посмотрите на эти операции для обновления документов на месте:

http://www.mongodb.org/display/DOCS/Updating

Вы также можете извлекать отдельные поля / разделы документа:

http://www.mongodb.org/display/DOCS/Advanced+Queries

В целях параллелизма вы также можете использовать findAndModify, если у вас есть несколько приложений / потоков, вносящих изменения одновременно.

http://www.mongodb.org/display/DOCS/findAndModify+Command

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