[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: оптимизация бд
Страницы: 1, 2, 3, 4, 5
hurt3
имеет ли смысл добавить в
paragraf{
id
glava_id
title
}

book_id

paragraf{
id
glava_id
title
book_id
}
Valick
Цитата (hurt3 @ 30.08.2016 - 13:47)
Valick
мда, браво...

что не так-то?
я так понимаю вам мало создать каталог книг, вам еще и саму книгу надо "растрепать" в БД по оглавлению с возможностью поиска конкретной книги конкретной главы и конкретного параграфа
да еще и на сколько я разбираюсь в колбасных обрезках, необходимо после поиска списка книг при клике на определённую книгу открывать оглавление с подсветкой искомой главы и параграфа, при клике на который, бросить якорь в браузер

выплюнуть отдельный параграф мягко говоря не наш метод

_____________
Стимулятор ~yoomoney - 41001303250491
jetistyum
Что касается партицирования - читал когда-то, но не пользовался на практике, тут не скажу ничего.
Цитата
зачем делать виев если есть партицирование?

Это абсолютно разные вещи, и никак не могут заменять друг друга...

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

hurt3



jetistyum

все верно пишите,молодец -правильно выделил суть проблемы, добавление спец поля с родителем родителя -книга, денормализует структуру бд!

но

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

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

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



Valick

вы не дело пишите перечитайте ветку с самого начала
jetistyum
hurt3

View придется пересоздавать если вы измените в исходных таблицах структуру (названия полей или их тип) либо поменяется алгоритм создания view. Если поля будут просто добавляться - view не изменится.
(!!! Я говорю именно о изменениях в стурукутре таблиц, а не о вставке новых записей в существующие)

И это будет не отдельная таблица (фактически не появится новых данных, это будет "виртуальная таблица" которая будет построена по результатам запроса и с этой таблицей можно работать так же, как с обычной, но только для выборки, не для вставки.
Вероятно он строит индексы по этому вьюсу, что позволяет с ним работать быстрее.

Партицирование добавлять или нет - зависит от объема данных. Если хотите - добавляйте, это даст при огромном кол-ве данных доп. оптимизацию, не зависимо есть view или нет.

О каком кол-ве записей мы ведем речь? Ведь оптимизация нужна там, где начинаются затыки. А оптимизация может быть разной, как создание индексов, так и установка нового железа, так и выбор лучшего движка таблиц, или движка бд.
hurt3
jetistyum
понимаю и благодарен за ответ и обсужедние но в том и дело что виевсы позволяют производить лишь получение информации, а действий с добавлением и редактированием будет не меньше.

Объем строк если прикинуть чисто теоретически +-
2 000 000 000

но этот объем должен расти, если выстроить логику с завязкой на одних ключах, сдается мне искать будет долго ,м?
jetistyum
Цитата (hurt3 @ 30.08.2016 - 14:56)
понимаю и благодарен за ответ и обсужедние но в том и дело что виевсы позволяют производить лишь получение информации, а действий с добавлением и редактированием будет не меньше.


Что вы имеете в виду "действий с добавлением", во view добавлять ничего не нужно, вы вставляете данные в соотв. таблицы : таблицу параграфов, таблицу глав, etc, а они появляются во вью, к тому же по сравнению с денормализацией не нужно "вручную" следить за целостностью бд.
hurt3
jetistyum

понимаю, речь и идет имено о том, что в одной главе может быть 50000 параграфов (условно), возможно их нужно удалить поменять первое слово в каждом или произвести еще какие-либо сторонние действия, это означает что в основной таблице будет происходить поиск этих параграфов, правильно и дальнейшее их изменение/ удаление, правильно?
т.е. виевсы могут помочь лишь в получении информации, но помимо этой задачи будет так же задача на изменение гурппы строк и удаление

Поэтому получается что виевсы решают лишь 1 задачу

ну конечно еще действие добавление

Еще раз повторюсь книги параграфы и главы приведены лишь как пример для понимания логической структуры
jetistyum
Цитата (hurt3 @ 30.08.2016 - 14:56)
но этот объем должен расти, если выстроить логику с завязкой на одних ключах, сдается мне искать будет долго ,м?


Надо пробовать smile.gif Опять же какое железо будет использовано. SSD vs HDD сильно будет отличаться. Можно добавить и партицирование, для такого кол-ва записей вполне может сработать.
Опять же индексы, смотря какие выборки должны производиться. Поиск по ID или названию.
Простор для творчества огромен.
hurt3
jetistyum

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

jetistyum

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

ив ц елом хотелось бы услышать мнение так допустимо делать? может быть еще 3ий вариант какой есть?
jetistyum
Цитата (hurt3 @ 30.08.2016 - 15:03)
понимаю, речь и идет имено о том, что в одной главе может быть 50000 параграфов (условно), возможно их нужно удалить поменять первое слово в каждом или произвести еще какие-либо сторонние действия, это означает что в основной таблице будет происходить поиск этих параграфов, правильно и дальнейшее их изменение/ удаление, правильно?
т.е. виевсы могут помочь лишь в получении информации, но помимо этой задачи будет так же задача на изменение гурппы строк и удаление



Разумеется это так, однако стоит разрабатываьт стркутуру исходя из того, на сколько часто будут происходить такие действия. Если говорить про реальный мир, то изменения параграфов книги - действие не тривиальное.
Опять же Выбрать данные параграфов можно из view по id книги, и потом уже после редактирования сохранить их в таблице параграфов, где не указан напрямую Id книги. Но это если используется какая-то программная прослойка.

jetistyum
Цитата (hurt3 @ 30.08.2016 - 15:08)
так и не овтетил на вопрос, как профессионал как считаешь имеет ли смысл на этапе проектировки пожервтвоать нормализацией таблиц , что бы потом не мучиться с ускоернием добавляя поле?
Просто я потом не представляю как его потом добавлять и наполнять в таблуиу в рабочей системе

ив ц елом хотелось бы услышать мнение так допустимо делать? может быть еще 3ий вариант какой есть?


Я не сторонник денормализации, я бы не делал, но если вдруг это сильно ускорит работу системы - можно попробовать. (Хотя я чуть выше описал как можно было бы это сделать без денормализации)

Добавить поле можно на любом этапе, это не составит много труда. Я считаю что проблемы стоит решать по мере их поступления, а не пытаться решить несуществующую проблему.
Сделай нормальную бд, сделай вьюсы. попробуй наполнить и поработать с ней. это вопрос пары дней разработки, в раздумьях можно провести больше времени smile.gif
Да и нет тут "точки невозврата" Всегда можно привести бд в нормальный или ненормальный вид.
hurt3
Цитата (jetistyum @ 30.08.2016 - 16:09)
Но это если используется какая-то программная прослойка.


то же использование ключей

Цитата (jetistyum @ 30.08.2016 - 16:09)
на сколько часто будут происходить такие действия.


все действия равнозначны по важности и повторяемости

вроде и задача элементарная а на практике....

hurt3
jetistyum
спасибо, как думаешь объединение всех данных в одну таблицу, как Valick писал -не прокатит, слишком много информации будет дублироваться, м?
Valick
Цитата (jetistyum @ 30.08.2016 - 15:09)
Если говорить про реальный мир, то изменения параграфов книги - действие не тривиальное

сдаётся мне что тут пахнет чем-то вроде википедии, но всё на столько засекречено, что лично я уже потерял интерес

_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.