FastReport中国社区FastReport联系电话 联系电话:023-68661681

如何在 FastReport .NET 中建立与 Apache Ignite 的连接

来源:   发布时间:2025-04-09   浏览:次

如何在 FastReport .NET 中建立与 Apache Ignite 的连接

Apache Ignite 是一个分布式内存计算平台,能够在内存中处理和存储大量数据,以实现高性能和可扩展性。

在本文中,我们将探讨如何在FastReport .NET中配置与 Apache Ignite 的连接。您将学习通过代码和报表设计器连接插件的必要步骤。遵循我们的建议,您将能够有效地将 Apache Ignite 用作 FastReport .NET 中报表的数据源。

实现的连接 Apache Ignite 的插件是基于 Ignite.NET Thin Client 的轻量级解决方案。


Apache Ignite插件功能

  • 连接到 Apache Ignite 集群:该插件允许您连接到集群中的一个或多个节点。节点地址以“host:port”格式指定,并以逗号分隔。
  • 使用缓存:它支持以键值模式和 SQL 表的形式与缓存进行交互。
  • 身份验证:如果在集群配置中启用了 authenticationEnabled 选项,则插件支持身份验证。
  • 处理各种数据类型:该插件确保正确处理不同数据类型,包括自定义对象。

Apache Ignite 实现的特点

Ignite 提供了两种逻辑表示数据的方式:键值缓存和 SQL 表(模式)。尽管存在差异,但这些表示方式是等效的,并且可以反映相同的数据。

在 Ignite 中,SQL 表和键值缓存是表示相同内部数据结构的两种等效方式。可以通过键值 API、SQL 运算符或两者同时访问数据。

缓存是键值对的集合,可通过键值 API 访问。Ignite 中的 SQL 表类似于传统数据库管理系统中的表,但有一些额外的约束。例如,每个 SQL 表必须有一个主键。

具有主键的表可以表示为键值缓存,其中主键列充当键,表中的其他列是对象(值)的字段。

Apache Ignite 实现的特点

这两种数据表示形式之间的主要区别在于访问方式。使用键值缓存,您可以使用支持的编程语言处理对象。另一方面,SQL 表支持标准 SQL 语法,这在从现有数据库迁移数据等情况下非常有用。


如何在项目中连接插件

要使用该插件,您必须首先构建位于以下位置的项目:   ..\Extras\Core\FastReport.Data\FastReport.Data.Ignite。之后,需要注册该插件。注册有两种方式。

方法 1. 使用代码。

复制以下代码并将其粘贴到您的项目中。启动应用程序时只需执行一次即可。

FastReport.Utils.RegisteredObjects.AddConnection(typeof(IgniteDataConnection));


方法二、使用报表设计器。
 
在设计器中连接连接器,在Ribbon界面中进入“File|Settings...”菜单(或在标准界面中进入“View|Settings...”菜单),在打开的窗口中选择“Plugins”标签,添加插件的内置.dll,如下图所示。

通过报表设计器进行插件连接的窗口

添加插件后,需要重新启动FastReport .NET设计器。


如何在设计器中连接数据源

要创建与 Apache Ignite 的连接,请转到“数据”菜单并选择“添加数据源”。  

添加数据源

在打开的窗口中,单击“新建连接”按钮,然后从连接类型的下拉列表中,选择“Apache Ignite 连接”选项。在出现的窗口中,指定节点的地址以及用户名和密码(如果需要)。

配置 Apache Ignite 连接

如果连接成功,下一步将显示上一步指定的节点所包含的表(缓存)列表:

数据连接向导

使用插件中的缓存时的差异

该插件支持使用作为键值对和 SQL 表创建的缓存。

在 Apache Ignite 中创建和配置缓存的方法直接影响字段的组成和数据类型的表示。根据所选方法(例如,使用带有 [QuerySqlField] 属性的类、通过 QueryEntity 进行编程定义或使用动态数据),结果可能会有所不同。这涉及可用字段列表及其数据类型。

以下代码示例将使用来自官方 Apache Ignite 功能示例的代码片段。

让我们打开下载的档案并导航到以下文件夹:

..\apache-ignite-2.17.0-bin\platforms\dotnet\examples\Thin

从这些示例中,我们将使用自定义类 Organization,它表示组织的数据模型。此类包含以下属性:

  • 名称:组织的名称。它标有 [QuerySqlField(IsIndexed = true)] 属性,允许它在 SQL 查询中使用,并创建索引以加快搜索速度。
  • 地址:组织的地址,表示为 Address 类型的嵌套对象。由于 [QuerySqlField] 属性,这也可用于 SQL 查询。
  • Type:组织的类型(例如商业或非营利组织),由枚举 OrganizationType 表示。
  • LastUpdated:指示组织数据最后更新时间的时间戳。

该类的完整代码可以在以下文件夹中找到:

..\apache-ignite-2.17.0-bin\platforms\dotnet\examples\Shared\Models


使用 QueryEntity 创建缓存

QueryEntity 是一个 Apache Ignite 组件,它允许您以编程方式定义缓存的数据结构(模式)并手动指定字段及其类型。

对于带有元数据的缓存(QueryEntity),支持检索字段列表及其数据类型的操作。自定义数据类型按以下方式处理:

  • 字段列表仅显示标有[QuerySqlField]属性的字段。
  • 字段以 data_type.field_name 格式呈现。 

例如,如果在设置过程中创建缓存,如下所示:

var organizationCache = ignite.GetOrCreateCache<int, Organization>( new CacheClientConfiguration("dotnet_cache_query_organization", new QueryEntity(typeof(int), typeof(Organization))));

然后,当连接到 FastReport 中已准备好的 Apache Ignite 实例时,字段列表将仅包含来自 Organization 类的标有  [QuerySqlField]属性的字段。

具有 [QuerySqlField] 属性的字段

但是,查看数据时,将显示缓存中的所有字段:

显示所有字段


不使用 QueryEntity 创建缓存  

如果在设置过程中创建缓存时未使用QueryEntity,则所有字段的数据类型将被定义为字符串。示​​例代码:  

ICacheClient<int, Organization> cache = ignite.GetCache<int, Organization>("dotnet_cache_put_get");

在字段列表中,所有可用字段都会显示,无论是否存在[QuerySqlField]属性。这是创建缓存的第二种方法。

即使没有 [QuerySqlField] 属性,也显示所有可用字段

使用以 SQL 表形式创建的缓存

最后,让我们考虑一下使用缓存的第三种方法。以下是创建缓存并将其填充为 SQL 表的示例:

cache.Query(new SqlFieldsQuery( "CREATE TABLE IF NOT EXISTS city (id LONG PRIMARY KEY, name VARCHAR)
WITH \"template=replicated\"")).GetAll();   const string addCity = "INSERT INTO city (id, name) VALUES (?, ?)"; cache.Query(new SqlFieldsQuery(addCity, 1L, "Forest Hill")); cache.Query(new SqlFieldsQuery(addCity, 2L, "Denver")); cache.Query(new SqlFieldsQuery(addCity, 3L, "St. Petersburg"));

对于这样的缓存,元数据(QueryEntity)包含有关每个字段的数据类型的信息。

城市缓存中的字段列表
显示城市缓存数据

在 Apache Ignite 缓存中,数据存储时可能没有明确定义的字段名称。例如:

var cache = ignite.GetOrCreateCache<int, object>("put-get-example");   int key = 1; var val = new Address("1545 Jackson Street", 94612); cache.Put(key, val);   int key1 = 2; var val1 = 942.28956; cache.Put(key1, val1);   int key2 = 3; var val2 = "test String"; cache.Put(key2, val2);

当连接到 FastReport 中的 Apache Ignite 实例(使用上面示例中的代码)时,您将看到以下结果。

缓存中以键值形式创建的字段列表。

在此示例中:

  • 自定义类 Address 中的 Street 和 Zip 字段具有名称,因为它们是在类的结构中定义的。
  • 诸如数字 942.28956 或字符串“测试字符串”之类的值没有名称,因为它们作为简单的键值对象添加到缓存中。

对于缺少名称的字段,将生成唯一标识符。

唯一字段名称

结论

我们已经介绍了如何在 FastReport .NET 中建立与 Apache Ignite 的连接。通过遵循概述的步骤,您将能够集成这些系统并充分利用 Apache Ignite 作为报告的数据源。

Apache Ignite 提供快速的数据访问和处理,而 FastReport .NET 则支持创建功能强大的报告。它们的集成为数据分析和可视化开辟了新的机会。

我们希望本文对您有所帮助,并帮助您在 FastReport .NET 项目中有效地使用 Apache Ignite。

_________________________________________________________

关于慧都科技:

慧都科技是专注软件工程、智能制造、石油工程三大行业的数字化解决方案服务商。在软件工程领域,我们提供开发控件、研发管理、代码开发、部署运维等软件开发全链路所需的产品,提供正版授权采购、技术选型、个性化维保等服务,帮助客户实现技术合规、降本增效与风险可控。慧都科技是FastReports的在中国区的合作伙伴,FastReports作为图表报表领域的优秀产品,帮助企业实现轻松构建高性能的表格及图表。

下载或体验FastReport产品联系在线客服咨询,或拨打产品热线:023-68661681

欢迎加入FastReport技术QQ群:1041260168,与更多小伙伴探讨报表开发技能。

本站文章除注明转载外,均为本站原创或翻译
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果
转载请注明:文章转载自:FastReport控件中文网 [https://www.fastreportcn.com/]
本文地址:https://www.fastreportcn.com/post/3733.html

联系我们
  • 重庆总部 023-68661681
购买
  • sales@evget.com
合作
  • business@evget.com


扫码咨询
电话咨询
023-68661681
返回
顶部