Я нахожусь в процессе перехода от MySQL к Cassandra для PenWag.com. В Кассандре я храню пользователей с идентификатором GUID, но пользователи подписываются с их электронной почтой, а не с GUID (очевидно). GUID как ключ для пользователей имеет смысл для меня больше, чем электронная почта по двум причинам. С практической точки зрения кажется, что слишком сложно изменить или удалить/добавить строку со всеми ее суперколонками. С теоретической точки зрения, это все тот же пользователь, почему их ключевые изменения?Модель данных Cassandra/BigTable - какой лучший подход для построения индексов?
Тем не менее, вот мой вопрос: я строю индекс в отдельном столбце, который сопоставляет email-> GUID для поддержки входа. Это стандартный тип CF, где имя столбца - электронная почта, а значение - GUID. Стандартно, а не Супер, чтобы не загружать весь SC для каждого сопоставления. Поддержка «изменения электронной почты» проста, это просто удаление столбца/добавление. Но, похоже, альтернативой этому является сохранение индекса в виде строк вместо столбцов, где ключ строки - это электронная почта, а в столбце содержится идентификатор GUID. Удалить/добавить эти строки не будет громоздким, так как управлять только столбцом (GUID).
Кажется, что любой подход работает. Каковы плюсы и минусы каждого? Есть ли наилучшая практика?
Я тоже хотел бы использовать свою электронную почту адрес как ключ и идентификатор GUID в качестве столбца. Таким образом, у вас есть одна колонка и много строк. Таким образом, данные могут быть распределены по кластеру. – Zanson