【问题标题】:Custom ETL OrientDB from PostgreSQL来自 PostgreSQL 的自定义 ETL OrientDB
【发布时间】:2017-05-18 13:00:11
【问题描述】:

我正在做一个 Rails 项目,数据库是 OrientDB 图形数据库。我需要将数据从 Postgres 传输到 OrientDB 图。我在 Ruby 中编写了脚本来从 postgres 中获取数据,并通过创建相关的边和节点将其加载到图形结构中。

但是,这个过程非常缓慢,并且需要几个月的时间才能输入百万条记录。该图在某种程度上是一个密集连接的图。

我想使用 OrientDB 提供的内置 ETL 配置,但它似乎相对复杂,因为我需要从同一个表中的字段创建多个顶点,然后将它们连接起来。我提到了这个documentation

我可以编写自定义 ETL 以与内置 ETL 工具相同的速度将数据加载到 OrientDB 中吗?

此外,是否有任何关于将数据加载到 OrientDB 的速度的基准。

【问题讨论】:

  • 你好,你可以试试传送器,新的 OrientDB 功能吗?希望能帮助到你。问候
  • 我正在使用社区版。那里没有传送器功能。仅在企业版中可用。但是我认为这与 ETL 模块没有太大区别。
  • 只需一次迁移,您就可以通过下载 45 天试用版来使用 Enterprise Edition 的 Teleporter ;-) 如果您想让 OrientDB 与 Postgres 保持同步,那就不同了,在这种情况下,您需要一个 Enterprise许可证。
  • 企业版 Teleporter 与 ETL 模块有何不同?我可以通过对数据进行检查来编写自定义 SQL 查询以进行加载吗?此外,这种迁移也不是一次性的任务。这将是一个持续的过程,postgres 的任何变化都必须反映在 OrientDB 中。

标签: ruby-on-rails postgresql orientdb etl


【解决方案1】:

如果 ETL 不能满足您的需求,您可以使用 Java 或您选择的任何其他 JVM 语言编写自定义导入器。 如果只需要导入一次db,最好的方法是使用plocal访问(嵌入式),然后将生成的数据库移动到服务器下。 使用这种方法,您可以获得最佳性能,因为不涉及网络。 代码应该是这样的 sn-p:

    OrientGraphFactory fc = new OrientGraphFactory("plocal:./databases/import", "admin", "admin");

Connection conn =  DriverManager.getConnection("jdbc....");

Statement stmt = conn.createStatement();

ResultSet resultSet = stmt.executeQuery("SELECT * from table ");

while (resultSet.next()) {
  OrientGraph graph = fc.getTx();

  OrientVertex vertex1 = graph.addVertex("class:Class1", "name", resultSet.getString("name"));
  OrientVertex vertex2 = graph.addVertex("class:Class2", "city", resultSet.getString("city"));

  graph.addEdge(null, vertex1, vertex2, "class:edgeClass");
  graph.shutdown();

}


fc.close();
resultSet.close();

stmt.close();

conn.close();

它是比工作代码更多的伪代码,但将其作为模板用于从原始 RDBMS 导入单个查询/表所需的操作。 关于性能,很难给出数字,它取决于许多因素:架构复杂性、访问类型(plocal、远程)、查找、数据源的连接速度。

关于传送器的更多信息。它将自动导入 OrientDB 中的原始数据库模式和数据。 AFAIK 你有一个工作的 OrientDB 并且肯定 Teleporter 不会在 OrientDb 上创建你所做的相同模式。

【讨论】:

  • 我正要这样做,但很难找到如何部署它的帮助。是否有任何用于编写此文件的文档。我还需要帮助在服务器上部署它。
  • “部署到服务器”是什么意思。我正在考虑一个带有 main() 的独立项目。我猜你的意图是只从 PGSQL 导入数据一次。我错了吗?
  • 我正在运行 OrientDB 服务器和 PG 数据库服务器。我需要导入数据。如何运行上述文件一次或设置一个 cron 任务。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-11
  • 2017-11-27
  • 1970-01-01
相关资源
最近更新 更多