如图所示,我正在从文件结构中插入数据。
文件夹-->子文件夹-->子文件夹-->文件
以前,此数据存储在 SQL Server 中。将所有这些数据插入 SQL 所需的时间为 26 秒,而将相同的数据插入 MongoDB 则需要 2500 秒(无法承受)。
该文件是一个 xml 文件。文件夹/子文件夹详细信息存储在一个表中,文件详细信息存储在另一个表中,文件中的一些标签存储在另一个表中。我的代码递归地检查和存储数据。
插入操作同时插入到 4 个集合中(类似于 SQL 插入期间的 4 个表)。
我不想使用多于一台服务器,因为我正在使用一台服务器用于 SQL。除了 MongoDbs _id 字段索引(这是隐式的)之外,我也没有显式地进行任何索引
请找到以下代码-
在 SQL 中:
public int AddRowToFolder(string fRelativePosition,
string flabel, string fPhysicalName, int fParentId, int fViewOrder, EntityState fViewState,
EntityProtection fProtection)
{
//Increment the Folder row count by 1.
folderRowCount++;
try
{
folderDataRow = folderDataSet.Tables[0].NewRow();
//Adding the values to the Folder Dataset.
folderDataRow[Convert.ToInt32(FolderColumns.RelativePosition)] = fRelativePosition;
folderDataRow[Convert.ToInt32(FolderColumns.Label)] = flabel;
folderDataRow[Convert.ToInt32(FolderColumns.PhysicalName)] = fPhysicalName;
folderDataRow[Convert.ToInt32(FolderColumns.ParentId)] = fParentId;
folderDataRow[Convert.ToInt32(FolderColumns.ViewOrder)] = fViewOrder;
folderDataRow[Convert.ToInt32(FolderColumns.ViewState)] = fViewState;
folderDataRow[Convert.ToInt32(FolderColumns.Protection)] = fProtection;
folderDataSet.Tables[0].Rows.Add(folderDataRow);
}
return folderRowCount;
}
在 MongoDB 中:
public int AddRowToFolder(string fRelativePosition,
string flabel, string fPhysicalName, int fParentId, int fViewOrder, EntityState fViewState,
EntityProtection fProtection)
{
//Increment the Folder row count by 1.
folderRowCount++;
try
{
BsonDocument doc = new BsonDocument();
//Adding the values to the Folder Dataset.
doc.Add(FolderColumns.RelativePosition.ToString() , fRelativePosition);
doc.Add((FolderColumns.Label).ToString(), flabel);
doc.Add((FolderColumns.PhysicalName).ToString(), fPhysicalName);
doc.Add((FolderColumns.ParentId).ToString(), fParentId);
doc.Add((FolderColumns.ViewOrder).ToString(),fViewOrder);
doc.Add((FolderColumns.ViewState).ToString(),fViewState);
doc.Add((FolderColumns.Protection).ToString(), fProtection);
foldersCollection.Insert(doc, WriteConcern.Unacknowledged);
}
return folderRowCount;
}
我正在使用的连接字符串是:
DbConnString = "mongodb://localhost"
与 SQL 相比,MongoDB 写入操作预计会更快,但我没有看到。有人可以帮忙吗?