Я настраиваю серверную часть механизма Google Cloud Messaging, используя MySQL для хранения идентификаторов регистрации, предоставляемых мобильным приложением. Предоставляя Google возможность выдавать до 4 тыс. Регистрационных идентификаторов, я вынужден хранить их в поле ТЕКСТ. Все до сих пор, проблема в том, что мне приходится обрабатывать такие ситуации:
- Пользователь регистрируется в приложении
- Приложение запрашивает идентификатор регистрации из google
- Приложение отправляет новый идентификатор регистрации на сервер приложений.
- Сервер сохраняет этот идентификатор регистрации и связывает его с пользователем, который в настоящее время вошел в систему
- Этот пользователь выходит из системы, а новый пользователь регистрируется в
- Приложение отправляет серверу тот же идентификатор регистрации, что и раньше
- Сервер должен иметь возможность видеть, что идентификатор регистрации уже находится в базе данных, но связан с другим пользователем.
- Сервер отключает идентификатор регистрации от предыдущего пользователя и связывает его с новым зарегистрированным пользователем
Итак, проблема в том, что я должен обеспечить уникальность идентификатора регистрации в базе данных, но я не могу добавить индекс UNIQUE для этого поля TEXT.
Возможные решения, о которых я мог подумать:
- Вычислить хэш идентификатора регистрации и заставить хэш быть уникальным, но могут быть конфликты.
- Я мог бы хранить уникальный идентификатор устройства вместе с идентификатором регистрации и обеспечивать, чтобы идентификатор устройства был уникальным. Проблема, которую я вижу, в том, что я не знаю, как долго может быть идентификатор устройства Android, и я думаю, что есть случаи, когда он недоступен.
- Я мог выполнять поиск каждый раз, когда был получен новый идентификатор регистрации, но я думаю, что это закончится очень плохой эксплуатацией.
Я уверен, что я не единственный, кто сталкивается с этой проблемой, но я не могу найти хорошие решения там. Любые мысли о том, как я могу это решить?