Как сделать триггер в rethinkDb

Мое требование:

Когда бы ни происходило изменение данных в таблице (ах) (будь то вставка, обновление, удаление), я должен иметь возможность обновлять свой кэш, используя мою логику, которая выполняет манипуляции с использованием таблиц (ы).

Technology : Node, rethinkDb

Моя реализация:

Я слышал о table.changes() в rethinkDb, который испускает поток объектов, представляющих изменения в таблице.

Я пробовал этот код

r.table('games').changes().run(conn, function(err, cursor) {
  cursor.each(console.log);
});

Это работает нормально, я имею в виду, что я получаю события, в которые я положил свою логику для манипуляций

Мой вопрос заключается в том, как долго он будет излучать изменения... Я имею в виду, есть ли предел. И как это работает?

Я прочитал это в их документе,

Сервер буферизует до 100 000 элементов. Если достигнут предел буфера, ранние изменения будут отброшены, и клиент получит объект в форме {error: "Changefeed cache over limit array limit, пропущено X элементов."} Где X - количество пропущенных элементов.

Я не правильно понял это. Я думаю, что после 100 000 он не даст изменений в событии, таких как old_vale и new_value.

Пожалуйста, объясните это ограничение, а также, согласно требованию, это сработает?

Я очень отношусь к этой технологии. Пожалуйста, помогите мне.

1 ответ

Решение

Краткий ответ: нет предела.

100.000 элементов для буфера - это если вы не извлекаете изменения из курсора. Сервер будет продолжать буферизовать их до 100 000 элементов. Если вы используете each, вы получите изменения, как только они станут доступны, поэтому ограничение не повлияет на вас.

Другие вопросы по тегам