Jdbc 将Anylogic 8.6连接到红移数据库

Jdbc 将Anylogic 8.6连接到红移数据库,jdbc,amazon-redshift,anylogic,Jdbc,Amazon Redshift,Anylogic,我感兴趣的是将Anylogic 8.6中的模型链接到红移数据库中的表/视图。这将允许模型自动拾取新数据,以定义我们的人口和运行,从而实现更好的运营决策(即,我们预期明天会发生什么,明天总是在变化) 此版本与excel电子表格或SQL Server数据库具有本机连接。FAQ中有一个链接到MySQL的分步指南。我已经将本指南改编为红移,但我不清楚如何让连接实际启动,或者如何测试它是否实际工作 以下是我所做的: 从以下位置下载了最新的JDBC驱动程序: 我已将所有驱动程序文件提取到模型文件夹中 我已经

我感兴趣的是将Anylogic 8.6中的模型链接到红移数据库中的表/视图。这将允许模型自动拾取新数据,以定义我们的人口和运行,从而实现更好的运营决策(即,我们预期明天会发生什么,明天总是在变化)

此版本与excel电子表格或SQL Server数据库具有本机连接。FAQ中有一个链接到MySQL的分步指南。我已经将本指南改编为红移,但我不清楚如何让连接实际启动,或者如何测试它是否实际工作

以下是我所做的:

  • 从以下位置下载了最新的JDBC驱动程序:
  • 我已将所有驱动程序文件提取到模型文件夹中
  • 我已经在AnyLogic中打开了模型,选择了“项目”视图,并在“依赖项”选项卡上导入了驱动程序JAR文件(引用了文件RedshiftJDBC42-no-awssdk-1.2.50.1077.JAR)
  • 转到Main的“高级Java”属性,并在导入部分键入以下行:
    Import com.amazon.redshift.jdbc42.Driver。模型编译/生成时没有错误
  • 我不知道下一步该怎么办

    • 当我转到数据库并尝试导入表时,仍然只能看到Excel/SQL server的选项

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

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

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

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

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

    • 完成此操作后,我仍然只看到导入表的常规选项。所以我在“连接”选项板中添加了一个“查询”项,并做了一个简单的“从表中选择”—但不清楚如何将其输入本地数据库

    我的下一步是什么?还是我在这里浪费时间?红移连接将大大有助于使我们的模型适合更广泛的操作使用


    非常感谢。

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

    如您所见,后者可以用于任何兼容JDBC的DB(这就是FAQ说明所指的)

    前者仅适用于Excel/Access和SQL Server。(仔细想想,这需要将外部DB的模式转换为内置AnyLogic DB的模式,该数据库实际上是标准的HSQLDB数据库;因此,根据定义,即使使用JDBC,这也不是“通用”操作,因此仅支持某些外部DB。)

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

    但重要的是要记住,这只会让您能够使用内部数据库链接的内置可视化配置,例如代理填充和库块的属性;您总是可以通过直接查询外部数据库来实现这一点(例如,这意味着需要更多的“手动”代码来设置代理填充)。另外,一个数据库实际上有两个副本,这会带来存储开销,而且任何性能差异都不清楚(权衡导入的一次性成本和此后“本地”HSQLDB查询的任何可能改进)


    也可以使用它用于DB导入的底层AnyLogic Java API(例如,
    importFromExternalDatabase
    函数;搜索帮助)使其稍微简单一些,但您仍然需要预先准备好的内部DB表设置(或者编写代码来解析外部DB模式并创建适当的HSQLDB表).

    Hi Stuart-非常感谢。关于不同的使用模式,回答得非常好,尽管我的java还不足以解决如何将其付诸实践。没关系,那会到来。FWIW,计划是在我们的主DWH中设置外部表,这样模型查询起来就简单了。这使得productionis非常简单。非常感谢,谢谢!