跳到主要内容

数据查询支持与管理

数据查询与管理

哪些查询语言 Mendix 支持?

Mendix 提供了多种方法来指定要检索的数据:

  • Mendix Studio Pro 提供通过表达式编辑器以可视化方式指定查询需求
  • 要检索特定对象或一组相关对象,可以使用 XPath 表达式
  • 对于将多个实体聚合并合并到单个结果集中的报告需求而言, Mendix 提供 OQL 查询
  • 如果您想在应用程序数据库上使用 SQL 查询,可以使用 Java API
  • 为了与其他应用程序或数据分析工具共享数据, Mendix 为域模型中的实体提供开箱即用的 OData 支持

您可以在以下部分中找到更多详细信息。

XPath的

XPath 是一种易于使用的查询语言,可用于检索特定对象。您可以使用它来获取要在页面中显示或编辑的对象,以及通过微流修改这些对象。

使用 XPath,您可以定义表达式来过滤您感兴趣的对象,并且可以使用关联来检索和过滤相关对象。

XPath 自动确保您在实体上定义的所有访问规则都得到应用。

欲了解更多详情,请咨询 XPath的 ,在 Mendix Studio Pro 指南.

OQL

- Mendix 对象查询语言 (OQL) 是一种基于 SQL 的关系查询语言。OQL 相对于 SQL 的主要优势在于,OQL 使用模型中使用的实体和关联名称,而不是实际的数据库表名称。

OQL 可以使用预定义的关系(关联)轻松地连接对象,而无需计算应耦合哪些列。尽管存在这些差异,但许多 SQL 关键字也可以在 OQL 中使用。

OQL 主要用于报告,在对某些属性进行分组时需要聚合函数。使用 OQL 的另一个原因是定义自定义安全表达式,您需要手动定义这些表达式。在某些情况下,如果您使用 OQL 自行处理安全性,而不是使用现成的 XPath 安全性,则查询速度可能会更快。

有关详细信息,请参阅 OQL ,在 Mendix Studio Pro 指南.

SQL

所有应用程序数据都存储在关系数据库中。在 Mendix 云,这是 PostgreSQL,但也有其他选项,具体取决于您的部署环境。

Mendix 提供 Java API 来直接与底层关系数据库交互。通过 Mendix Java API,您可以使用 Java JDBC 运行 SQL 查询并执行存储过程。这为您提供了一种非常强大的数据使用方式,但需要了解关系数据库系统和 SQL。您可以使用数据库供应商特定的扩展,但这会限制您的应用程序向其他数据库的可移植性。

有关访问 JDBC API 的更多信息,请访问 Mendix,请参阅 数据存储.e​​xecuteWithConnection.

数据

OData 在 REST 协议之上提供了通用的数据访问和查询接口。它使大量第三方工具能够以受控的方式访问您的数据。这些工具包括基本查询工具(如 LINQPad)、电子表格(如 MS-Excel)以及商业智能和分析工具(如 PowerBI 和 R)。通过提供通过 OData 的访问权限,您数据上定义的所有验证和安全约束以及由 Mendix 运行时保证应用。这意味着 OData 是一种向外部方提供数据访问的安全方式。

尽管 OData 是一项提供数据查询和操作的广泛标准, Mendix 目前仅提供查询功能。目前,OData 在 Mendix 针对只读分析用途 Mendix 第三方应用程序的数据。

有关使用 OData 的更多信息 Mendix,见 将数据转化为洞察力 Mendix OData 支持 和 使用 R 从数据中获取见解 Mendix 应用 博客帖子。

如何优化我的查询?

- Mendix 平台提供了大量现成的优化功能。例如,当通过 XPath 检索页面数据时, Mendix 将自动一次性检索页面上使用的所有相关信息。为此使用了一个称为架构的概念。架构告诉数据检索组件不仅要从数据库中检索一组特定的对象,还要在结果中包含特定的关联实体。

除了优化查询之外, Mendix 还优化了查询,避免了查询的需要。例如,在 Web 客户端中,对象被缓存并在多个页面中重复使用。在 Mendix 运行时使用页面结构知识来确定是否需要将对象从运行时发送到客户端。

除了这些现成的优化之外,您还可以采取一些步骤来优化查询:

  • 仅检索您需要的内容,并确保查询中不包含不需要的属性或对象
  • 确保你有 指标 在以下方面:
    • 定期 搜索 或过滤
    • 用于 排序

在某些情况下(尤其是当您有大量对象时),使用特定于数据库的索引会很有帮助。您可以通过 JDBC API 创建这些索引,如上文所述 SQL.

如何从现有数据库迁移数据?

您可能希望使用来自旧非Mendix 在您的新 Mendix 应用程序。如果您需要一次性迁移到您的 Mendix 应用程序,您有下面描述的选项。

数据库复制模块

数据库复制 模块可从 Mendix Marketplace 可以连接到大量不同类型的数据库。它将向您显示现有数据库中存在哪些数据结构。然后,您可以(通过网页)定义要迁移到您的数据库中的数据 Mendix 数据库。您还可以定义如何将数据从现有列映射到实体属性。

数据库连接器

数据库连接器 模块为您提供微流活动,以便在支持 JDBC 的任何数据库上运行查询。这意味着您可以创建微流来定义您想从现有数据库中获取哪些数据以及如何将这些数据转换为新数据 Mendix 应用程序。

从现有数据库初始化您的应用数据库

当部署 Mendix 首次使用应用程序时,您可以选择使用现有 Mendix 应用程序。此功能的主要目的是实现从一个环境迁移到另一个环境(例如,从 Mendix 云到私有云)。一旦您将非Mendix 数据入 Mendix 数据,您可以使用该数据初始化一个新的 Mendix 应用程序。这将适用于来自同一供应商的数据库,也适用于从一个数据库供应商移动到另一个数据库供应商。这意味着您可以使用工作站上运行的 PostgreSQL 数据库中的数据初始化 Azure SQL 数据库。

欲了解更多信息,请参阅 如何迁移您的 Mendix 数据库备份 ,在 Mendix 文档。

如何使用现有的 SQL 数据库 Mendix?

您可以使用数据库连接器对您正在使用的任何数据库运行 SQL 操作。要了解有关使用现有 SQL 数据库的更多信息,请参阅 Mendix,参见章节 如何 Mendix 支持直接访问外部 SQL 数据库吗? in 外部数据.

API 的作用 Mendix 是否提供扩展数据存储行为?

- Mendix 运行时提供 Java API,可以扩展数据存储行为。 Mendix 通过允许您通过常规微流程活动提供这些扩展,确保您团队中的任何人都可以使用这些扩展。有关此扩展功能的更多信息 Mendix,参见章节 什么样的 API Mendix 暴露? in 开放性(API 和 SDK).

关于数据存储扩展性,主要的 Java API 提供以下功能:

如何控制连接池?

您可以使用自定义设置配置每个运行时与数据库的并发数据库连接数 ConnectionPoolingMaxActive.

 

有关其他相关池化设置,请参阅 产品定制 ,在 Mendix Studio Pro 指南.

 

选择你的语言