从nodejs批量加载titan db中的数据

Bulk load data in titan db from nodejs

我现在的场景是

  1. 我有一个 rabbit mq,它提供了所下订单的详细信息。
  2. 在另一边,我有我的 titan 数据库(cassandra 存储、es 索引后端和 gremlin 服务器)。
  3. 我还有一个 nodejs 应用程序,它可以使用 https://www.npmjs.com/package/gremlin 通过 http api 与 gremlin 服务器交互。我可以从这里访问我的图形数据库。

现在我要做的是将数据从 rabbit mq 加载到 titan db。

到目前为止我能做的是使用 gremlin 节点模块从 nodejs 文件加载数据

    var createClient = require('gremlin').createClient;
//import { createClient } from 'gremlin';
 
const client = createClient();

client.execute('tx=graph.newTransaction();tx.addVertex(T.label,"product","id",991);tx.commit()', {}, function(err, results){
  if (err) {
    return console.error(err)
  }
    console.log(results)
});

接下来我应该怎么做才能利用现有的 rabbit mq 订单并将它们推送到 titan db。

Due to some constraints I can not use java.

您很可能正在寻找类似 node-amqp 的东西,它是 RabbitMQ 的 Node.js 客户端。你想要做的是:

  1. 建立与 Gremlin 服务器的连接
  2. 建立到 RabbitMQ 的连接
  3. 监听 RabbitMQ 消息队列
  4. 将这些消息发送到 Gremlin,创建图形元素

您必须注意的事项可能会影响您的表现:

  1. 使用 bound parameters
  2. 发送 Gremlin 查询
  3. 批处理消息:创建多个顶点并在同一事务中提交它们(=相同的 Gremlin 查询,除非在您 .commit() 自己的会话模式下)。几千个数字应该可以。
  4. 注意背压并确保您不会向 Titan 实例发送超出其处理能力的消息。

我不熟悉 RabbitMQ,但希望这能帮助您入门。

注意:Gremlin javascript 驱动程序通过 WebSocket 连接与 Gremlin 服务器交互,该连接是永久的双向的。客户端尚不支持 HTTP Channelizer(这不是您希望在当前场景中建立的那种连接)。