Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нужен ли server_id? / 6 сообщений из 6, страница 1 из 1
31.07.2002, 09:42:20
    #32039816
Тимур
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли server_id?
Возник спор с коллегами по поводу таблицы.
Хотим с нуля создать базу (опираясь на опыт предудущего проекта). Так вот, у нас имеется несколько филиалов, данные ходят по репликации. В старой системе механихм репликации был самопальный (где через архив, где заливали данные в одну репликационную таблицу, реплицировали ее средствами MS SQL, и затем хр. пырой разкладывали по нужным таблицам). База - псевдообъектная. В таблице OBJECTS записи имели класстерный ключ object_id + class_id,где object_id - identity. Чтобы добится уникальности "объектов" в масштабе всех филиалов была добавлена вспомогательная таблица REPLOBJECTS, в которой кажодму OID-у присваивался GUID (object_id int, gu_id varchar(40)).
Возник вопрос, а не внести ли в таблицу OBJECTS поле server_id, который позволит добится уникальности объекта (для каждого филиала - свое значение server_id).
Интересно, как решаются подобные проблемы?
...
Рейтинг: 0 / 0
31.07.2002, 10:23:06
    #32039827
Jimmy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли server_id?
ИМХО подобные проблемы решаются применением в качестве ПК (идентификатора) поля типа uniqueidentifier, где по дефолту стоит значение NEWID.

*** BOL SQL 2000 ***
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
B. Use NEWID in a CREATE TABLE statement
This example creates cust table with a uniqueidentifier data type, and uses NEWID to fill the table with a default value. In assigning the default value of NEWID(), each new and existing row has a unique value for the cust_id column. 

 -- Creating a table using NEWID for uniqueidentifier data type. 
 
CREATE TABLE cust
(
 cust_id uniqueidentifier NOT NULL
   DEFAULT newid(),
 company varchar( 30 ) NOT NULL,
 contact_name varchar( 60 ) NOT NULL, 
 address varchar( 30 ) NOT NULL, 
 city varchar( 30 ) NOT NULL,
 state_province varchar( 10 ) NULL,
 postal_code varchar( 10 ) NOT NULL, 
 country varchar( 20 ) NOT NULL, 
 telephone varchar( 15 ) NOT NULL,
 fax varchar( 15 ) NULL
)
GO

...
Рейтинг: 0 / 0
31.07.2002, 11:07:48
    #32039843
Тимур
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли server_id?
А производительность (скорость поиска по ключу) в больших таблицах (> 10 000 000 записей)
...
Рейтинг: 0 / 0
31.07.2002, 11:50:07
    #32039880
Jimmy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли server_id?
Уникальный идентификатор хранится в бинарном виде, т.е. не зависит от локализации. Длина ключа постоянная, уникальность значений 99.9999999999999 %.

Какие могут быть проблемы?

ЗЫ Кстати, в BOL 2000 в статье о репликациях именно UI приводится в качестве рекомендуемого ключа, т.к. уникальность значения поддерживается не на уровне таблицы или БД, а вообще в мире!
...
Рейтинг: 0 / 0
31.07.2002, 13:15:59
    #32039936
Тимур
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли server_id?
Спасибо!!!
...
Рейтинг: 0 / 0
31.07.2002, 13:21:51
    #32039939
MarchCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли server_id?
Я полностью поддерживаю Jimmy !!!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нужен ли server_id? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]