Задать вопрос
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 пользователя по хэшу.

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽