2015-10-20 1 views
2

У меня есть стол столбец из 40 столбцов, который я переношу в Кассандру.Cassandra: минимизация накладных расходов метаданных с помощью UDT

Используя оценщик в http://docs.datastax.com/en/cassandra/2.1/cassandra/planning/architecturePlanningUserData_t.html

Я создал Excel лист с именами столбцов, типами данных, размером каждого столбца и т.д. Кассандры конкретными накладными расходами для каждой строки RDBMS являются необычайными 1KB, когда фактические данные только 192 байта.

Поскольку накладные расходы пропорциональны количеству столбцов, я думал, что было бы намного лучше, если бы я просто создал UDT для полей, которые не являются частью первичного ключа. Таким образом, я бы понесла накладные расходы только один раз.

Кроме того, я не намерен запускать запросы во внутренних полях UDT. Даже если бы я этого хотел, у Cassandra очень ограниченные функции запросов, которые работают на не-PK-полях.

Это хорошая стратегия для принятия? Есть ли подводные камни? Все ли эти накладные расходы легко устраняются при сжатии или какой-либо другой внутренней операции?

ответ

2

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

У меня есть 40 колонка RDBMS таблицы

Эта часть немного меня беспокоит. По существу, вы создадите UDT с 40 свойствами. Не огромная сделка сама по себе. Кассандра должна справиться с этим просто отлично.

Но если вы не можете запрашивать внутренние поля UDT, вам нужно спросить себя, как часто вы планируете их обновлять. Cassandra хранит UDT как «замороженные» типы в одном столбце. Это очень важно понять, по двум причинам:

  1. Вы не можете прочитать один свойство UDT без чтения всего свойства UDT.
  2. Аналогичным образом вы не можете обновить одно свойство в UDT без , переписывая все из них.

Поэтому вы должны помнить об этом при разработке своего приложения. До тех пор, пока вы не будете писать частые обновления для отдельных свойств UDT, это должно быть хорошим решением для вас.

+0

Спасибо за советы по поводу «чтения/письма в целом». Я буду помнить об этом. – Dojo