Rip*_*ash 5 c# linq iqueryable azure elasticsearch
我正在试图弄清楚如何编写一个可以从多个源(在本例中为Azure Table,Azure Blob和ElasticSearch)中提取和组合数据的IQueryable数据源.我真的很难弄清楚从哪里开始这个.
我们的想法是,Web服务(在本例中为Asp.Net Web Api)可以呈现可查询的OData接口,但是当它被查询时,它会根据请求从多个源中提取数据.因此,大型查询可能会触及索引服务(ElasticSearch),该服务不一定具有完整对象可用,但是获取单个对象的调用将直接转到Azure表.但从服务用户的角度来看,它始终只是访问相同的数据源.
虽然我想只使用索引作为我们的搜索服务而将表作为我们的备份,但我有一个设计要求,它必须从多个来源提取数据,这使整个事情变得非常复杂.
我想知道是否有人对此有任何指导或可以指出我正确的技术.我看到的一些重大问题是:
以下是我正在使用的技术的简要概述:
首先,您需要将数据访问与Web API项目分开。Web API 项目只是一个接口,因此请将其从等式中删除。无论是 Web API 还是 ASP.NET 网页、MVC 解决方案、WPF 桌面应用程序等,问题的解决方案都应该是相同的。
然后您可以专注于数据问题。您需要某种形式的“路由器”来根据做出决定的参数来确定数据源。在这种情况下,您正在谈论 1 个项目 = azure 和超过 1 个项目 - 当超过 1 个项目时,地图会减少(我会将规则设置为策略或类似的规则,这样如果您发现 1 与 2+ 则可以交换)这不是改变路由的好条件)。
然后解决每种方法的数据访问问题。
系统作为一个整体。
一点要小心。不要尝试混合所有类型的持久性,因为通用的“我可以提取数据或 blob 或{在此命名您最喜欢的其他持久性存储}”通常最终会变成垃圾箱。
归档时间: |
|
查看次数: |
1477 次 |
最近记录: |