vanilich
@vanilich

Key/value значения. Как выбрать оптимальный способ хранения?

Доброго времени суток.
Разрабатываю Web-приложение (подробности опущу), где понадобилось скрывать реальные пользовательские ID (Primary Key в MySQL) за строкой фиксированной длины (хэшем). Хэши случайным образом генерируются при регистрации и заносятся в таблицу users_hashes вида:
| unique_hash | user_id |

Пример, где я это буду использовать:
Допустим, пользователь1 отправляет сообщение пользователю2, посредством ajax на сервер. Запрос выглядит так:
{
  "from": "c1fedb2d17ca40af1c27252646d8be48",
  "to": "7f5215959290e8ec6626e904d9e84648",
  "message": "some message..."
}

Сообщение приходит на сервер, где я должен найти такой же хэш в таблице "users_hashes" и вытащить соответственный ему ID пользователя, только затем поместив сообщение в бд. Я понимаю, что каждая такая выборка (хоть и не много), но будет нагружать сервер.

Короче, мне надо чтобы пользователь не узнал о своем ID (Детали проекта, к сожалению, разглашать не могу). И сделать весь этот процесс как можно более эффективным и быстрым.

Первая мысль, которая пришла в голову - это кэшировать полученные значения из users_hashes допустим в Memcache, и как раз вытаскивать ID пользователя по хэшу.

Буду благодарен любому ответу и конструктивной критике.
  • Вопрос задан
  • 287 просмотров
Пригласить эксперта
Ответы на вопрос 3
@IvanSenishin
Еще можно использовать redis
Ответ написан
martin74ua
@martin74ua Куратор тега MySQL
Linux administrator
ну в memcache и храните. Только.... А какая принципиальная разница между "мой id 6644" и "мой id c1fedb2d17ca40af1c27252646d8be48" ?
Ответ написан
@maxtm
Make money, not job
О каком объеме данных/запросов идет речь?
Если у Вас база меньше 250-300к юзеров, думаю, нет особой разницы где хранить - в мемкэше, или в mysql, в плане скорости и нагрузки.
На мой взгляд, если это не является на текущий момент узким горлышком, то это преждевременная оптимизация.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы