Вот проблема.
Наши «клиенты» регулярно попадают в систему как часть массовой загрузки файлов (CSV) от клиентов. Данные, которые мы получаем от них, - это Имя, Адрес, Почтовый индекс, Номер ссылки клиента.
Мы сохраняем их в «Таблицу клиентов» Кассандры.
Когда мы делаем это, мы назначаем UUID который мы затем используем во всей остальной системе.
Вопрос касается первичных ключей… у нас есть два варианта: 1) UUID в качестве первичного ключа или 2) составной первичный ключ (имя, адрес, почтовый индекс) .
Проблема с этими опциями: 1) у нас нет UUID при первоначальной вставке, возможно, что «клиенты» дублируются, так как же мы дупилируем? Получить (выбрать) с последующим upsert будет неэффективно. 2) имеет несколько проблем: а) если мы выполним операцию обновления, есть вероятность, что UUID может быть перезаписан… б) есть также проблема, что имя, адрес, почтовый индекс не могут быть обновлены, так как они составной первичный ключ ... а) может не быть проблемой, так как изменение UUID вызовет событие, которое будет получено другими заинтересованными службами ... но отчасти удаляет точку UUID ... b) мы можем сохранить поля псевдонимов (AKA) для клиентов, которые предпочитают или обновляют данные, сохраняя при этом исходные данные для справки… хотя это кажется неуклюжим.
Предпочтительнее, и самым простым способом будет go для варианта 1, но без использования первичного ключа для начального создание - не уверен, что это возможно? При выборе варианта 2 нам также нужно будет обновить все поля, кроме столбца UUID ...