Hi, baseX team. I have some problems of loading xml files into the
database of BaseX. I am comparing the time to load xml files into
database, there are 2 ways to load: Loading all the folder into the
database and Loading each file into the database. The time to load all
the folder and the time to load each file have a big difference. The
time to load all the folder into the datebase is 84ms, whereas the time
to load each file into the database is 912 ms. I have written the 2 ways
to load in C#. The following code is to load all the folder into the
datebase:
private void CreateDBAndLoadDirectory(string directoryPath)
{
this.contextDirectory = new Context();
this.serverDirectory = new
org.basex.BaseXServer(this.contextDirectory);
Set.execute("createfilter", "*" + this.fileExtension,
this.contextDirectory);
Set.execute("CACHEQUERY", true, this.contextDirectory);
Set.execute("SERIALIZE", false, this.contextDirectory);
Set.execute("CHOP", true, this.contextDirectory);
Set.execute("DBPATH", this.dbPath, this.contextDirectory);
new CreateDB(this.dbDirectory,
directoryPath).execute(this.contextDirectory);
}
And the following code is to load each file into the database:
private void CreateDBAndLoadFiles(string directoryPath)
{
this.contextFile = new Context();
this.serverFile = new org.basex.BaseXServer(this.contextFile);
Set.execute("CACHEQUERY", true, this.contextFile);
Set.execute("SERIALIZE", false, this.contextFile);
Set.execute("CHOP", true, this.contextFile);
Set.execute("DBPATH", this.dbPath, this.contextFile);
new CreateDB(this.dbFile).execute(this.contextFile);
string[] fileList = Directory.GetFiles(directoryPath, "*" +
this.fileExtension,SearchOption.AllDirectories);
foreach (string fileName in fileList)
{
string path = fileName.Substring(this.otxPath.Length + 1);
new Add(path, fileName).execute(this.contextFile);
new Optimize().execute(this.contextFile);
}
}
I don't know if I have made mistakes in these codes or not? I want to
ask about the fastest way to load each file into the database.