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

时间:2016-04-24 07:13:07

标签: node.js titan gremlin gremlin-server

我目前的情况就像

  1. 我有一只兔子mq,它给我详细的订单。
  2. 另一方面,我有我的titan db(cassandra存储,es索引后端和gremlin服务器)。
  3. 另一个我有nodejs应用程序,可以使用https://www.npmjs.com/package/gremlin通过http api与gremlin服务器进行交互。我可以从这里对我的图形数据库进行点击。
  4. 现在我要做的是将兔子mq中的数据加载到titan db。

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

    
    
    var vm = require('vm');
    var script = 'var a = [1, 2, 3]; a.map(n => n * 2);';
    
    var sandbox = {};
    var result = vm.runInNewContext(script, sandbox);
    
    console.log(sandbox); // { a: [1, 2, 3] }
    console.log(result);  // [2, 4, 6]
    
    
    
    

    我应该如何移动下一步以便我可以利用现有的兔子mq命令并将它们推入titan db。

      

    由于一些限制,我不能使用java。

1 个答案:

答案 0 :(得分:3)

您最有可能寻找像node-amqp这样的东西,它是RabbitMQ的Node.js客户端。你想要做的是:

  1. 建立与Gremlin Server的连接
  2. 建立与RabbitMQ的连接
  3. 收听RabbitMQ队列中的消息
  4. 将这些消息发送给Gremlin,创建图元素
  5. 你必须注意的事情否则可能会影响你的表现:

    1. 使用bound parameters
    2. 发送Gremlin查询
    3. 批处理消息:创建多个顶点并在同一事务中提交它们(=相同的Gremlin查询,除非您自己.commit()的会话模式)。成千上万的人数应该有效。
    4. 注意背压,并确保不要使用超出他们可以处理的消息来充斥你的Titan实例。
    5. 我对RabbitMQ并不熟悉,但希望这可以让你开始。

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