我们正在开发一个可以为数千名用户扩展的移动应用程序,并且我们使用 Azure 搜索作为我们的主要存储。根据Azure 定价模型,标准计划的查询限制设置为每秒/每单位 15 个查询。有了这些限制,并且有了一个可以与数千个并发用户一起扩展的系统,我们很快就会达到限制。
在我们的情况下,Azure 搜索在扩展数千个并发用户时不是正确的选择吗?DocumentDB 会是更好的选择吗?
谢谢!
我们正在开发一个可以为数千名用户扩展的移动应用程序,并且我们使用 Azure 搜索作为我们的主要存储。根据Azure 定价模型,标准计划的查询限制设置为每秒/每单位 15 个查询。有了这些限制,并且有了一个可以与数千个并发用户一起扩展的系统,我们很快就会达到限制。
在我们的情况下,Azure 搜索在扩展数千个并发用户时不是正确的选择吗?DocumentDB 会是更好的选择吗?
谢谢!
有趣的是,您将 Azure 搜索用作主要存储,因为它不是为数据库引擎而构建的。该存储专门用于搜索内容(典型的模式是将 Azure 搜索与数据库引擎结合使用,例如 SQL 数据库或 DocumentDB),使用结果指向数据库中的“记录系统”内容.
搜索的比例专门针对您的用户将生成的全文搜索查询。Azure 搜索按单元扩展,每个单元每秒提供 15 次搜索。因此,如果您购买更多搜索单元,您的扩展速度可以远远超过 15/秒。
但是:不要将此与数据库引擎查询混淆。您询问了 DocumentDB,因此以它为例:您可以使用该数据库引擎进行远远超过 15/秒的查询,并且可以独立扩展。任何基于 VM 的数据库解决方案、SQL 数据库等也是如此——它们都可以扩展。
这实际上归结为您是否需要大量全文搜索。如果是这样,那就太好了 - 只需将 Azure 搜索扩展到您需要的单位数量,即可处理您的请求流量。如果您可以执行更多特定于数据库的搜索,而无需通过 Azure 搜索来驱动您的请求,那么您就不需要进行太多的横向扩展,并且可以利用本机数据库查询功能。
在 David 的出色回答中添加一件事 - 如果您的方案主要是搜索驱动的,并且您不需要为搜索以外的目的存储数据并且可以最终保持一致,那么使用 Azure 搜索作为主存储可能会很好。
此外,Azure 搜索每秒 15 个请求的查询吞吐量只是一个大概——它既不是硬限制也不是承诺。根据您的数据和查询复杂性,实际吞吐量可能显着(很多倍)高或低。