Как можно предотвратить вставку mysql в определенный интервал времени? - PullRequest
0 голосов
/ 22 июня 2019

У меня есть система, в которой пользователи могут вводить данные в таблицу mysql со многих сайтов по всему миру.

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

Прежде чем вы рассердитесь -> Я понимаю, что могу установить первичный ключ для определенных столбцов и предотвратить вставку дубликатов.

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

Я пытался отключить кнопку на 1-2 секунды, но это не решило проблему полностью.

Если у меня есть столбцы: weight, height, country и отметка времени, я бы хотел как-то проверить, есть ли вставка в n разделах отметки времени, где сообщение содержит данные, соответствующие этим переменные. Это говорит мне о случайном дублировании пользователя, и я не должен вставлять его в базу данных.

Я не слишком знаком с MYSQL, поэтому я надеялся получить здесь некоторое руководство.

Спасибо.

1 Ответ

0 голосов
/ 22 июня 2019

Существуют разные решения, в зависимости от специфики вашего случая:

  • Если вам нужно применить какое-то правило, которое проверяет новую строку, используя значения внутри самой строки, подойдет ограничение CHECK. Однако учтите, что MySQL применяет ограничения CHECK, начиная с версии 8.0.3 (если я хорошо помню).

  • Если вы хотите применить правило по отношению к другим строкам, вы можете сериализовать вставки в очередь. Потребитель очереди будет проверять вставки одну за другой и будет принимать или отклонять их. Учтите, что сериализация не является хорошим вариантом для массового уровня вставок, поскольку она создает узкое место (это может быть вашим случаем, поскольку вы говорите вставки со всего мира).

  • В качестве альтернативы вы можете использовать оптимистическую вставку и всегда производить вставку с промежуточным статусом «ожидание проверки». Затем другой процесс (ы) может проверить строку. Если все хорошо, то строка утверждается; если нет, то выполняется процедура компенсации, а-ля-микросервис .

Какой у вас случай?

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