Работая над системой управления контентом, я наткнулся на стену.Возвращаясь к моей модели данных, я заметил некоторые проблемы, которые могут стать более распространенными со временем.
А именно, я хочу вести контрольный журнал (журнал изменений) изменений записей пользователем (даже изменений записей пользователей)будет зарегистрирован).Из-за включения произвольного числа модулей я не могу использовать поле автоинкрементации таблиц для своих первичных ключей, так как оно неизбежно вызовет конфликты при попытке сохранить их ключи в одной таблице.
В журнале аудита будут храниться записи user_id
, record_id
, timestamp
, action
(INSERT / UPDATE / DELETE) и archive
(сериализованная копия старой записи)
I 'Мы рассмотрели несколько возможных решений этой проблемы, таких как генерация первичного ключа UUID
в логике приложения (для обеспечения совместимости между платформами баз данных).
Другой вариант, который я рассмотрел (и я уверен, чтоконсенсус будет отрицательным, даже если учесть этот метод), создав таблицу RecordKey
, чтобы поддерживать глобально автоинкрементный ключ.Тем не менее, я уверен, что есть гораздо лучшие методы для достижения этой цели.
В конечном счете, мне любопытно узнать, какие варианты я должен рассмотреть, пытаясь реализовать это.Например, я намереваюсь разрешить (хотя бы запустить) параметры хранилища MySQL и SQLite3, но меня беспокоит то, как каждая база данных будет обрабатывать UUID
s.
Edit, чтобы сделать мой вопрос менее расплывчатым: Будет ли использование глобальных идентификаторов рекомендуемым решением для моей проблемы?Если это так, используя 128-битный UUID (приложение или сгенерированная база данных), что я могу сделать в моей схеме таблицы, которая поможет максимизировать эффективность запросов?