У меня есть модель пользователя, имеющие атрибуты, следующие: -моделирование Cassandra- данных для UserProfilie
class User(Model):
user_id = columns.Integer(primary_key=True)
username = columns.Text()
email = columns.Text()
fname = columns.Text()
lname = columns.Text()
age = columns.Text()
state = columns.Text()
city = columns.Text()
country = columns.Text()
gender = columns.Text()
phone = columns.Text()
school_name = columns.Text()
created_at = columns.Text()
race = columns.boolean()
Это моя нормальная модель РСУБД. Мои запросы являются следующим: -
1) Get all users with city = 'something'
2) Get a user with email = 'something'
3) Get a user with username = 'something'
4) Get all users with phones IN ('something')
5) Get all users with state = 'something'
6) Get all users with age > something
7) Get all users with gender = 'something'
8) Get all users with race = 'something'
9) Get count(*),school_name users Group By schoolname
10) Get all users with created_date > 'something' LIMIT 1000
11) Get all users with username IN ('something') AND age IN ('something') AND phone IN ('something') AND state IN ('something') AND so on LIMIT 1000
я могу получить вышеуказанные результаты для запросов с простыми запросами на выборку в РСУБДЕ, но проблема заключается в Кассандре.
Поскольку для получения результатов для вышеуказанных запросов в Кассандре рекомендуется иметь другую модель для каждого запроса, что ускорит возможности чтения. В этом дне и возрасте диск намного дешевле, чем раньше. При этом я понимаю, что не всегда легко просто бросать больше диска в проблему. Большая проблема, которую я вижу, заключается в настройке уровня DAO вашего приложения, чтобы поддерживать 10 разных таблиц в синхронизации. (Кроме того, мой внутренний инстинкт не убежден, что у вас 10 моделей для разных запросов.: P)
Может ли кто-нибудь объяснить мне подходящую модель в Кассандре, чтобы получить результат для этих запросов?
PS: Действия над указанной моделью могут быть прочитаны/записаны/обновлены/удалены. Запрос 11 - самый важный вопрос.
Самое важное - сделать эти запросы очень быстрыми на больших объемах данных, учитывая, что информация об определенном пользователе может быть обновлена.
Благодаря @Carlo для глубокого объяснения обеспечивая возможный подход к этой задаче. И последний вопрос. Если в будущем я решил написать запрос, включающий «фильтрацию пользователей по« состоянию », тогда мне нужно создать другое семейство столбцов? **Поправьте меня если я ошибаюсь**. Следовательно, чтобы создать другое семейство столбцов, мне нужно перенести (скопировать) данные из других CF в новый bulit CF. Разве это не так? – PythonEnthusiast
Да, вы правы: если вам нужна информация для прошлых данных с новым запросом, то вы переносите эти данные в новую таблицу. –
Но тогда это снова ручная вещь, копирующая сотни миллионов строк из CF в другую. Так как я не могу заморозить все свои требования с самого начала, что вы думаете об этом? – PythonEnthusiast