Обход возможных коллизий - PullRequest
0 голосов
/ 29 ноября 2018

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

Я написал сценарий, который объединяет две учетные записи, исохраняет запись в таблице merge_record.Каждая строка данных хранится как одна запись merge_record, содержащая исходную учетную запись, целевую учетную запись, тип действия (удаление, слияние или исключение), имя таблицы, столбец, который обозначает номер счета, и закодированную строку, содержащую все пары ключ / значение.в следующем формате:

columnoneMERGEBANANAEQUALSvalueoneMERGEBANANASPLITTERcolumntwoMERGEBANANAEQUALSvaluetwo

Да, это, вероятно, трудно прочитать, но моя цель состояла в том, чтобы разграничить пары данных некоторой невероятно маловероятной для использования пользователем строкой,и иметь равные быть одинаково маловероятно, не будет разделен.Причина, по которой мне это нужно, заключается в том, что я также создал кнопку отмены слияния, и она должна быть обратимой - поэтому слияние отмены сканирует каждую строку merge_record, деконструирует пары столбец / значение и вставляет их в table_name под идентификатором original_account в идентификаторераздел account_column.

Однако мне все еще не нравится это.Некоторые придурки, прочитавшие этот пост, могут ввести MERGEBANANAEQUALS в качестве имени, запросить слияние, а затем запросить отмену.Есть ли способ абсолютно гарантировать, что столкновения не произойдет?Или я должен изменить способ хранения пар ключ / значение?Если это так, что может быть лучше?

1 Ответ

0 голосов
/ 29 ноября 2018

Простой ответ - создать из данных строку CSV, например:

datum1,"datum,with,commas","datum with ""double quote""",,42

Просто избегайте всего, что противно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...