【问题标题】:Bulk load data in titan db from nodejs从nodejs批量加载titan db中的数据
【发布时间】:2016-08-17 15:33:39
【问题描述】:

我现在的情况是这样的

  1. 我有一个兔子 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中。

由于一些限制,我无法使用 java。

【问题讨论】:

    标签: node.js titan gremlin gremlin-server


    【解决方案1】:

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

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

    你必须注意的事情可能会影响你的表现:

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

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

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

    【讨论】:

    • 非常感谢@jbmusso 提供如此清晰简洁的回答。一定会牢记您的观点
    • 顺便说一下,我会收到所有带有gremlin 标签的新问题的电子邮件通知(请参阅stackoverflow.com/questions/36595594/…
    猜你喜欢
    • 1970-01-01
    • 2016-08-24
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 2016-04-03
    相关资源
    最近更新 更多