如何从包含5000条logging的Excel文件插入到documentDB中?

我有一个Excel文件,最初有大约200行,我能够将Excel文件转换为数据表,一切正确插入到documentdb中。

Excel文件现在有5000行,在插入30-40条logging后没有插入,其余所有行都没有插入到documentdb中

我发现一些例外如下。

Microsoft.Azure.Documents.DocumentClientException:exception:Microsoft.Azure.Documents.RequestRateTooLargeException,消息:{“错误”:[“Request rate is large”]}

我的代码是:

Service service = new Service(); foreach(data in exceldata) //exceldata contains set of rows { var student = new Student(); student.id= ""; student.name = data.name; student.age = data.age; student.class = data.class; student.id = service.savetoDocumentDB(collectionLink,student); //collectionlink is a string stored in web.config students.add(student); } Class Service { public async Task<string> AddDocument(string collectionLink, Student data) { this.DeserializePayload(data); var result = await Client.CreateDocumentAsync(collectionLink, data); return result.Resource.Id; } } 

我做错了什么? 任何帮助将是非常可观的。

更新

截至4/8/15,DocumentDB已经发布了一个数据导入工具,它支持JSON文件,MongoDB,SQL Server和CSV文件。 你可以在这里find它: http : //www.microsoft.com/en-us/download/details.aspx?id=46436

在这种情况下,您可以将Excel文件保存为CSV格式,然后使用数据导入工具批量导入logging。

原始答案:

DocumentDB Collections每秒调配2,000个请求单元。 需要注意的是 – 限制是以请求单位而不是请求来表示的, 所以写更大的文档比更小的文档花费更多,扫描比索引更昂贵。

您可以通过检查由SDK返回的ResourceResponse / FeedResponse对象中的x-ms-request-charge HTTP响应头或FeedResponse属性来测量任何操作(CRUD)的开销。

当您耗尽configuration的吞吐量时,会引发RequestRateTooLargeException。 一些解决scheme包括

  • 退后一段时间,只要遇到exception就重试。 build议的重试延迟包含在x-ms-retry-after-ms HTTP响应标头中。 或者,您也可以简单地批量请求
  • 使用懒惰索引更快的摄取率。 DocumentDB允许您在集合级别指定索引策略。 默认情况下,每次写入集合时都会同步更新索引。 这使得查询能够遵守与文档读取相同的一致性级别,而没有任何延迟,以便“追赶”索引。 懒惰的索引可以用来分摊在较长时间内对内容进行索引所需的工作。 但是,需要注意的是,启用懒惰索引时,无论为DocumentDB帐户configuration的一致性级别如何,查询结果最终都将保持一致。
  • 如上所述,每个集合都有2,000RU的限制 – 您可以通过在多个集合和容量单位之间分割/分割数据来提高吞吐量。
  • 删除空集合以利用所有configuration的吞吐量 – 根据configuration的容量单位(CU)数量和创build的集合数量,为在DocumentDB帐户中创build的每个文档集合分配保留吞吐量容量。 单个CU提供2,000个请求单元(RU)并支持最多3个集合。 如果仅为CU创build一个集合,则整个CU吞吐量将可用于集合。 一旦创build第二个集合,第一个集合的吞吐量将被减半,并提供给第二个集合,依此类推。 为了最大限度地提高每个集合的可用吞吐量,我build议容量单位的数量是1:1。

参考文献:

  • DocumentDB性能提示: http : //azure.microsoft.com/blog/2015/01/27/performance-tips-for-azure-documentdb-part-2/
  • DocumentDB限制: http : //azure.microsoft.com/en-us/documentation/articles/documentdb-limits/