Одна из проблем, с вашей схемы является то, что любые повторяющиеся строки будут иметь повторное хэш; Вы никогда не могли определить, когда одна из этих линий были добавлены или удалены
Очень хороший момент, но не проблема. Многократная линия является дубликатом и все дубликаты будут удалены в следующей стадии обработки. Так что да, вы правы, но это не является проблемой.
«Дифф» ссылка берет меня на страницу с описанием того, что я предполагаю, что это приложение? Там нет ссылки на скачивание, нет кода на любом языке ... Что я здесь отсутствует?
Некоторые из вас говорили о уровне байт зернистости. Это не требуется. только линейный уровень детализации требуется, потому что если что-то на линии была изменена, вся строка (запись) должна быть переработана еще потому любое изменение в линии влияет на всю линию.
Таким образом, мы сравниваем линию приблизительно 1000 символов (без двойного), в двух файлах (сегодняшние моментальных снимки и снимки) вчера, каждый из которых приблизительно 1 м линии.
Таким образом, используя безопасный хэш как SHA256 (MD5 имеет коллизии и медленно по сравнению), я могу обработать около 30МБ / сек на моем ноутбуке HO. Сервер, конечно, будет жевать через него намного быстрее.
Таким образом, если файл arond 1 Гб, то делает все hases занимает около 33sec, и чтение файла 1Gb с помощью страницы памяти окна занимает около 30 секунд. Не ужасающий
Теперь у нас есть два массива hashs представляющих строк в каждом файле. Если мы сортируем их, теперь мы можем использовать бинарный поиск, поэтому мы итерацию наш путь через новые файлы hashs ищет совпадения в старых файлах hashs. Если мы не нашли, что строка добавляется в файл изменений.
Имейте в виду, что книга линий (традиционная база данных) неизвестна в каждом аспекте. Там нет никакой гарантии того, линий, расположения изменений, типа изменений.
Предложения чтения ПРЕДИСЛОВИЕ постранично хорошо, но предполагается, что оба файла находятся в smae порядке до недо первого изменения. Это не может быть принято считать. Линии (строки), могут быть в любом порядке. Кроме того, выбирая произвольный размер блока нарушает зернистость линии. Для целей этой задачи, строки являются неизменяемыми.
Из этой отличной ссылки на invrementa загрузки: Файл сравнения Capture: Этот метод также известен как снимок дифференциального метода. Этот метод работает, сохраняя до и после изображений файлов, представляющих интерес для хранилищ данных. Записи сравниваются, чтобы найти изменения и записи ключей сравниваются, чтобы найти вставки и удаления. Этот метод является наиболее подходящим в случае унаследованных систем в связи с тем, что вызывает, как правило, не существует и журналы транзакций либо не существует, либо в собственном формате. Поскольку большинство устаревших баз данных имеют некоторый механизм для сброса данных в файлы, этот метод создает периодические снимки, а затем сравнивает результаты производить записи изменений. Конечно, все проблемы статического захвата присутствуют здесь. Добавлена сложность вводится вызов сравнения целых строк информации и идентификации ключа и согласования. Этот метод носит сложный характер и, как правило, не желательно, но, в некоторых случаях, может быть единственным решением.
Это имеет самое непосредственное отношение здесь: Как мы переходим в область складов терабайт данных, возможность восстановления хранилища данных с нуля по ночам будет идти по пути динозавров. Логичный и эффективный подход к обновлению хранилища данных включает в себя некоторую форму дополнительных стратегии обновления.
Таким образом, я предполагаю, что я нахожусь на правильном пути тогда? Индекс ВТКЕЕ не дало бы преимущество?