Sitecore XP 8 中 Analytics DataAdapterManager 的替代品是什么?

What is the alternative to the Analytics DataAdapterManager in Sitecore XP 8?

我们正在从 7.0 升级到 Sitecore XP 8。我们用来从给定起始路径获取 "most visited items" 的一段代码使用 Sitecore.Analytics.Data.DataAccess.DataAdapters 命名空间来访问 DataAdapterManager class。在 Sitecore XP 8 中,它被移动到 Sitecore.Analytics.Reporting.Data.DataAccess.DataAdapters 命名空间,但现在已过时。

这是现在的代码:

/// <summary>
/// Get topCount most visited items, whose path starts with startPath
/// </summary>
/// <param name="topCount">Max number of items to retrieve</param>
/// <param name="startPath">Url path of the items</param>
/// <returns>Collection of top visited items</returns>
public static IEnumerable<Item> GetMostVisitedItems(int topCount, string startPath)
{
    var sqlQuery = "select top " + topCount.ToString(CultureInfo.InvariantCulture) + " "
                            + "{0}ItemId{1} "
                            + "from {0}Pages{1} "
                            + (string.IsNullOrWhiteSpace(startPath) ? "" : "where {0}Url{1} like '" + startPath + "%' ")
                            + "group by {0}ItemId{1} "
                            + "order by COUNT({0}PageId{1}) desc ";
    var topPageItemIds = DataAdapterManager.Sql.ReadMany<Guid>(sqlQuery, reader => DataAdapterManager.Sql.GetGuid(0, reader));

    return topPageItemIds.Select(itemId => Sitecore.Context.Database.GetItem(new ID(itemId))).Where(item => item != null);
}

今后是否有一种新的首选方式来访问相同的信息?

更新: 除了下面 Dmytro Shevchenko 提供的重要信息外,我还在 Accessing Current Visitor Information 页面的 LaunchSitecore.net 网站上找到了一些非常好的入门信息.这特定于当前访问者的会话帮助数据,但它有助于指出用于分析的 Sitecore classes 和命名空间。

与旧的 DMS 2.0 相比,Sitecore xDB 以不同的方式处理数据。以下是新架构的概述:

https://doc.sitecore.net/en/Products/Sitecore_Experience_Platform/xDB_overview/Architecture_overview.aspx

您请求的数据现在实际存储在收集数据库中 (MongoDB)。可能有一些方法可以发出直接的 MongoDB 查询来获取您需要的数据。但出于多种原因,这不是您应该做的。对于自定义查询,您应该考虑在报告数据库 (RDB) 中设计您自己的 fact/dimension 表,以及创建您自己的聚合管道处理器。

https://doc.sitecore.net/products/sitecore%20experience%20platform/xdb%20configuration/walkthrough%20creating%20a%20rate%20page%20custom%20aggregation

虽然有一些默认的事实表和维度表,因此您可以考虑将它们用作数据源。

关于实际对 RDB 发出查询,请查看 Sitecore.Analytics.Reporting.config 中的以下配置节点:

reporting/dataProvider

您可以通过 Sitecore Factory 实例化它:

var provider = (Reporting.ReportDataProviderBase) Factory.CreateObject("reporting/dataProvider", true);

然后发出这样的查询:

var response = provider.GetData("reporting", "YOUR QUERY HERE", Reporting.CachingPolicy.WithCacheDisabled);

如果您有分布式(尤其是基于云的)设置,请确保执行此代码的服务器可以直接访问报告服务器或针对远程报告服务发出查询:

https://doc.sitecore.net/en/Products/Sitecore_Experience_Platform/xDB_configuration/Configure_a_reporting_service_server.aspx