2016-04-21 2 views
2

Вкратце с реальным ответом на то, что разные значения хранения сериализованного json типа vs с использованием UDT в Cassandra. Я теперь протягиваю руку, надеясь, что кто-то с опытом будет развиваться.Сериализованные последствия Json vs UDT для миграции данных и схем в cassandra

Что касается изменений производительности, данных и схемы (добавить, изменить, удалить столбцы), как они отличаются? Что такое pro и минусы каждого подхода? В каком другом примечательном способе они отличаются?

Заранее благодарен!

ответ

2

Существует большая разница, и я попытаюсь объяснить это.

UDT are awesome, если вы не указали «строго типизированные» поля в схеме CQL. Вы можете использовать UDT как часть основного ключа (кластерный столбец), а также добавлять и переименовывать поля. Недостатком является то, что при выполнении выборок вы всегда выбираете весь UDT, и вы не можете удалить поле. Не переусердствуйте с использованием, потому что они ад, особенно для тех, которые используются в разных таблицах.

Использование серийной строки JSON хорош для некоторых случаев. Я даже слышал, как люди сохраняли сжатые данные в полях (protobuff) для решения своих проблем (я думаю, что об этом говорил кто-то из Soundcloud). Проблема с JSON заключается в том, что они не печатаются и вам нужна дополнительная логика приложения для обработки сериализации и изменений данных. Это также означает, что вы можете иметь переменную структуру и вставлять только те поля, которые вам нужны.

В конце концов, о ваших предпочтениях, пока вы понимаете плюсы и минусы обоих подходов.