Допустим, у нас есть таблица с именем my_collection_oplog
, в которой есть столбцы: id
, deleted
, data
, ts
, где data
- строка формата json, означает весь документ (для вставки или начального снимка или replaceOne) или документа исправления (для обновления).
Мы считаем, что мы можем использовать следующие SQL, используя UDF для объединения oplog
select id, merge_oplog(collect_list(struct(deleted, data, ts))) doc from my_collection_oplog group by id
Однако мы думаем, что это будет проблемой, когда какая-либо группа слишком велика (т. Е. Какой-то документ обновляется слишком много раз), потому что нам нужно загрузить все oplog
в каждой группе в память и отсортировать их.
Есть ли лучший способ сделать это? (Укажите на любую ошибку в вышеприведенном посте, также приветствуется)
Только для тех, кто не знает формат mon go oplog: оплог имеет два типа: первый - весь документ Например,
{
"_id": 1
"name": "a",
"type": "b"
}
Второй - это документ патча, например,
{
"$set": {
"name": "c"
},
"$unset": {
"type": 1
}
}