Size: a a a

DBA - русскоговорящее сообщество

2020 December 26

LE

Lex E in DBA - русскоговорящее сообщество
Санька Скайуокер
Я видел нормализацию ток до 3 НФ, все что свыше сугубо предметно ориентированно и там уже мозги текут
в википедии написано неправильно :)))
и вы оба тоже не правы :)))

sql в postgre расширялся, чтобы поддерживать денормализацию, к которой относится использование json-а

всё это является опциями денормализации:
* json
* xml
* композитные типы
* массивы
* hstore
* records
и др.

а то что говорит википедиа, это не определение, а best practice:
"Denormalization is a strategy used on a previously-normalized database to increase performance."

я весь день пытаюсь выгуглить это, и никак :(
источник

LE

Lex E in DBA - русскоговорящее сообщество
вот максимум что смог выкуглить как более-менее credible source
источник

LE

Lex E in DBA - русскоговорящее сообщество
источник

LE

Lex E in DBA - русскоговорящее сообщество
источник

LE

Lex E in DBA - русскоговорящее сообщество
еще раз

википедиа:
"Denormalization is a strategy..."

но номализация, это техника а не стратегия
источник

LE

Lex E in DBA - русскоговорящее сообщество
поэтому денормализация это противоположное вот этому
источник

LE

Lex E in DBA - русскоговорящее сообщество
получается,
денормализация это когда нам похрен на:
"to minimize duplication of data"
"to enforce logical separation of data points into related groups (tables)"
источник

LE

Lex E in DBA - русскоговорящее сообщество
Ilia Zviagin
ты прав. Нормализации не было, и денормализации не будет.
и вот это тоже относится к стратегии денормализации существующих данных, а не к технике денормализации в субд
источник

LE

Lex E in DBA - русскоговорящее сообщество
источник

LE

Lex E in DBA - русскоговорящее сообщество
источник

LE

Lex E in DBA - русскоговорящее сообщество
источник

S

Serg in DBA - русскоговорящее сообщество
Вопрос по SQLite C#. Если вызываю этот метод в цикле 100-1000 раз, то проект ооочень надолго задумывается. Что можно предпринять или что нужно поменять, при условии что заранее неизвестно сколько будет итераций? Может метод или запрос неверные?
источник

S

Serg in DBA - русскоговорящее сообщество
источник

LE

Lex E in DBA - русскоговорящее сообщество
Serg
Вопрос по SQLite C#. Если вызываю этот метод в цикле 100-1000 раз, то проект ооочень надолго задумывается. Что можно предпринять или что нужно поменять, при условии что заранее неизвестно сколько будет итераций? Может метод или запрос неверные?
Поздрааляю, ты столкнулся с потребностью оптимизировать нагрузку на БД)
Это очень частая штука.

Select * - означает что мы выбираем всю таблицу, и время выполнения (time complexity) будет n^2

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

Профит

https://sqlite.org/lang_createindex.html

https://sqlite.org/faq.html#q19
источник

LE

Lex E in DBA - русскоговорящее сообщество
Serg
А можно это в pastebin или с нумерацией строчек
источник

S

Serg in DBA - русскоговорящее сообщество
Lex E
Поздрааляю, ты столкнулся с потребностью оптимизировать нагрузку на БД)
Это очень частая штука.

Select * - означает что мы выбираем всю таблицу, и время выполнения (time complexity) будет n^2

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

Профит

https://sqlite.org/lang_createindex.html

https://sqlite.org/faq.html#q19
Спасибо) Добавлю индекс.
источник

S

Serg in DBA - русскоговорящее сообщество
Lex E
А можно это в pastebin или с нумерацией строчек
источник

S

Serg in DBA - русскоговорящее сообщество
Там еще закомментированы строки с try, я убрал эту проверку, т.к. еще медленнее было.
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Lex E
в википедии написано неправильно :)))
и вы оба тоже не правы :)))

sql в postgre расширялся, чтобы поддерживать денормализацию, к которой относится использование json-а

всё это является опциями денормализации:
* json
* xml
* композитные типы
* массивы
* hstore
* records
и др.

а то что говорит википедиа, это не определение, а best practice:
"Denormalization is a strategy used on a previously-normalized database to increase performance."

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

S

Serg in DBA - русскоговорящее сообщество
Lex E
Поздрааляю, ты столкнулся с потребностью оптимизировать нагрузку на БД)
Это очень частая штука.

Select * - означает что мы выбираем всю таблицу, и время выполнения (time complexity) будет n^2

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

Профит

https://sqlite.org/lang_createindex.html

https://sqlite.org/faq.html#q19
Вот, кстати, запрос создания таблицы
CREATE TABLE states (
uid INTEGER NOT NULL UNIQUE,
data BLOB,
PRIMARY KEY(`uid`)
);
Индекс я тут вроде как создаю для uid.
источник