Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 11b73f4

Browse files
authored
Create db_validate.md
1 parent 5b251fe commit 11b73f4

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed

‎db_validate.md‎

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# ✅ Сервис валидации схемы БД PostgreSQL
2+
3+
## Цели
4+
5+
Минимизация рисков нестабильности работы БД в процессе накатывания миграций БД в производственной среде
6+
Поддержание заданного уровня качества БД
7+
8+
## Описание работы
9+
10+
Валидатор представляет из себя функцию в БД PostgreSQL.
11+
12+
Запуск:
13+
14+
```sql
15+
select db_validate_v2()
16+
```
17+
18+
В процессе работы функция проверяет текущую БД на наличие проблем. Если проблемы не найдены, функция успешно завершает работу, никаких данных не возвращается. В случае проблем возвращается ошибка (исключение в терминах PL/PgSQL): текст ошибки и рекомендации по исправлению.
19+
20+
Рекомендуется вызвать функцию в одной транзакции до и после накатывания миграции на тестовой БД. Если до применения миграции ошибок нет, а после есть, значит причина в миграции БД.
21+
22+
## Проверки
23+
24+
<table class="relative-table wrapped" style="width: 100.0%;">
25+
<colgroup><col /><col /><col style="width: 16.2491%;" /><col style="width: 17.7945%;" /><col style="width: 51.5393%;" /></colgroup>
26+
<tbody>
27+
<tr>
28+
<th class="numberingColumn">No</th>
29+
<th colspan="1">В какой версии сделано</th>
30+
<th colspan="1">Код проверки</th>
31+
<th>Название проверки</th>
32+
<th>Назначение проверки</th>
33+
</tr>
34+
<tr>
35+
<td class="numberingColumn">1</td>
36+
<td colspan="1">v1</td>
37+
<td colspan="1"><code>has_pk_uk</code></td>
38+
<td>
39+
<p>Наличие первичного или уникального индекса в таблице</p></td>
40+
<td>
41+
<p>Первичный индекс (PK) позволяет</p>
42+
<ul>
43+
<li>однозначно идентифицировать запись таблицы БД</li>
44+
<li>получить очень быстрый доступ к записи</li></ul>
45+
<p>Уникальный индекс (UK) позволяет исключить дубликаты</p>
46+
<p>Без PK или UK невозможно сделать логическую репликацию.</p></td>
47+
</tr>
48+
<tr>
49+
<td class="numberingColumn">2</td>
50+
<td colspan="1">v1</td>
51+
<td colspan="1"><code>has_not_redundant_index</code></td>
52+
<td>
53+
<p>Отсутствие избыточных индексов в таблице</p></td>
54+
<td>
55+
<p>Если есть составной индекс на поля col1 и col2 (именно в такой последовательности), то отдельный индекс на поле col1 не нужен, он <span style="letter-spacing: 0.0px;">избыточный. Лишние индексы занимают место на диске и замедляют DML запросы.</span></p></td>
56+
</tr>
57+
<tr>
58+
<td class="numberingColumn">3</td>
59+
<td colspan="1">v1</td>
60+
<td colspan="1"><code>has_index_for_fk</code></td>
61+
<td colspan="1">
62+
<p>Наличие индексов для ограничений внешних ключей в таблице</p></td>
63+
<td colspan="1">Без индексов на огнаничения внешних ключей (FK) могут работать медленно элементарные запросы типа <strong><code>DELETE FROM {table} WHERE id=&lt;id&gt;</code></strong> из-за ссылающихся на <code>{table}</code> таблиц по FK без индекса.</td>
64+
</tr>
65+
<tr>
66+
<td class="numberingColumn">4</td>
67+
<td colspan="1">TODO</td>
68+
<td colspan="1"><code>has_table_comment</code></td>
69+
<td colspan="1">Наличие описания для таблицы</td>
70+
<td colspan="1">Описание помогает лучше понять назначение таблицы. Проверка на наличие букв любого алфавита в <strong><code>COMMENT ON TABLE {table}</code></strong></td>
71+
</tr>
72+
<tr>
73+
<td class="numberingColumn">5</td>
74+
<td colspan="1">TODO</td>
75+
<td colspan="1"><code>has_column_comment</code></td>
76+
<td colspan="1">Наличие описания для колонки</td>
77+
<td colspan="1">Описание помогает лучше понять назначение колонки. Проверка на наличие букв любого алфавита в <strong><code>COMMENT ON TABLE {table}.{column}</code></strong></td>
78+
</tr>
79+
</tbody>
80+
</table>

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /