Направляет личный тип данных для баз данных?
Он связан с BI и слиянием данных из разных источников данных и сделает этот процесс более плавным.
И есть ли оптимальная стратегия перехода из базы данных без Гидов в версию с Гидами без потери информации?
Ответы
Ответ 1
Отредактировано после того, как прочитал ответ Франса Бумы, поскольку мой ответ был принят и поэтому перенесен на вершину. Спасибо, Франс.
GUID действительно делают хорошую уникальную ценность, однако из-за их сложного характера они не очень удобочитаемы для человека, что может затруднить поддержку. Если вы собираетесь использовать GUID, вы можете подумать о том, чтобы провести анализ производительности операций с массовыми данными, прежде чем сделать свой выбор. Учтите, что если ваш первичный ключ "кластеризован", то GUID не подходят.
Это связано с тем, что кластерный индекс заставляет строки физически переупорядочиваться в таблице на вставках/обновлениях. Поскольку идентификаторы GUID являются случайными, каждая вставка потребует фактических строк в таблице для перемещения, чтобы освободить место для новой строки.
Лично мне нравится иметь два "ключа" по моим данным:
1) Основной ключ
Уникальные числовые значения с кластерным первичным ключом. Это мой внутренний идентификатор системы для каждой строки и используется для уникальной идентификации строки и внешних ключей.
Идентификация может вызвать проблемы, если вы используете репликацию базы данных (SQL Server автоматически добавит столбец "rowguid" для таблиц с репликами слияния), поскольку семя идентичности поддерживается на каждый экземпляр сервера, и вы получите дубликаты.
2) Внешний ключ/внешний идентификатор/бизнес-идентификатор
Часто также предпочтительно иметь дополнительную концепцию "внешнего идентификатора". Это часто поле символов с уникальным ограничением (возможно, включая другой столбец, например, идентификатор клиента).
Это будет значение, используемое внешними интерфейсами, и будет доступно для клиентов (которые не распознают ваши внутренние значения). Этот "бизнес-идентификатор" позволяет клиентам ссылаться на ваши данные, используя значения, которые что-то означают для них.
Ответ 2
Имейте в виду, что GUID (или "unique_identifier" ) для ПК является плохим выбором, так как многие ПК имеют кластерный индекс (поэтому все строки хранятся на диске в индексированном порядке). Поскольку GUID являются случайными, он не уверен, что новая строка будет добавлена в конце индекса, но может быть вставлена в середине индекса. Это приводит к сбою диска при перемещении строк.
ЕСЛИ вы считаете guid's, по крайней мере, используете sqlserver 2005 или вверх и NEWSEQUENTIALID() для значения PK, чтобы получить последовательный указатель, который всегда больше последнего, поэтому всегда добавляются в конце индекса. Если вы не используете sqlserver (но, например, postgresql или используете oracle и используете CHAR (32) или другой тип), рассмотрите COMB (см. http://www.informit.com/articles/article.aspx?p=25862)
Ответ 3
Вероятно, вам понадобится средство для отслеживания источника для целей аудита, особенно по финансовым данным.
Даже если вы используете синтетические ключи в своей системе склада (которые вы почти наверняка хотите сделать, если у вас несколько источников данных), вам все равно придется поддерживать аудит. Поместите столбец "Источник данных" и "Естественный ключ" на таблицы в вашей системе и заполните их кодом для источника и представлением того, что уникально идентифицирует запись в источнике.
Если вы это сделаете, синтетические ключи должны быть только ints или числами, достаточно широкими, чтобы хранить достаточно значений (ints, если < 4b строк, если число превышает число). Это означает, что они будут более читабельны, чем GUID.
Ответ 4
Следующий проект может пригодиться или по крайней мере вдохновить вас на решение этой проблемы.
https://github.com/twitter/snowflake
Ответ 5
Все, что может однозначно идентифицировать запись, - это хороший тип данных идентификации. GUID обычно хорош, но это не оптимальная идентификация, если у вас действительно есть уникальный идентификатор, поступающий из исходных данных. GUID - это случайное целочисленное значение, гарантируемое быть уникальным; однако в ситуации интеграции вы часто хотите обнаруживать дубликаты информации, а не просто совпадать с записями.
Ответ 6
Нет "наилучшего" типа данных идентичности. Различные варианты имеют разные сильные и слабые стороны. Я чаще использую GUID, но мне приходится регулярно общаться с отключенными клиентами и объединять репликацию, поэтому выбор подходит. Если вам не нужно иметь дело с репликацией (то есть ситуация, когда пользователь добавляет новые записи при отключении от центральной базы данных), лучше всего использовать автоматически увеличивающееся поле int.
Ответ 7
GUID лучше в сценариях репликации данных, при этом подход "идентичности" должен быть осторожным, чтобы не вызвать конфликты между реплицируемыми данными между базами данных.
Надеюсь, это поможет.
Ответ 8
Мне вообще не нравился GUID, но я полюбил его. Я люблю его, потому что он относительно единообразный и принят, и я в конечном итоге пишу меньше кода, используя его и поддерживая этот код, чем обычно писал и поддерживал.
Это особенно полезно для хранения файлов, где вам нужно гарантировать уникальность имени файла в каталоге с потенциально большим количеством файлов, включая ранее существовавшие файлы.