2016-11-28 9 views
0

У меня есть таблица под названием «usertab» хранить информацию о пользователях, таких как:данных и Updation в таблицах Кассандры

userid uuid, 
firstname text, 
lastname text 
email text 
gender int 
image text 

Большинство других таблиц содержит идентификатор пользователя, как поле для ссылки «usertab», но когда я извлекаю данные из другой таблицы, мне нужно выполнить другой запрос выбора, чтобы получить детали пользователя.

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

Таким образом, мы добавляем поля usertab, такие как имя, фамилия, пол, изображение в других таблицах в дополнение к поля userid.

Таким образом, при извлечении данных система становится быстрой, но мы столкнулись с другой проблемой. Если какие-либо изменения в таблице usertab, такие как изменение имени, фамилии, пола или изображения, нам необходимо обновить другие таблицы, содержащие данные пользователя. Если мы рассмотрим огромное количество данных в других таблицах, как я могу справиться с этим?

Мы используем индекс lucene и C#.

ответ

1

Cassandra пишет значительно быстрее и эффективнее, чем читает.
Вот почему Cassandra предпочитает разгосударствление над нормализацией

Денормализацией является понятием о том, что модель данных должна быть спроектирована таким образом, что данный запрос может быть подан из результатов одной строки и запроса. Вместо того, чтобы делать несколько чтений из нескольких таблиц и строк для сбора всех необходимых данных для ответа, вместо этого измените свою логику приложения, чтобы вставлять требуемые данные несколько раз в каждую строку, которая может понадобиться в будущем. Таким образом, все необходимые данные могут быть доступный только в одном чтении, что предотвращает множественный поиск.

При выполнении нескольких обновлений вы можете использовать executeAsync.

Сессия разрешает асинхронное выполнение операторов (для любого типа оператора: простой, связанный или пакетный) путем воздействия на метод ExecuteAsync.

//Execute a statement asynchronously using await 
var rs = await session.ExecuteAsync(statement); 

Источник: https://www.hakkalabs.co/articles/cassandra-data-modeling-guide

+0

Я предполагаю, что вы скопировали цитируемый раздел где-то. Можете ли вы отредактировать свой ответ и предоставить ссылку на источник? – Aaron

+0

@ Добавлен источник аарона –