How to insert into documentDB from Excel file containing 5000 records?
我有一个最初约有200行的Excel文件,并且能够将excel文件转换为数据表,并且所有内容均正确插入到documentdb中。
Excel文件现在具有5000行,并且在插入30-40条记录后不会插入,并且所有行的其余部分未插入到documentdb
中
我发现了一些如下异常。
Microsoft.Azure.Documents.DocumentClientException: Exception:
Microsoft.Azure.Documents.RequestRateTooLargeException, message:
{"Errors":["Request rate is large"]}
我的代码是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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; } } |
我做错什么了吗?
任何帮助都是非常可观的。
更新:
截至2015年4月4日,DocumentDB已发布了一种数据导入工具,该工具支持JSON文件,MongoDB,SQL Server和CSV文件。您可以在这里找到它:http://www.microsoft.com/zh-cn/download/details.aspx?id=46436
在这种情况下,您可以将Excel文件另存为CSV,然后使用数据导入工具批量导入记录。
原始答案:
DocumentDB Collections每秒配置2,000个请求单位。重要的是要注意-限制是按请求单位而不是请求来表示的;因此写较大的文档比较小的文档要花更多的钱,而扫描比索引搜索要贵。
您可以通过检查SDK返回的
耗尽已配置的吞吐量时,将引发RequestRateTooLargeException。一些解决方案包括:
-
退回带有短暂延迟的内容,并在遇到异常时重试。建议的重试延迟包含在
x-ms-retry-after-ms HTTP响应标头中。另外,您也可以在短时间内批量处理请求 - 使用懒惰索引来加快摄取速度。 DocumentDB允许您在集合级别指定索引策略。默认情况下,索引在每次写入集合时同步更新。这使查询能够遵循与文档读取相同的一致性级别,而不会延迟索引"追赶"。惰性索引可用于分摊较长时间对内容进行索引所需的工作。但是,需要注意的重要一点是,启用延迟索引后,无论为DocumentDB帐户配置的一致性级别如何,查询结果最终都是一致的。
- 如前所述,每个集合的上限为2,000 RU-您可以通过在多个集合和容量单位之间分片/分区数据来提高吞吐量。
- 删除空集合以利用所有预配置的吞吐量-根据预配置的容量单位(CU)的数量和创建的集合的数量,为在DocumentDB帐户中创建的每个文档集合分配保留的吞吐量。单个CU可提供2,000个请求单位(RU),最多支持3个集合。如果仅为CU创建一个集合,则整个CU吞吐量将可用于该集合。创建第二个集合后,第一个集合的吞吐量将减半并分配给第二个集合,依此类推。为了使每个馆藏的吞吐量最大化,我建议馆藏的容量单位为1:1。
参考文献:
-
DocumentDB性能提示:
http://azure.microsoft.com/blog/2015/01/27/performance-tips-for-azure-documentdb-part-2/ -
DocumentDB限制:
http://azure.microsoft.com/zh-CN/documentation/articles/documentdb-limits/