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