powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Объект и классификаторы
16 сообщений из 16, страница 1 из 1
Объект и классификаторы
    #37032238
__вопрос_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужен совет или хоть указания пути в котором лучше следовать по следующему вопросу.

Необходимо создать хранилище в котором будет содержатся набор объектов и классификаций по этим объектам.
Проблема заключается в том что выборка будет производится по этим самым классификаторам (которых может быть неопределенное количество, в данном случае предполагается что не больше 50-ти).
Данных в самом справочнике на начальном этапе будет где-то пол миллиона записей + 1000 записей в день.
Из вариантов которые рассматривали это хранить в каждой записи поле с битовой маской по которой затем можно осуществлять поиск по нужным классификаторам (но в таком случае в плане идет index scan) – возможно ли как то заставить sql делать не полное сканирование индекса а толь частичную выборку?
Второй вариант это хранить набор ключей для каждой из записи (по сути все комбинации классификаторов которыми обладает объект), но выходит что записей в таблице будет очень большое (предположительно около миллиарда (как бы много)), насколько продуктивным может быть поиск по такой таблице?

Возможно рассмотрение варианты эти неверно выбранный путь и стоит обратить свое внимание в другую сторону?

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
Объект и классификаторы
    #37032956
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте сначала разберемся с терминологией
__вопрос_ Необходимо создать хранилище в котором будет содержатся набор объектов и классификаций по этим объектам.хранилище, в котором содержатся факты и измерения. Предполагаю что под объектами вы называете факты, под классификаторами измерения
__вопрос_ (которых может быть неопределенное количество, в данном случае предполагается что не больше 50-ти).Приведите пример неопределенного количества.
Попробую заглянуть в хрустальный шар (если ошибусь вы меня поправите)
У вас есть некие факты которых (предположительно около миллиарда (как бы много))
У вас есть одно или несколько ( не больше 50-ти ) измерений которых где-то пол миллиона записей + 1000 записей в день. . На измерения накладываем фильтр из неопределенное количество, в данном случае предполагается что не больше 50-ти условий.
Ваша задача эффективно соединить отобранные измерения с таблицей фактов, так?
Еще лучше если вы накидаете скрипты для создания таблиц с вашими именами, разговор будет более предметный. После уяснения задачи можно будет говорить об индексах и планах.
...
Рейтинг: 0 / 0
Объект и классификаторы
    #37033162
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по сабжу EAV ?
...
Рейтинг: 0 / 0
Объект и классификаторы
    #37033198
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> выборка будет производится по этим самым классификаторам (которых может быть неопределенное количество, в
> данном случае предполагается что не больше 50-ти).

Откройте тайну, что это за пятьдесят классификаторов? Десяток-другой - куда ни шло, а пятьдесят - откуда? Очередной вечный двигатель?
...
Рейтинг: 0 / 0
Объект и классификаторы
    #37037060
__вопрос_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621> выборка будет производится по этим самым классификаторам (которых может быть неопределенное количество, в
> данном случае предполагается что не больше 50-ти).

Откройте тайну, что это за пятьдесят классификаторов? Десяток-другой - куда ни шло, а пятьдесят - откуда? Очередной вечный двигатель?

да тайны нету.

По большему счету это будут товары. У каждого товара есть свои характеристики. У мобильного телефона их одно количенство, у автомобилей их куда большее кол-во.

В это как бы и вся беда. Что типы товаров могут быть разные, а их характеристик еще больше. И по большей части из них нужно будет делать все время выборки.
...
Рейтинг: 0 / 0
Объект и классификаторы
    #37037071
__вопрос_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257Еще лучше если вы накидаете скрипты для создания таблиц с вашими именами, разговор будет более предметный. После уяснения задачи можно будет говорить об индексах и планах.

сори что не отвечал. сейчас постараюсь представить упрощеный вариант
...
Рейтинг: 0 / 0
Объект и классификаторы
    #37037078
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> У каждого товара есть свои характеристики.

А классификаторы-то здесь каким боком? Вы, насколько я понимаю, собираетесь классифицировать товары потребительского рынка, это один классификатор.

> типы товаров могут быть разные, а их характеристик еще больше

Поищите в архиве, обсуждается постоянно. Стандартное решение - традиционная структура данных для известных характеристик (возможно, с типизацией) плюс структура данных для неизвестных на момент проектирования характеристик с тем расчетом, что с течением времени мусорные данные будут мигрировать в регулярные структуры.
...
Рейтинг: 0 / 0
Объект и классификаторы
    #37037090
__вопрос_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621> У каждого товара есть свои характеристики.

А классификаторы-то здесь каким боком? Вы, насколько я понимаю, собираетесь классифицировать товары потребительского рынка, это один классификатор.

тут проблема что фильтры нужно будет накладывать сразу на несколько от 1 до 10-20 характеристик товара и получать результат. и таких выборок будет много и часто (расчетное 1 выборка в секунду (типичные будут кешится), но может быть и куда больше.

guest_20040621> типы товаров могут быть разные, а их характеристик еще больше

Поищите в архиве, обсуждается постоянно. Стандартное решение - традиционная структура данных для известных характеристик (возможно, с типизацией) плюс структура данных для неизвестных на момент проектирования характеристик с тем расчетом, что с течением времени мусорные данные будут мигрировать в регулярные структуры.
а наводку по каким названиям искать хоть?
...
Рейтинг: 0 / 0
Объект и классификаторы
    #37037109
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> тут проблема

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

> таких выборок будет много

Это уже другая задача.

> а наводку по каким названиям искать хоть?

Вопросы формулируются по-разному. Одни хотят универсальное хранилище, другие хотят хранить любое количество атрибутов. Пролистайте пяток страниц форума, обязательно наткнетесь на такие обсуждения.
...
Рейтинг: 0 / 0
Объект и классификаторы
    #37037118
__вопрос_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621> тут проблема

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


ну например продажа авто. фильтров там может быть достаточно много. и вариантов фильтрации у пользователя будет точно не меньше 10-ти (причем в принципе самые необходимые только)
...
Рейтинг: 0 / 0
Объект и классификаторы
    #37037144
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> например продажа авто

;) Это же ваше приложения, вам виднее, какие должны быть критерии выборки. Считаете, что их должно быть двадцать, значит, их должно быть двадцать.
...
Рейтинг: 0 / 0
Объект и классификаторы
    #37037279
__вопрос_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621> например продажа авто

;) Это же ваше приложения, вам виднее, какие должны быть критерии выборки. Считаете, что их должно быть двадцать, значит, их должно быть двадцать.

проблема только в том как их хранить :( а потом делать быструю выборку из них :(
...
Рейтинг: 0 / 0
Объект и классификаторы
    #37037493
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__вопрос_ проблема только в том как их хранить :( а потом делать быструю выборку из них :( Опять не вижу проблемы. Итак у нас одна таблица фактов и одно измерение Товары (может быть и другие но они нам пока неинтересны). Пользователь ввел свой набор фильтров, сформировал запрос, получил результат и хочет сохранить свои фильтры чтобы в следующий раз начинать не с чистого листа? Где проблема? На каком этапе?
...
Рейтинг: 0 / 0
Объект и классификаторы
    #37037590
__вопрос_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да на первый взгляд и проблем особых нету.

Минимизхированый вариант для работы свел к трем таблицам

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Attribute]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[Attribute](
	[AttributeId] [int] NOT NULL,
	[AttributeName] [varchar]( 64 ) NOT NULL,
 CONSTRAINT [PK_Attribute] PRIMARY KEY CLUSTERED 
(
	[AttributeId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Tovar]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[Tovar](
	[TovarId] [int] IDENTITY( 1 , 1 ) NOT NULL,
	[TovarName] [varchar]( 64 ) NULL,
	[DateCreate] [datetime] NULL,
	[Price] [money] NULL,
 CONSTRAINT [PK_Tovar] PRIMARY KEY CLUSTERED 
(
	[TovarId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TovarAttribute]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[TovarAttribute](
	[TovarId] [int] NOT NULL,
	[AttributeId] [int] NOT NULL,
 CONSTRAINT [PK_TovarAttribute] PRIMARY KEY CLUSTERED 
(
	[TovarId] ASC,
	[AttributeId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_TovarAttribute_Attribute]') AND parent_object_id = OBJECT_ID(N'[dbo].[TovarAttribute]'))
ALTER TABLE [dbo].[TovarAttribute]  WITH CHECK ADD  CONSTRAINT [FK_TovarAttribute_Attribute] FOREIGN KEY([AttributeId])
REFERENCES [dbo].[Attribute] ([AttributeId])
GO
ALTER TABLE [dbo].[TovarAttribute] CHECK CONSTRAINT [FK_TovarAttribute_Attribute]
GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_TovarAttribute_Tovar]') AND parent_object_id = OBJECT_ID(N'[dbo].[TovarAttribute]'))
ALTER TABLE [dbo].[TovarAttribute]  WITH CHECK ADD  CONSTRAINT [FK_TovarAttribute_Tovar] FOREIGN KEY([TovarId])
REFERENCES [dbo].[Tovar] ([TovarId])
GO
ALTER TABLE [dbo].[TovarAttribute] CHECK CONSTRAINT [FK_TovarAttribute_Tovar]

но при такой в случае если пользователь будет делать фильтр по атрибутам (на входе знаем все ИД атрибутов) соорудится такой себе немалый in - что приведет в конечном итоде к сканированию всей таблицы :(

для увеличения быстродействия по выборке можно написать и нечто подобное

create table #t (id int primary key)
insert into #t(id) values(1)
insert into #t(id) values(3)

select TovarId from TovarAttribute t
inner join #t on t.AttributeId = #t.id
drop table #t

отсбда вопрос как лучше сделать/переделать подобную структуру чтобы при выборке по нескольким атрибутам запрос на выборку выполнялся максимально быстро?
...
Рейтинг: 0 / 0
Объект и классификаторы
    #37037776
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__вопрос_ что приведет в конечном итоде к сканированию всей таблицы :(
Какой? Если про товары, то нефиг делать EAV. EAV это неизлечимые проблемы с производительностью.
И где у вас здесь факты (предположительно около миллиарда) например продажи/поступления и т.п. товаров. Или их нет (или есть но это уже другая история к данному топику не относящаяся)?
...
Рейтинг: 0 / 0
Объект и классификаторы
    #37038797
__вопрос_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257__вопрос_ что приведет в конечном итоде к сканированию всей таблицы :(
Какой? Если про товары, то нефиг делать EAV. EAV это неизлечимые проблемы с производительностью.
И где у вас здесь факты (предположительно около миллиарда) например продажи/поступления и т.п. товаров. Или их нет (или есть но это уже другая история к данному топику не относящаяся)?

фактов как таковых не будет, задача несовсем касающаяся продаж (в привычном виде :) )

в принципе сейчас протестировал выборку через In - и был приятно удивлен так как даже при больших условиях (более 1000 значений для выборки) все отдается на ура и план запроса строится так великолепно.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Объект и классификаторы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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