Хранить XML-данные в коллекции mongodb
Я все еще относительно новичок в базах данных NoSQL, таких как mongodb, поэтому извините мое невежество.
Справочная информация:
сейчас, у меня есть система, которая делает следующее:
- система собирает данные от клиентов
- выводит эту информацию в XML-документ
- скрипт perl берет данные в XML-тегах и помещает их в БД mySQL.
- веб-сайт с поддержкой apache / php отображает данные.
цель этой системы-действовать как инвентарь для серверов / шасси / сетевых устройств / и т. д.
Это была хорошая система, но я решил перейти к нереляционной базе данных из-за преимуществ, которые я вижу в использовании этого для типа данных, которые я храню.
вопрос:
- очень просто извлечь информацию из xml-документов с помощью mongodb?
- должен ли я переписать скрипты я должен вывести файл JSON/BSON вместо XML?
- как вы берете информацию из файлов и помещаете ее в базу данных mongodb?
4 ответов
при переходе к БД документа NoSQL на решение сильно влияет как данные считываются или используются клиентом/ поскольку данные в основном предварительно агрегированы / предварительно объединены на основе шаблонов использования. Таким образом, технически вы можете перейти на mongodb "технически", просто преобразовав данные в json/bson вместо xml при импорте данных.
все документы в 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());
}