Массовая загрузка данных в titan db из nodejs

Мой текущий сценарий похож на

  1. У меня есть кролик mq, который дает мне подробную информацию о размещенном заказе.
  2. С другой стороны у меня есть титановая БД (хранилище cassandra, серверные части es index и сервер Gremlin).
  3. Еще одно приложение nodejs, которое может взаимодействовать с сервером Gremlin через http API, используя https://www.npmjs.com/package/gremlin . Отсюда я могу попадать в мою базу данных графиков.

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

До сих пор мне удавалось загружать данные из файла nodejs с помощью модуля узла Gremlin.

    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.


person palash kulshreshtha    schedule 24.04.2016    source источник


Ответы (1)


Скорее всего, вы ищете что-то вроде node-amqp, который является клиентом Node.js для КроликMQ. Что вы хотите сделать, это:

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

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

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

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

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

person jbmusso    schedule 24.04.2016
comment
Большое спасибо @jbmusso за такой четкий и лаконичный ответ. Обязательно учту ваши замечания. - person palash kulshreshtha; 24.04.2016
comment
Кстати, я получаю уведомления по электронной почте обо всех новых вопросах с тегом gremlin (см. stackoverflow.com/questions/36595594/) - person jbmusso; 24.04.2016