2016-04-24 4 views
0

Моего текущего сценария какМассовые загрузка данных в титановом дб от nodejs

  1. У меня есть мэк кролика, который дает мне деталь размещенному заказа.
  2. С другой стороны, у меня есть мой titan db (хранилище cassandra, es index backends и сервер gremlin).
  3. Еще один у меня есть приложение nodejs, которое может взаимодействовать с сервером gremlin через http api, используя https://www.npmjs.com/package/gremlin. Здесь я могу сделать хиты в моей базе данных графа.

Теперь я пытаюсь загрузить данные из кролика mq в titan db.

То, что я был в состоянии сделать до сих пор загрузить данные из 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) 
 
});

Как я должен двигаться рядом, так что я могу использовать существующий кролик мэк заказов и толкнуть их в титан db.

Из-за некоторых ограничений я не могу использовать java.

ответ

3

Вы, скорее всего, ищете что-то вроде node-amqp, являющегося клиентом Node.js для RabbitMQ. То, что вы хотите сделать, это:

  1. Установление соединения с Gremlin сервера
  2. Установление соединения с RabbitMQ
  3. Прослушать очередь RabbitMQ для сообщений
  4. посылать эти сообщения Gremlin, создание элементов графа

Вещи, которые вы должны следить за которые в противном случае, вероятно, убить производительность:

  1. Отправить Gremlin запросов с bound parameters
  2. Batch сообщений: создать несколько вершин и зафиксировать их в той же самой транзакции (= тот же запрос Gremlin, если в режиме сеанса, где вы .commit() себя). Числа в парах тысяч должны работать.
  3. Следите за противодавлением и убедитесь, что вы не наводняете свои экземпляры Titan большим количеством сообщений, чем они могут обрабатывать.

Я не знаком с RabbitMQ, но, надеюсь, это должно вас начать.

Примечание: Драйвер javascript Gremlin взаимодействует с сервером Gremlin через соединение WebSocket, которое является постоянным и двунаправленным. Клиент еще не поддерживает HTTP Channelizer (это не тот тип соединения, который вы хотите установить в текущем сценарии).

+0

Спасибо за тонну @jbmusso за такой ясный и лаконичный ответ. Обязательно помните свои соображения. –

+0

Кстати, я получаю уведомления по электронной почте для всех новых вопросов с тегом 'gremlin' (см. Http: // stackoverflow.com/questions/36595594/making-my-titan-db-graph-with-cassandra-and-elasticsearch-backend/36634701? noredirect = 1 # comment61212731_36634701) – jbmusso

+0

Точка должным образом отмечена. –