Можно ли хранить миллион записей (xml файлов) в базе данных Basex?
for(int j=1;j<1000000;j++) {
String id=String.valueOf(j);
String[] elems={"firstname","lastname","nickname","salary","permanentAddress","currentAddress","contactNo","email","alternateMail","FacebookName","Color"};
String[] childs = {id,"yong"+id,"mook kim"+id,"mkyong"+id,"100000"+id,"Bhopal"+id,"pune"+id,"999999999"+id ,"test"+id+"@basex.com","testA"+id+"@basex.com","Tom"+id,"grey"+id};
try {
xmlFile= x.CreateXMLDoc("test","transperfect",elems,childs);
} catch (TransformerConfigurationException exception) {
exception.printStackTrace();
}
storeIntoBaseXDB(j,id,xmlFile);
}
//Метод StoreIntoBaseXDB
public static void storeIntoBaseXDB (int i, String id, String xmlFile) бросает BaseXException {
if(i==1)
{
System.out.println("=========================Store into Database=========================");
//System.out.println("Check database existence");
con.getDatabaseConnection(dbNmae);
con.executeInsertQuery(dbNmae,id,xmlFile);
}
else
{
con.executeInsertQuery(dbNmae,id,xmlFile);
}
}
//executeInsertQuery() метод
public long executeInsertQuery(String dbname,String id,String xmlFile) throws BaseXException
{
//System.out.println(path);
new Open(dbname).execute(context);
try
{
/* String query = "db:add('db','C:/Users/manish/Desktop/BaseX65/xml/books.xml')";
QueryProcessor proc = new QueryProcessor(query, context);
proc.execute();
proc.close();
context.close();*/
new Add(id,xmlFile).execute(context);
//System.out.println(new Find(id));
}
catch (Exception e)
{
System.out.println("ERROR executing query: ");
e.printStackTrace();
}
}
Да, это возможно. Почему бы и нет (миллион - относительно небольшое число)?
Предел составляет 2 ^ 29, что составляет 546,870,912
(количество сохраненных XML-документов).
Предел для элементов XML составляет 2 ^ 31, что составляет 2,147,483,648
(хотя это включает все узлы, включая атрибуты, тексты и т.д.).
Вот веб-страница по статистике BaseX относительно существующих баз данных, первая строка таблицы также содержит ограничения (#Files
представляет количество сохраненных XML-документов, #Nodes
представляет количество узлов XML, таких как элементы, атрибуты, тексты и т.д..):
Добавляя к ответу @icza с правильной статистикой для BaseX, я хотел бы добавить несколько вещей:
Верхние ограничения на количество файлов, узлов и т.д. Всегда применяются к каждой базе данных. Это означает, что вы можете просто создать другую базу данных, чтобы обойти эти ограничения. Во многих ситуациях может быть даже полезно разбить большую базу данных на несколько небольших, поскольку блокировка выполняется на уровне базы данных, то есть, если у вас есть одна большая база данных и вы пишете, все заблокировано. Если вы разделите его на несколько баз данных, только небольшая часть будет заблокирована.
Поскольку XQuery может легко обращаться к нескольким базам данных в одном запросе, разделенные базы данных могут быть легко объединены в ваши запросы.