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