Моя проблема утверждение: -Cassandra дизайн схемы оптимизации
I have a college , every college have some students ,
every student has some data(for eg student id , student name , class etc) related to him.
Вид вопросов я хотел бы ответить на это: -
a) get all students of a particular college.(student id and name only not the other data)
b) get data of a student of a college given his ID and college name .
c) create a student to a college.(ADD a new student in college).
d) delete a student of a particular college given his id and college name .
e) UPdate a students data of a particular college given his ID and college name .
Я подумал о следующей схеме: -
Одна колонка Семья, которая использует row_key как колледж $ student_id (конкатенация идентификатора колледжа и ученика) и значение как данные студента в JSON. Другая колонка Семья, в которой есть коллегия как row_key и один столбец со списком имен учеников и учеников (имя студента является частью данных учащихся в первом CF), объединены в виде разделенных запятыми строк. (В частности, для первого запроса)
Я могу ответьте на все запросы.
Вторым, о котором я могу думать: - Семейство столбцов с колледжем как row_key и имя столбца как student_id и значение как данные ученика (в котором также есть имя ученика). с этим CF сам я могу ответить на все запросы.
Но как будет вести себя запрос с точки зрения эффективности, чтобы получить всех студентов для конкретного колледжа.
Я прочитал, что он возьмет всю строку в память, даже если мне нужно только имя студента и имя студента, для которого я сохранил вторую семью столбцов в моем первом подходе. Даже когда я хочу студента для определенного идентификатора и колледжа займет всю строку в памяти за предоставленную мне, для чего я есть первый CF в первом подходе
Во-вторых в этом подходе проблема горячих точек может быть там.
Даже если я хочу, чтобы студент имел конкретный идентификатор и колледж, он взял всю строку в памяти за то, что дал мне то, для чего у меня есть первый CF в первом подходе.
Единственная причина, по которой я думал о втором подходе, заключался в следующем новом запросе, который должен будет выполнять множественные вычисления из нескольких узлов в кластере.
Получить всех студентов из определенного колледжа, указанных в списке учеников.
В моем первом подходе, когда данные колледжа будут распространяться по узлам, мне придется делать выбор из многих узлов. тогда как во втором подходе, поскольку колледж - это ключ, я получу его от одного узла.
У второго подхода второго порядка было много других недостатков, о которых я говорил выше.
Что может быть лучшим подходом или является первым подходом, правильным и эффективным?
Первичный ключ колледжа, студенческий я получаю проблему multigets из разных узлов, как упомянутый позже в вопросе в случае другого запроса – Peter
@Peter Вы следуете за документами cassandra 1.2, а также смотрите раздел обновления, касающийся вашего запроса с несколькими ответами? – abhi
Извините за мой наивный уровень в кассандре. Я только что прочитал, что ключ осколка будет первым столбцом первичного ключа. Это создаст «Горячие точки»? Также я хотел знать, даже когда я буду запрашивать студента по id, будет ли вся строка загружена в память? – Peter