Таблица поиска Cassandra для URL тщеславия и UUID в кодировке Base64

Сценарий

Большой, высокопроизводительный, масштабируемый, распространяемый сайт о кошках.

Детали

  • У каждой кошки есть своя страница, содержащая некоторые детали, такие как среднее время сна, любимая еда и худшие враги.
  • Страницы могут быть доступны либо через vanity-url, когда он установлен (например, cats.com/terminator-cat), либо в представлении Base64Url его UUID (например, cats.com/w4rTb789mmN0c...)
  • Существует также API, который принимает только форму Base64.
  • UUID скрыт от публики в целях удобства использования URL.
  • Сайт использует Cassandra 2 в качестве основной базы данных.
  • Дополнительные детали для рассмотрения, также будут другие запросы в форме: найти кошек с Х любимой едой, Y врагов,... это, однако, не то, что спрашивают.

Вопросы

Зная, какие данные будут храниться и как их будут запрашивать, каким будет правильный способ их моделирования?

Я имел в виду таблицу cat, где каждый ключ ввода - это UUID. И две отдельные таблицы поиска, одна для строк в кодировке Base64, а другая для пользовательских имен.

Контроллер страницы будет искать, если параметр url является строкой Base64, если это так, сначала запросите таблицу loookup, чтобы получить UUID, а затем запросите таблицу данных. Если это не так, запросите таблицу поиска имени, а затем данные. Если не найдено в таблицах поиска или данных, верните 404.

Есть ли проблемы с этим подходом? Что я должен рассмотреть? Какие еще способы вы бы порекомендовали?

Я должен сказать, что я новичок в Кассандре, любые советы помогут.

1 ответ

Если в вашей разработке еще не поздно, я рекомендую просто использовать sha-256 из тщеславного URL в качестве идентификатора и выполнить один поиск. При таком подходе вы должны сделать свой интерфейс таким, чтобы он не позволял изменять URL-адреса тщеславия после их установки, и вы должны сделать это обязательным полем. Это значительно упростило ваше приложение.

Другие вопросы по тегам