powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вот сижу и думаю. И хочется и колется.
5 сообщений из 5, страница 1 из 1
Вот сижу и думаю. И хочется и колется.
    #32006437
Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суть в следующем.
Что бы облегчить себе жизнь в дальнейшем хочу сделать уникальный Ид любой записи в БД.
Сделать хочу путем наследования ПкИд от одного Корня. Таким образом добавление
любой записи в базе приводит к добавлению записи в Корневой таблице.

Что это даст:
Ну например, для реализации фильтрации по периоду достаточно в корневой таблице
добавить два поля DataOpen DateClose. После чего к любому запросу автоматически добавляется условие на выбор
и получаем себе такой глобальный фильтр... ну и т.д.

Вот только терзают меня глубокие сомнения. Не приведет ли это
к полному загибу на выборках. Как никак как минимум на одно условие больше...

Ясное дело что лучше сделать эксперемент, чем сейчас и занимаюсь, но может
кто то уже страдал такой фигней

Хотелось бы услышать мнение ГУРУ по этому поводу...

ЗЫ: Собственно это будет большая nTier система. А в базе примерно будет (следовательно и в корневой таблице)
3 - 5 МЛН записей
...
Рейтинг: 0 / 0
Вот сижу и думаю. И хочется и колется.
    #32006454
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Я не гуру, поэтому прошу прощение за то, что вклинился в разговор между молчаливыми гуру и задавшим вопрос. Рекомендую не адресовать вопросы к гуру , если желаете получить на вопросы ответ. Настоящие гуру на подобные вопросы не отвечают в меру своей скромности. А те, которые отвечают, на самом деле таковыми не являются (хотя могут страдать манией величия). На данном форуме все равны и лично я против дискриминации и разделения его членов на гуру / не гуру. Теперь по сути...
2. Вероятность небольшая, но можешь упереться в переполнение int (если собираешься использовать identity). И дело тут не столько в том, что записей в БД много (до диапазона int вроде бы далеко). А дело в том, что при использовании int неизбежно возникают дырки в нумерации. Соотношение живых номеров к дыркам может сильно меняться от условий работы, логики.
3. Раздробленность информации по разным таблицам - не так уж и плохо. Скорее даже наоборот. Некоторые специально разбивают таблицы на несколько однотипных, относящихся к разным учетным периодам. Только ради того, чтобы ускорить выборку. Ты же хочешь сделать наоборот. Видимо, для того, чтобы ее замедлить. Как ты думаешь, сколько времени будет выполняться самый простой select только по одной корневой таблице, содержащей 5 млн записей?
4. На самом деле никаких плюсов это не принесет. Какой смысл фильтровать по корневой таблице, если она в любом случае должна джоиниться с какими-то другими таблицами, систематизировать которые для реализации унификации запросов на любую тему все равно вряд ли удастся. Экономии места в таблицах тоже не добъешься. Учетная дата по каждой операции все равно где-то должна фиксироваться. В корневой таблице или в другой - значения не имеет. Место она все равно занимать будет. А вот дополнительные ключевые поля место займут (и увеличат время выборки).
5. Не понятно, зачем ДВА поля. Кого ты там закрываешь и открываешь ПО каждой операции? Если речь идет об учете хозяйственных операций в учете, то у них всегда одна учетная дата - дата совершения операции.
6. Твой подход не устраняет главной проблемы, ради которой используют подобные решения - устранение конфликтов репликации при обменен информацией между множеством баз данных. Дело в том, что построенный таким способом идентификатор является уникальным только в пределах базы данных (если речь идет об int+identity). Обеспечить уникальность на разных серверах можно только заданием разных диапазонов identity для идентификаторов разных серверов (еще больше сократив запас разрядной сетки int), либо использовав составной индекс, в который входит дополнительное поле - идентификатор сервера. IMHO, с помощью Uniqueidentifier все получается гораздо изящнее. Тем более, что эти поля автоматом могут использоваться как rowguid для MERGE-репликации.

Резюме. Я бы так делать не стал. Но на вкус и цвет...
...
Рейтинг: 0 / 0
Вот сижу и думаю. И хочется и колется.
    #32006746
В идее с глобальным идентификатором есть несколько положительных моментов.
К примеру часто нужно хранить ссылки на различные объекты базы, например в аналитиках проводок. Можно конечно для каждого справочника выделить отдельное поле, но при большом их количестве или добавлении новых возникнут проблемы. Тут как-раз и поможет ссылка на таблицу с идентификаторами всех объектов. В этой таблице можно хранить общие для всех сущностей атрибуты (Name наприме), а дополнительные выносить в отдельные таблицы и связывать по ключу. Проблемы могут возникнуть при большом потоке update, insert - поэтому может имеет смысл использовать эту таблицу именно для справочников, а операции или проводки не привязывать к этому механизму.

Кстати попадалась мне ссылка на подобную систему - ULTIMA-S. Правда незнаю что с ней сейчас.
http://ivn73.tripod.com/ultima1.htm
...
Рейтинг: 0 / 0
Вот сижу и думаю. И хочется и колется.
    #32006821
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то эту тему совсем недавно обсуждали с SergSuper. Вроде бы все обмусолили... Если в одной большой таблице хранится всё, то это одно (как и предлагал SergSuper). А если в одной большой таблице хранятся только идентификаторы (ну и плюс учетные даты), а все остальные поля в других таблицах, то IMHO толку от этого никакого.
Некоторый смысл возникает, если кроме самого идентификатора хранить еще и имя (или идентификатор) таблицы, к которой он имеет отношение. Но этот смысл появляется только при использовании динамического SQL, который имеет свои минусы (кроме плюсов).
...
Рейтинг: 0 / 0
Вот сижу и думаю. И хочется и колется.
    #32006827
Фотография AnS1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ссылочку на конференцию не дадите?
Где-то я её пропустил...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вот сижу и думаю. И хочется и колется.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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