将 Anylogic 8.6 连接到 redshift 数据库

Connecting Anylogic 8.6 to a redshift database

我有兴趣将 Anylogic 8.6 中的模型链接到 Redshift 数据库中的 table/view。这将使模型能够自动获取新数据来定义我们的人口和 运行,从而实现更好的运营决策(即我们期待明天发生什么,明天总是在变化)。

此版本具有与 excel 电子表格或 SQL 服务器数据库的本机连接。在 FAQ 中有一个链接到 MySQL 的分步指南。我已经将本指南改编为适用于 Redshift,但我不太清楚如何让连接真正启动,或者如何测试它是否真的有效。

这是我所做的:

  1. 已从以下位置下载最新的 JDBC 驱动程序:https://docs.aws.amazon.com/redshift/latest/mgmt/configure-jdbc-connection.html
  2. 我已将所有驱动程序文件提取到模型的文件夹中。
  3. 我在 AnyLogic 中打开模型,选择 'Projects' 视图并在 'Dependencies' 选项卡上导入驱动程序 JAR 文件(引用文件 RedshiftJDBC42-no-awssdk-1.2.50.1077.jar)
  4. 转到 Main 的 'Advanced Java' 属性并在导入部分键入以下行:import com.amazon.redshift.jdbc42.Driver;。模型 compiles/builds 没有错误。

我不确定下一步该做什么。

我的下一步是什么?还是我在这里浪费时间? Redshift 连接对于让我们的模型 suitable 用于更广泛的操作用途大有帮助...

非常感谢。

将外部数据库 (DB) 表导入 built-in AnyLogic DB 与通过数据库对象和连接面板元素从外部数据库读取/写入外部数据库不同。后者不affect/change前者

后者可以用于任何 JDBC-compliant 数据库,如您所见(这就是 FAQ 说明所指的内容)。

前者仅支持 Excel/Access 和 SQL 服务器。 (如果你考虑一下,这需要将外部数据库的模式转换为 built-in AnyLogic DB 的模式,它实际上是一个标准的 HSQLDB 数据库;因此根据定义,这不是'universal' 操作,即使使用 JDBC,因此仅支持某些外部数据库。)

因此您可以从 Redshift 数据库读取并写入内部 AnyLogic 数据库以执行 'manual import'(您可以将其作为模型初始化的一部分调用);您还可以避免连接选项板查询元素,而只是以标准 Java 方式执行 SELECT 查询,也许使用 visually-added 数据库对象更容易获得连接。

但请务必记住,这 让您能够使用 internal-DB-linked 的 built-in 视觉配置,例如代理人数和属性库块;您始终可以通过直接查询外部数据库来完成此操作(例如,这意味着需要更多 'manual' 代码来设置代理群体)。此外,您还拥有有效拥有两个数据库副本的存储开销,并且任何性能差异都不清楚(权衡 one-off 导入成本与 'local' H[=46= 的任何可能改进]之后的数据库查询)。

可能也可以使用它用于数据库导入的底层 AnyLogic JavaAPI(例如,importFromExternalDatabase功能;搜索帮助)使这稍微简单一些,但您仍然需要 pre-prepared 内部数据库表设置(或编写代码来执行诸如解析外部数据库模式并创建适当的 HSQLDB表)。