Есть приложение под андройд, которое использует SQLite бд. И есть сервер на java, работающий с MySQL. Необходимо узнать одинаковые ли в этих двух базах данные. Решил использовать конрольные суммы для этого. Как реализвать это средствами Java?
Ответ очень высокоуровневый, потому что задача довольно обширная.
Встроенных механизмов в самих БД для этого нет.
Поскольку контрольные суммы обычно определяются для последовательностей байт, ваша задача получить одинаковые последовательности байт из одинаковых байт на разных БД. Каждая такая последовательность должна уникально идентифицировать текущее состояние данных.
А хэширование (снятие контрольной суммы) в этом контексте будет лишь своеобразным алгоритмом сжатия (с потерями) этой последовательности. Поскольку есть потери, он будет не в состоянии доказать идентичность данных из-за ненулевой (хоть и очень небольшой) вероятности коллизий.
В Java есть класс MessageDigest
. Можно инициализировать его объект и кормить его методу update
отдельные небольшие массивы байт данных, кусочки описанной выше последовательности, получая их по кусочкам (курсором или иным образом) из базы, чтобы не хранить в памяти целиком.
Сам алгоритм получения уникальной последовательности это целое поле для творчества, поэтому готовый код приводить не буду. Но на этом поле есть некоторые мины и грабли, о которых считаю нужным упомянуть:
...а может статься, разумнее воспользоваться другим хранилищем данных. Например, каким-нибудь, в котором изначально предусмотрена раздельная работа отдельных БД и синхронизация "когда-нибудь потом". Ведь с высокой вероятностью вас интересует не только проверка на идентичность данных, но и приведение их в идентичный вид.
Например, есть совместимые (на большой процент) между собой CouchBase для Android, CouchDB для сервера и PouchDB для браузера. Но если поискать, могут найтись какие-нибудь ещё.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть таблица, где поля с атрибутами, у некоторых есть значение, у некоторых нет - NULL
Какую базу данных лучше использовать для GPS TrackerаХранить данные о местонахождении и обмениваться ими между зарегистрированными пользователями
Добрый день!Работаю с OpenCart, и не знаю как воплотить свою идеюУ нас есть 2 поля в админке, куда мы вводим слова: