我正在编写一个REST API,需要与我们组织的ActiveDirectory提供集成服务,具体是查询用户和组数据,然后在API中提供自动完成字段查询的端点。
我们组织的ActiveDirectory非常大,约有130K个用户和组对象的组合。
查询所有这些对象并将它们存储在我们当前的后备存储(MongoDB)中需要大约40分钟。
我们决定检查是否有跳过使用Mongo的选项,并将所有查询的AD对象存储在Web API内存中。
查看SO中的其他问题后,我意识到Singleton不起作用,因为存储在其中的数据每次重置IIS应用程序池时都会丢失,然后API无法提供数据,这是不能发生的40分钟。
我还查看了this问题,该问题涉及命名空间
我的问题是,是否有其他解决方案可以将AD中的数据存储在Web API内存中。我们目前希望避免使用持久存储(关系型或文档数据库)来保存信息,但如果没有可行的解决方案出现,我们可能会坚持使用Mongo(除非提供更好的存储方式)。
我们组织的ActiveDirectory非常大,约有130K个用户和组对象的组合。
查询所有这些对象并将它们存储在我们当前的后备存储(MongoDB)中需要大约40分钟。
我们决定检查是否有跳过使用Mongo的选项,并将所有查询的AD对象存储在Web API内存中。
查看SO中的其他问题后,我意识到Singleton不起作用,因为存储在其中的数据每次重置IIS应用程序池时都会丢失,然后API无法提供数据,这是不能发生的40分钟。
我还查看了this问题,该问题涉及命名空间
System.Runtime.Caching
。但是,由命名空间提供的MemoryCache
也会在重置IIS应用程序池时丢失所有数据。我的问题是,是否有其他解决方案可以将AD中的数据存储在Web API内存中。我们目前希望避免使用持久存储(关系型或文档数据库)来保存信息,但如果没有可行的解决方案出现,我们可能会坚持使用Mongo(除非提供更好的存储方式)。
ConcurrentDictionary
- Tomer W