Хранить XML-данные в коллекции mongodb

Я все еще относительно новичок в базах данных NoSQL, таких как mongodb, поэтому извините мое невежество.

Справочная информация:

сейчас, у меня есть система, которая делает следующее:

  1. система собирает данные от клиентов
  2. выводит эту информацию в XML-документ
  3. скрипт perl берет данные в XML-тегах и помещает их в БД mySQL.
  4. веб-сайт с поддержкой apache / php отображает данные.

цель этой системы-действовать как инвентарь для серверов / шасси / сетевых устройств / и т. д.

Это была хорошая система, но я решил перейти к нереляционной базе данных из-за преимуществ, которые я вижу в использовании этого для типа данных, которые я храню.

вопрос:

  1. очень просто извлечь информацию из xml-документов с помощью mongodb?
  2. должен ли я переписать скрипты я должен вывести файл JSON/BSON вместо XML?
  3. как вы берете информацию из файлов и помещаете ее в базу данных mongodb?

4 ответов


при переходе к БД документа NoSQL на решение сильно влияет как данные считываются или используются клиентом/ поскольку данные в основном предварительно агрегированы / предварительно объединены на основе шаблонов использования. Таким образом, технически вы можете перейти на mongodb "технически", просто преобразовав данные в json/bson вместо xml при импорте данных.


  1. MongoDB не поддерживает xml-документ. Все документы в mongodb хранятся в BSON.
  2. Да, вы можете сделать это.
  3. в MongoDB драйверы доступны для многих языков. Использовать их.

все документы в mongodb хранятся в формате BSON. Xml можно хранить в базе данных в виде строкового значения. как - {xml : "<root><test>Test XML</test></root>"}


в java вы можете сделать вот так -

TestXML testXML = new TestXML();
        testXML.setXmlKey("test1" + new Date());

        BufferedReader br = new BufferedReader(new FileReader(new File(
                "C:/xml/newxml.xml")));
        String line;
        StringBuilder sb = new StringBuilder();

        while ((line = br.readLine()) != null) {
            sb.append(line.trim());
        }

        testXML.setXmlValue(sb.toString());
        mongoTemplate.save(testXML);

вы можете прочитать этот xml, используя ниже java code

List<TestXML> dbObjects = mongoTemplate.findAll(TestXML.class);
        for(TestXML key : dbObjects){
            System.out.println(key.getXmlValue());
        }