【问题标题】:Connecting Anylogic 8.6 to a redshift database将 Anylogic 8.6 连接到 redshift 数据库
【发布时间】:2021-02-08 19:46:18
【问题描述】:

我有兴趣将 Anylogic 8.6 中的模型链接到 Redshift 数据库中的表/视图。这将使模型能够自动获取新数据来定义我们的人口并运行,从而做出更好的运营决策(即我们预计明天会发生什么,明天总是会发生变化)。

此版本具有与 Excel 电子表格或 SQL Server 数据库的本机连接。常见问题解答中是链接到 MySQL 的分步指南。我已将本指南改编为 Redshift,但我不清楚如何让连接真正触发,或者如何测试它是否真的有效。

这是我所做的:

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

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

  • 当我去数据库并尝试导入表时,我仍然只看到 Excel/SQL 服务器的选项

  • 从“连接”面板中,我将“数据库”拖到模型的“主要”部分。那我就

  • a) 选择连接作为“其他数据库类型”

  • b) 在“JDBC 驱动程序”部分,我输入了com.amazon.redshift.jdbc42.Driver

  • c) 在连接 URL 中,我输入了以下内容:jdbc:redshift://<Server>:<Port>/<Database>?ssl=true&tcpKeepAlive=true&sslfactory=org.postgresql.ssl.NonValidatingFactory (这是来自 workbench/dBeaver/KNIME 的标准连接字符串,适用于那些,所有这些都是 JDBC)

  • d) 使用了我用于正常 SQL 工作的常用用户名/密码

  • 执行此操作后,我仍然只能看到导入表格的常用选项。所以我从“连接”面板中添加了一个“查询”项,并做了一个简单的“从表中选择 *” - 但目前尚不清楚如何将其输入到我的本地数据库中......

我的下一步是什么?还是我在这里浪费时间? Redshift 连接将大大有助于我们的模型适用于更广泛的运营用途......

非常感谢。

【问题讨论】:

    标签: jdbc amazon-redshift anylogic


    【解决方案1】:

    将外部数据库 (DB) 表导入内置 AnyLogic DB 与通过数据库对象和连接面板元素读取/写入外部数据库是分开的。后者不影响/改变前者。

    如您所见,后者可以用于任何符合 JDBC 的数据库(这就是常见问题解答说明所指的内容)。

    前者仅支持 Excel/Access 和 SQL Server。 (如果您考虑一下,这需要将外部 DB 的模式转换为内置 AnyLogic DB 的模式,这实际上是一个标准 HSQLDB 数据库;因此根据定义,即使使用使用 JDBC,因此只支持某些外部数据库。)

    因此您可以从 Redshift DB 中读取数据并写入内部 AnyLogic DB 以执行“手动导入”(您可以将其作为模型初始化的一部分调用);您还可以避免使用 Connectivity 选项板查询元素,而只需以标准 Java 方式执行 SELECT 查询,也许使用可视添加的 Database 对象来更轻松地获得连接。

    但重要的是要记住,这让您能够使用内部数据库链接事物的内置可视化配置,例如代理群体和库块的属性;您始终可以通过直接查询外部数据库来执行此操作(例如,这意味着需要更多“手动”代码来设置代理群体)。此外,您还需要有效地拥有两个数据库副本的存储开销,并且任何性能差异都不清楚(权衡导入的一次性成本与此后“本地”HSQLDB 查询的任何可能改进)。

    也许还可以使用它用于数据库导入的底层 AnyLogic Java API(例如,importFromExternalDatabase 函数;搜索帮助)来使这稍微简单一些,但是你'仍然需要预先准备好内部数据库表设置(或编写代码来执行解析外部数据库模式并创建适当的 HSQLDB 表之类的操作)。

    【讨论】:

    • 嗨 Stuart - 非常感谢。关于不同使用模式的非常好的答案,尽管我的 java 还不够好,无法弄清楚如何实际将其付诸实践。没关系,那会来的。 FWIW,计划是在我们的主 DWH 中设置外部表,然后模型可以轻松查询。这使得生产变得更加简单。非常感谢,谢谢!
    猜你喜欢
    • 2016-08-16
    • 2022-11-09
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 2015-08-22
    • 2017-11-13
    • 2021-09-26
    相关资源
    最近更新 更多