powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / подскажите хорошую практику наименования связанных таблиц
25 сообщений из 132, страница 5 из 6
подскажите хорошую практику наименования связанных таблиц
    #40003046
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt
Конечно, ведь об этом уже трепались в какой-то из тем.

То что трепались это заметно ...

hVostt
Так вы решили прекратить дискуссию в той теме.

Если бы была дискуссия, но вы ее уводите в болтологию и кидание какашками, а это мне не интересно.

hVostt
Честно говоря, мне непонятен термин "мнение" в контексте инженерной дисциплины.

Одну и ту же задачу в программировании можно решить разными способами и зачастую приоритет различных способов не очевиден, поэтому абсолютистское мнение, что какой то способ должен быть единственным имеющим право на существование, является именно субъективным мнением.

hVostt
Представьте себе, как два математика спорят, один считает, что 2+2=4, а другой считает, что 2+2=5. Понимаете дикий абсурд ситуации? В чём смысл подобного "обмена мнениями" в подобных случаях?

К чему этот абсурдный пример? Вы считаете, что 2+2=5? Ну да переубеждать вас не имеет смысла, поэтому и общение с вами было прекращено.

hVostt
Я вот говорю, вы не правы в том топике. И мне как-то всё равно, останетесь вы при своём мнении, или нет. Нет цели вас в чём-то убедить.

А я говорю, что вы не правы и мне тоже как-то все равно, останетесь вы при своём мнении, или нет, и у меня тоже нет цели вас в чем-то убедить.

hVostt
И я вам прямо говорю, что тяжело и больно -- исключительно для вас. Так как вы пока не умеете работать с такими данными, ещё не хватает опыта, чтобы сделать такую архитектуру и организацию, чтобы не было тяжело и больно.

Вы оказывается еще и Ванга, по хрустальному шару гадали кто что умеет или не умеет? Вот потому с вами и было прекращено общение, ибо конструктива никакого, конкретики никакой, а выслушивать от форумских троллей что я что то не умею или не хватает опыта, идите ка вы тролли в сад.

hVostt
Интересно, если вы столкнётесь с концепцией Event Sourcing, мозги взорвутся и разметаются по стенам? Ведь там вообще мастер-данные это поток событий -- изменений данных, никаких тебе таблиц.

И какой ответ вы хотите на этот высер? Можете не отвечать ...

PS: общение с вами дорогой мой неадекватный друг закончено.
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003169
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode
Если бы была дискуссия, но вы ее уводите в болтологию и кидание какашками, а это мне не интересно.


Вам не интересно, когда у вас кончаются аргументы.
Вот это очевидно, а ваша характеристика дискуссии -- обыкновенная попытка съехать с темы, и не более того.


graycode
Одну и ту же задачу в программировании можно решить разными способами и зачастую приоритет различных способов не очевиден, поэтому абсолютистское мнение, что какой то способ должен быть единственным имеющим право на существование, является именно субъективным мнением.


Но вот здесь, вы не предложили никакого способа.
Но заявили, что это "больно".
Причина — отсутствие у вас нужных компетенций.
Что нам с вашим мнением делать? Посочуствовать?

graycode
К чему этот абсурдный пример? Вы считаете, что 2+2=5? Ну да переубеждать вас не имеет смысла, поэтому и общение с вами было прекращено.


Пример у тому, что вы не готовы вести дискуссию, так как у вас нет аргументов.
Ваше нежелание вполне обосновано.
На нет и суда нет.

graycode
Вы оказывается еще и Ванга, по хрустальному шару гадали кто что умеет или не умеет? Вот потому с вами и было прекращено общение, ибо конструктива никакого, конкретики никакой, а выслушивать от форумских троллей что я что то не умею или не хватает опыта, идите ка вы тролли в сад.


Теперь вы сваливаетесь в унылое хамство. Это вполне ожидаемо от людей, не способных на конструктивную беседу.

graycode
PS: общение с вами дорогой мой неадекватный друг закончено.


Мда, печально, что вы оказались унылым хамлом.
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003170
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt
Мда, печально, что вы оказались унылым хамлом.

Увы, все что вы описали в своем пространном посте вы начали первым, собственно и получаете в ответ.

Вот вам конкретика, есть выборка записей из таблицы t по попаданию поля some_date в заданный интервал, вы утверждаете, что можете получить такой же результат в случае когда поле some_date находится в таблице t_log (лог для таблицы t), а в таблице t отсутствует, при этом стоить это будет не больше в любом разрезе, по ресурсам, по времени выполнения, по сложности поддержки и т.д.

Чтобы было еще больше конкретики, таблица t - 70 миллионов записей, таблица t_log - 700 миллионов записей.
запрос из t - (select * from t where some_date between d1 and d2), где d1 и d2 - параметры. В случае с таблицей t_log необходимо по максимальной дате some_date попадающей в интервал d1-d2 найти идентификаторы и по ним отобрать записи из таблицы t.

Продемонстрируйте свою компетенцию, докажите ваше утверждение.
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003171
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode
вы утверждаете, что можете получить такой же результат


Зачем вы мне приписываете утверждения, которых я не делал?

graycode
Чтобы было еще больше конкретики, таблица t - 70 миллионов записей, таблица t_log - 700 миллионов записей.
запрос из t - (select * from t where some_date between d1 and d2), где d1 и d2 - параметры. В случае с таблицей t_log необходимо по максимальной дате some_date попадающей в интервал d1-d2 найти идентификаторы и по ним отобрать записи из таблицы t.


Вот вы какую конкретно бизнес-задачу решаете, можно поинтересоваться? Вроде как я уже задавал этот вопрос, но вы его проигнорировали.

Ладно, пусть мне пока непонятно, что и зачем вы делаете, поэтому придётся придумать за вас.
Зачем-то бизнесу нужно получить записи, которые изменялись в последний раз в какой-то интервал времени.
Хрен знает зачем оно нужно бизнесу, от чего вам так "больно", но бог с ним.

Заводится таблица с датой последнего изменения сущности. И всё.
Это называется проекция изменений.
Даже если такая таблица понадобится потом, её легко наполнить из лога изменений.

Но давайте расширим вашу историю. Бизнес хочет знать, какие сущности менял Вася в последний раз за интервал времени. Напомню, по-вашему в каждой таблице нужно добавить дату и время последнего изменения сущности. И это не обязательно будет Вася, сразу после Васи что-то поправил Петя.

Как будете решать? Страдать? :)

Я вот как буду делать, сделаю ещё одну проекцию. Хоть 100500 штук, да это увеличит объём базы, но всё будет работать максимально быстро. А когда проекция будет не нужна, дропну её.
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003172
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt,
Мусорный фон в ваших сообщениях мне не интересен, поэтому смотреть и отвечать буду только по конкретике.

hVostt
Заводится таблица с датой последнего изменения сущности. И всё.
Это называется проекция изменений.
Даже если такая таблица понадобится потом, её легко наполнить из лога изменений.

Т.е. вместо добавления поля в основную таблицу, вы предлагаете создать таблицу расширения 1:1 и получить дополнительное соединение в запросах и что самое главное, дополнительные затраты на поддержку этого расширения, и этот костыль вы предлагаете в контексте OLTP систем, я правильно понял?

hVostt
Я вот как буду делать, сделаю ещё одну проекцию. Хоть 100500 штук, да это увеличит объём базы, но всё будет работать максимально быстро. А когда проекция будет не нужна, дропну её.

Т.е. если вы захотите например иметь время изменения ключевых статусов объекта, пусть их будет 5 и отбирать объекты по этому времени, то вы вместо добавления 10 полей (статус, дата) создадите дополнительные 5 табличек (1:1) с двумя полями и во всех запросах по всему приложению добавите 5 соединений с этими дополнительными табличками, также будете поддерживать триггеры вставляющие и изменяющие записи в эти 5 табличек?
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003187
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode
hVostt
Мда, печально, что вы оказались унылым хамлом.

Увы, все что вы описали в своем пространном посте вы начали первым, собственно и получаете в ответ.

Вот вам конкретика, есть выборка записей из таблицы t по попаданию поля some_date в заданный интервал, вы утверждаете, что можете получить такой же результат в случае когда поле some_date находится в таблице t_log (лог для таблицы t), а в таблице t отсутствует, при этом стоить это будет не больше в любом разрезе, по ресурсам, по времени выполнения, по сложности поддержки и т.д.

Чтобы было еще больше конкретики, таблица t - 70 миллионов записей, таблица t_log - 700 миллионов записей.
запрос из t - (select * from t where some_date between d1 and d2), где d1 и d2 - параметры. В случае с таблицей t_log необходимо по максимальной дате some_date попадающей в интервал d1-d2 найти идентификаторы и по ним отобрать записи из таблицы t.

Продемонстрируйте свою компетенцию, докажите ваше утверждение.


Какая-то каша. Давайте по порядку, без грубостей и ваших любимых советов не заниматься проектированием БД.
1. Таблица логов, как правило, создается для того, чтобы в перспективе поймать какого-нибудь менеджера Васю Пупкина на умышленных или непредумышленных действиях. Под Васей Пупкиным мы сейчас понимаем и группу лиц, и оборудование, и бизнес-процессы. Т.е. Взаимодействие с таблицей логов носит экстраординарный внеплановый характер.
2. Само по себе наличие таблицы логов противоречит правилам нормализации, поскольку данные фактически дублируются.
3. Наличие таблицы логов говорит о том, что разработчик системы не уверен в своей системе и допускает умышленное или непредумышленное искажение данных. Теперь ваш пример t - 70 миллионов записей, таблица t_log - 700 миллионов записей
Уверенны-ли вы в том, что все 70 миллионов записей достоверны, при том, что в среднем они 10 раз поменялись?
4. t_log - 700 миллионов записей, предположим, это данные за 5 лет, нехитрыми расчетами мы можем выяснить, что это 266 изменений записей в минуту. Какой смысл хранить данные о последнем изменившем запись, если через доли секунды эту запись надо будет обновлять? Зачем дёргать триггер-на-изменение на таблице t ? И да, самая хохма, что при такой логике, очень легко "положить" любую БД. Понятно, да, о чем я говорю? Вася Пупкин меняет контрагента, триггер меняет последнюю дату изменения на новую, это приводит к срабатыванию триггера и т.д.
6. По вашему запросу (select * from t where some_date between d1 and d2) , нам надо выбрать, кто последний наследил в этой записи. Ну, выясним из таблицы t, что это был менеджер Пупкин. Ну и что? всё равно нам надо узнать, что он поменял и на что. Всё равно надо ползти в таблицу t_Log.
Код: sql
1.
select L.* from t_Log L where L.ID_t=:ID_t order by L.ID_t_Log desc fetch FIRST 1 ROWS ONLY


Запрос как запрос, все поля индексированы, отработает моментально. Где тут "тяжело и больно"?

Ещё раз, повторюсь, надо исходить из конкретики задачи. И решения будут разные. Конкретно по этим условиям t - 70 миллионов записей, таблица t_log - 700 миллионов записей . Скорее всего БД спроектирована неудачно, это скорее биллинг, и тут вообще стоит запретить какие-либо изменения-удаления записей. Тупо добавляй изменённую запись как новую. Никаких триггеров, никаих логов тогда не надо.
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003200
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode
........

Чтобы было еще больше конкретики, таблица t - 70 миллионов записей, таблица t_log - 700 миллионов записей.
запрос из t - (select * from t where some_date between d1 and d2), где d1 и d2 - параметры. В случае с таблицей t_log необходимо по максимальной дате some_date попадающей в интервал d1-d2 найти идентификаторы и по ним отобрать записи из таблицы t.


Давно в руки хрустальный шар не брал ;-)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 select T.* from t T
 where 1=1
   and exists (
         select L.* from t_Log L 
            where 1=1
           and L.ID_t=T.ID_t
           and L.some_date = (select LL.some_date from  t_Log LL
                                           where 1=1 
                                             and LL.some_date between :d1 and :d2 
                                           order by LL.ID_t_Log desc fetch FIRST 1 ROWS ONLY)
                    )



Это что-ли?
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003251
Фотография Валерий Юринский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zeon11
2. Само по себе наличие таблицы логов противоречит правилам нормализации, поскольку данные фактически дублируются.

Это вы что-то новое придумали!
Подумайте. :-)
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003296
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode
hVostt,
Мусорный фон в ваших сообщениях мне не интересен, поэтому смотреть и отвечать буду только по конкретике.


Зачем вы опять начинаете хамить, я вообще не понимаю.

graycode
Т.е. вместо добавления поля в основную таблицу, вы предлагаете создать таблицу расширения 1:1 и получить дополнительное соединение в запросах и что самое главное, дополнительные затраты на поддержку этого расширения, и этот костыль вы предлагаете в контексте OLTP систем, я правильно понял?


Я историю для вас расширил, можете ответить, вы как будете решать?

По вашему вопросу. Бизнес хочет получать ответы на свои запросы быстро. Это всегда связано с какими-то затратами. То, что вы называете по вашей необразованности "костылём", в продуктовых системах называется "денормализация", и она есть практически везде.


graycode
Т.е. если вы захотите например иметь время изменения ключевых статусов объекта, пусть их будет 5 и отбирать объекты по этому времени, то вы вместо добавления 10 полей (статус, дата) создадите дополнительные 5 табличек (1:1) с двумя полями и во всех запросах по всему приложению добавите 5 соединений с этими дополнительными табличками, также будете поддерживать триггеры вставляющие и изменяющие записи в эти 5 табличек?


Да, конечно, создам нужное количество проекций, чтобы решать задачи бизнеса. Мусорные поля в таблицах это колхоз. Во-первых, мусор. Во-вторых, таких полей в итоге может стать очень много, что крайне усложнит поддержку. В-третьих, многие проекции затрагивают сразу несколько таблиц, так что дополнительными полями в таблице вы не обойдётесь.

По поводу триггеров, вам так или иначе нужно триггерить изменения, чтобы писать либо в поля, либо в таблицу, разницы нет. В любом случае, я стараюсь избегать триггеров СУБД, и работать через поток событий. Практика показывает, что триггеры это УГ.
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003464
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt
Так как вы пока не умеете работать с такими данными, ещё не хватает опыта, чтобы сделать такую архитектуру и организацию, чтобы не было тяжело и больно.

Вы педалируете эту тему (что является ничем иным как переход на личности и начали хамить именно вы и продолжаете это делать, за что получаете в ответ) уже много сообщений подряд и вот наконец то я увидел конкретику, и оказалось, что такие говнокостыли которые вы предлагаете я уже делал и делал их когда в основную таблицу добавлять поля по тем или иным причинам было запрещено. Т.е. ваш подход для меня совсем не нов и в разрезе oltp это лютый трэш, для oltp это равносильно 2*2=5. Если вы это делаете в аналитической системе, то это совершенно другой вопрос, но в oltp это антипаттерн.

Вкратце минусы такого подхода: на операции DML на основной таблице мы вынуждены делать дополнительные операции по поддержке таблиц расширений; на таблицах расширений должен быть как минимум один индекс на id, т.е. 20 таблиц расширений, двадцать индексов, что очень "положительно" сказывается на производительности вставки записей; когда мы получаем данные, мы вынуждены присоединять таблицы расширений, что очень "положительно" сказывается на производительности запросов, если понадобился составной индекс из полей основной таблицы и поля из дополнения ... ; поиск по полям принадлежащим нескольким таким таблицам тоже очень "положительно" сказывается на производительности запросов. И имея такую кучу минусов утверждать, что это решение для oltp систем лучше чем добавление полей необходимых для оперативной работы в основную таблицу, это за гранью логики.

hVostt
в продуктовых системах называется "денормализация", и она есть практически везде.

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

hVostt
Практика показывает, что триггеры это УГ.

В общем и целом да, они дают дополнительные накладные расходы, если есть возможность реализовать ту же логику в приложении, то конечно это более хороший вариант.
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003518
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zeon11
Какая-то каша. Давайте по порядку, без грубостей и ваших любимых советов не заниматься проектированием БД.
1. Таблица логов, как правило, создается для того, чтобы в перспективе поймать какого-нибудь менеджера Васю Пупкина на умышленных или непредумышленных действиях. Под Васей Пупкиным мы сейчас понимаем и группу лиц, и оборудование, и бизнес-процессы. Т.е. Взаимодействие с таблицей логов носит экстраординарный внеплановый характер.
2. Само по себе наличие таблицы логов противоречит правилам нормализации, поскольку данные фактически дублируются.
3. Наличие таблицы логов говорит о том, что разработчик системы не уверен в своей системе и допускает умышленное или непредумышленное искажение данных. Теперь ваш пример t - 70 миллионов записей, таблица t_log - 700 миллионов записей
Уверенны-ли вы в том, что все 70 миллионов записей достоверны, при том, что в среднем они 10 раз поменялись?
4. t_log - 700 миллионов записей, предположим, это данные за 5 лет, нехитрыми расчетами мы можем выяснить, что это 266 изменений записей в минуту. Какой смысл хранить данные о последнем изменившем запись, если через доли секунды эту запись надо будет обновлять? Зачем дёргать триггер-на-изменение на таблице t ? И да, самая хохма, что при такой логике, очень легко "положить" любую БД. Понятно, да, о чем я говорю? Вася Пупкин меняет контрагента, триггер меняет последнюю дату изменения на новую, это приводит к срабатыванию триггера и т.д.
6. По вашему запросу (select * from t where some_date between d1 and d2) , нам надо выбрать, кто последний наследил в этой записи. Ну, выясним из таблицы t, что это был менеджер Пупкин. Ну и что? всё равно нам надо узнать, что он поменял и на что. Всё равно надо ползти в таблицу t_Log.
Код: sql
1.
select L.* from t_Log L where L.ID_t=:ID_t order by L.ID_t_Log desc fetch FIRST 1 ROWS ONLY


Запрос как запрос, все поля индексированы, отработает моментально. Где тут "тяжело и больно"?

Ещё раз, повторюсь, надо исходить из конкретики задачи. И решения будут разные. Конкретно по этим условиям t - 70 миллионов записей, таблица t_log - 700 миллионов записей . Скорее всего БД спроектирована неудачно, это скорее биллинг, и тут вообще стоит запретить какие-либо изменения-удаления записей. Тупо добавляй изменённую запись как новую. Никаких триггеров, никаих логов тогда не надо.


1. Совершенно верно, таблица лога не должна использоваться для оперативной работы о чем я и говорил, но вы почему то с этим спорили, почему вы с этим спорили? Поменяли свое мнение?
2. Таблица логов решает свою задачу и она вполне себе нормализованная, дублирования данных в ней нет.
3. Таблица логов нужна для разбора полетов, если что то пошло не так. Естественно данные в таблице факта достоверны и актуальны, даже если кто то внес ошибочные данные, они являются фактом и именно на тот случай что кто то внес недостоверную информацию нужна таблица логов, чтобы посмотреть что кто и когда и принять решение о том как откорректировать факт.
4. 70 миллионов в факте, допустим каждый объект в среднем проходит 10 состояний, итого получаем 700 в логе, это вполне реальное соотношение и такой прирост за 5 лет это даже не сильно нагруженная система, а лог за прошлые годы можно банально заархивировать куда нибудь в сторонку и удалить из оперативной системы, разумеется если на нем кто то нехороший не построил логику оперативной работы. Факт -> лог дорога с односторонним движением, т.е. никаких цепочек она не порождает и никакую базу не положит.
6. Что касается запросов данных для максимальной даты попадающей в интервал то вот 13931438 и вот 8947782 как они выглядят. Но когда таблица лога начинает использоваться подобным образом для работы оперативной системы, это ведет к сильной просадке производительности, у нее другое предназначение и ходят за данными в нее обычно при проведении исследования кто и как нагадил, ходят по конкретному идентификатору объекта, т.е. в логи при нормальном раскладе обычно идут с конкретным идентификатором, а таких записей в нашем примере 70/700 там всего 10 штук.

Естественно, когда биллинг считают по таблице лога это трэш, а возникает он, когда проектировщик считает что если что то пишется в лог, то достанем оттуда и будет нам счастье.
zeon11
Вот я и говорю, туши свет! ...
5. Поля MDDATE (дата последнего изменения), MDREASON (основание последнего изменения) - они зачем? Всё-же логируется в таблицу MO_LOG.
Лежат себе поля, хлеба не просят, поддержка их стоит минимально, но иногда бывают весьма полезны, никакой видимой причины для хэйта нет, однако ...

"и тут вообще стоит запретить какие-либо изменения-удаления записей" - запрет изменения вы себе как представляете?
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003547
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode
Вы педалируете эту тему (что является ничем иным как переход на личности и начали хамить именно вы и продолжаете это делать, за что получаете в ответ)


Нет не является. Успокойтесь пожалуйста и выдохните. Хватит уже этих соплей :)

graycode
я увидел конкретику, и оказалось, что такие говнокостыли которые вы предлагаете я уже делал и делал их когда в основную таблицу добавлять поля по тем или иным причинам было запрещено. Т.е. ваш подход для меня совсем не нов и в разрезе oltp это лютый трэш, для oltp это равносильно 2*2=5. Если вы это делаете в аналитической системе, то это совершенно другой вопрос, но в oltp это антипаттерн.


Можете пояснить почему это антипаттерн?
В чём проблемы? Откуда вообще вы это взяли?

graycode
Вкратце минусы такого подхода: на операции DML на основной таблице мы вынуждены делать дополнительные операции по поддержке таблиц расширений; на таблицах расширений должен быть как минимум один индекс на id, т.е. 20 таблиц расширений, двадцать индексов, что очень "положительно" сказывается на производительности вставки записей; когда мы получаем данные, мы вынуждены присоединять таблицы расширений, что очень "положительно" сказывается на производительности запросов, если понадобился составной индекс из полей основной таблицы и поля из дополнения ... ; поиск по полям принадлежащим нескольким таким таблицам тоже очень "положительно" сказывается на производительности запросов. И имея такую кучу минусов утверждать, что это решение для oltp систем лучше чем добавление полей необходимых для оперативной работы в основную таблицу, это за гранью логики.


Есть задачи и требования. Любая реализация требует определённых затрат. Они абсолютно оправданы, если выхлоп больше трудозатрат. Ничего бесплатного не бывает.

В описанном мною решении (далеко не единственном, кстати), при грамотной архитектуре, трудозатраты в сравнении с пользой -- минимальны. Поддерживать это легко, ограничений практически нет. Расходы на увеличение БД с точки зрения бизнеса ничего не стоят по сравнению с оплатой труда.

Явных значимых минусов из вашего описания я не заметил. Да, нужны доп. операции, да нужны индексы, на вставку записей это не влияет, так как заполнение проекций выполняется асинхронно. Влияния на нормализованную модель данных нет, и не нужно добавлять мусор в таблицы.

graycode
hVostt
в продуктовых системах называется "денормализация", и она есть практически везде.

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


Ну да, понятно, да...

А мне вот что интересно.
Вы в очередной раз игнорируете заданный мною вопрос.
Я ведь даже повторил его выше.

Это с чем связано? Если не знаете (что итак уже очевидно), так и скажите.
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003548
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode
Лежат себе поля, хлеба не просят, поддержка их стоит минимально, но иногда бывают весьма полезны, никакой видимой причины для хэйта нет, однако ...


Вы даже объяснить не можете на кой хер они там лежат и какую задачу вы решаете :)
А чуть более усложнить задачу, так вы тупо игнорируете вопросы.

Конечно, я верю, что вы проектировщик от бога, раз указываете другим что им не стоит заниматься проектированием. С такими-то познаниями )))
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003565
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt
Явных значимых минусов из вашего описания я не заметил. Да, нужны доп. операции, да нужны индексы, на вставку записей это не влияет, так как заполнение проекций выполняется асинхронно. Влияния на нормализованную модель данных нет, и не нужно добавлять мусор в таблицы.

У вас логика проявляет все признаки отсутствия присутствия, вы не понимаете суть oltp систем в принципе, на сим не вижу смысла пытаться вам объяснять что дважды два четыре, это бесполезно в вашем случае и тратить на вас время бессмысленно, тем более что конкретики снова никакой, одни общие слова.
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003609
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode
У вас логика проявляет все признаки отсутствия присутствия, вы не понимаете суть oltp систем в принципе, на сим не вижу смысла пытаться вам объяснять что дважды два четыре, это бесполезно в вашем случае и тратить на вас время бессмысленно, тем более что конкретики снова никакой, одни общие слова.


Описанное решение никак не противоречит принципам OLTP, а только дополняют их.
Вы этого опровергнуть не можете, и аргументировать не способны.

Но вы ясно дали нам понять, что задача для вас "больно и сложно".
Для меня, моей команды -- эта задача не проблема.

Ваши попытки свою неспособность решать задачи перенести на чужие плечи -- курам на смех.
Идити проектируйте дальше, горе-проектировщик
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003628
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode

..........................
6. Что касается запросов данных для максимальной даты попадающей в интервал то вот 13931438 и вот 8947782 как они выглядят. Но когда таблица лога начинает использоваться подобным образом для работы оперативной системы, это ведет к .........


Не понял, что за шняга? Вы мне с апломбом несколько раз рекомендовали не заниматься проектированием баз данных, потом выкатили с вашей точки зрения супер-пупер сложную задачу с посылом "а ну-ка решите недоумки!". Я вам решил вашу супер-пупер задачу в один простецкий запрос, а вы мне тыкаете в нос запросы какого-то левого чувака, которые не относятся к вашей супер-пупер задаче совсем никак, типа поучись. Вы сами-то в тех запросах разобрались? Или быстро-быстро поиском по форуму пробежались, нашли старьё, что хоть-бы отдалённо было по теме и сюда выкатили?
Не, так дело не пойдёт.
Глядя на вас мне вспомнился сериал "Интерны" где Быков говорит Лобанову:
"У тебя есть шанс стать прекрасным врачом, а вот Левин считает себя мощным специалистом, и у него такого шанса нет"
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003633
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
graycode
Явных значимых минусов из вашего описания я не заметил. Да, нужны доп. операции, да нужны индексы, на вставку записей это не влияет, так как заполнение проекций выполняется асинхронно. Влияния на нормализованную модель данных нет, и не нужно добавлять мусор в таблицы.

Количество индексов не влияет на вставку записей? ну ну ...
Транзакционные данные асинхронно? Ну ну ...
Влияния на нормализованную модель данных нет? Я веду с вами беседу в контексте oltp систем, если нет влияния на оперативную работу и оперативные данные, то это рядом стоящая аналитическая система и каким боком это относится к контексту oltp?

Я вам про oltp, а вы мне говорите что прекрасно делаете срезы, витрины, проекции, процедуры загрузки в них (ETL), вот только при чем тут oltp?

hVostt
Идити проектируйте дальше, горе-проектировщик

И вам того же, топайте проектируйте дальше, горе-проектировщик
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003639
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zeon11
Не понял, что за шняга? Вы мне с апломбом несколько раз рекомендовали не заниматься проектированием баз данных, потом выкатили с вашей точки зрения супер-пупер сложную задачу с посылом "а ну-ка решите недоумки!". Я вам решил вашу супер-пупер задачу в один простецкий запрос, а вы мне тыкаете в нос запросы какого-то левого чувака, которые не относятся к вашей супер-пупер задаче совсем никак, типа поучись. Вы сами-то в тех запросах разобрались? Или быстро-быстро поиском по форуму пробежались, нашли старьё, что хоть-бы отдалённо было по теме и сюда выкатили?

Это не левый чувак, это Добрый Э - Эх , а вот вы действительно левый чувак))

Далее, в который раз пытаюсь донести до вас простую истину, когда такие запросы используются в массовом порядке для того чтобы вытащить данные необходимые для оперативной работы из таблиц лога, это приводит к существенному замедлению работы системы, поскольку ресурсы и время на выполнение таких запросов растут в геометрической прогрессии при росте количества данных в системе.
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003640
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode
Я вам про oltp


Похоже вы познакомились с одним единственным термином, и теперь у вас наступил OLTP головного мозга :)

Жаль, что это не помогает вам решать проблемы, от чёго от простейших задач у вас боль и страдание
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003642
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С нами заслуженный олтп-гуру, вы ребят по-осторожнее с ним
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003643
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt
Похоже вы познакомились с одним единственным термином, и теперь у вас наступил OLTP головного мозга :)

Нет, просто вы стали оспаривать то, что поля необходимые для оперативной транзакционной работы системы должны находиться в основных таблицах, я не понял с чего вы так решили и как то адекватно аргументировать свою позицию вы не смогли, вместо этого вы устроили клоунаду.
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003644
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode
Количество индексов не влияет на вставку записей? ну ну ...
Транзакционные данные асинхронно? Ну ну ...


Учитывая отсутствие у вас банальных знаний и самое главное опыта, вам остаётся только нунукать :)

Представляете, реальные боевые системы размещаются более чем в одной БД, и зачастую состоят из сложного программного комплекса, сервисов и интеграций.

Очевидно, всё что находится за рамками транзакции одной БД, для вас тёмный непроходимый лес.
Вы даже в OLTP умудрились боль и страдание найти

graycode
Я вам про oltp, а вы мне говорите что прекрасно делаете срезы, витрины, проекции, процедуры загрузки в них (ETL), вот только при чем тут oltp?


Ваша проблема в том, что вы делаете свой мифический OLTP, а я решаю задачи бизнеса.
Моя команда решает их быстро, эффективно и вполне успешно. При чём никаких принципов OLTP в таких системах не нарушается. ВЫ просто не хотите видеть ничего дальше носа.
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003645
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode
hVostt
Похоже вы познакомились с одним единственным термином, и теперь у вас наступил OLTP головного мозга :)

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


Какую клоунаду? Вы не ответили на мой вопрос, находящийся в поле обозначенной вами проблемы.
Значит вы не знаете как решать задачу.

Хлопаете дверью.
Ноете и сопли развозите.

Ответить на вопрос можете или нет?
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003659
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode
zeon11
Не понял, что за шняга? Вы мне с апломбом несколько раз рекомендовали не заниматься проектированием баз данных, потом выкатили с вашей точки зрения супер-пупер сложную задачу с посылом "а ну-ка решите недоумки!". Я вам решил вашу супер-пупер задачу в один простецкий запрос, а вы мне тыкаете в нос запросы какого-то левого чувака, которые не относятся к вашей супер-пупер задаче совсем никак, типа поучись. Вы сами-то в тех запросах разобрались? Или быстро-быстро поиском по форуму пробежались, нашли старьё, что хоть-бы отдалённо было по теме и сюда выкатили?

Это не левый чувак, это Добрый Э - Эх , а вот вы действительно левый чувак))

Далее, в который раз пытаюсь донести до вас простую истину, когда такие запросы используются в массовом порядке для того чтобы вытащить данные необходимые для оперативной работы из таблиц лога, это приводит к существенному замедлению работы системы, поскольку ресурсы и время на выполнение таких запросов растут в геометрической прогрессии при росте количества данных в системе.


Ну и что же? Это губернатор острова Борнео? (С)
Что вы как попка-попугай повторяете одно и тоже? Я и без вас всегда знал, что из лога не стоит брать данные, но если надо, то их можно взять. И это совсем не больно, как вы утверждали тут. И с чего вы взяли, что это приводит к существенному замедлению работы системы, поскольку ресурсы и время на выполнение таких запросов растут в геометрической прогрессии при росте количества данных в системе ? Хотя в системах спроектированных вами, скорее всего именно так и происходит - и больно, и медленно.
Для вас Лог какой-то фетиш. Вас что, в детстве Логом напугали, что ходите тут по форуму, где увидите слово Лог, сразу какать начинаете? Успокойтесь-же наконец, Лог - это такая-же таблица, ни чем не отличается от других таблиц.

Всё, я спать пошел, у нас пол-перврго ночи.
...
Рейтинг: 0 / 0
подскажите хорошую практику наименования связанных таблиц
    #40003666
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zeon11
Я и без вас всегда знал, что из лога не стоит брать данные

Почему же вы тогда с пеной у рта спорили и утверждали обратное?))

Да и посмотрел на ваш запрос, он неправильный ... )) что же вы так, товарищ hVostt за вас вписался, а вы запросы писать не умеете)), все таки посмотрите ссылочки на то как правильно писать такие запросы))
...
Рейтинг: 0 / 0
25 сообщений из 132, страница 5 из 6
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / подскажите хорошую практику наименования связанных таблиц
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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