2014-11-26 3 views
0

Мое требование:как сделать триггер в rethinkDb

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

Technology : Node, rethinkDb 

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

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

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

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

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

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

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

Сервер будет буфер до 100000 элементов. Если предел буфера достигнут, ранние изменения будут отброшены, и клиент получит объект формы {ошибка: «Изменить кеш-память с избытком по размеру массива, пропущенные X-элементы».} Где X - количество пропущенных элементов.

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

Просьба пояснить это ограничение, а также в соответствии с требованием это будет работать?

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

ответ

3

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

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

Смежные вопросы