Как сделать триггер в 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
, вы получите изменения, как только они станут доступны, поэтому ограничение не повлияет на вас.