@gds

Тег rdbms в блоге gds

gds

modern sql, slides: http://www.slideshare.net/MarkusWinand/modern-sql
Всем, кто использует sql руками, рекомендую ознакомиться/вспомнить.

#ovqyrh 5
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
gds

#ovnaqu 4
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
gds

postgresql jsonb: http://www.databasesoup.com...t-postgresql-94.html
А ещё сегодня третий день хануки, а празднований чото не вижу. Ерж уже не те?

#ovnmzu
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
gds

Я видел разные способы хранить интервалы дат в реляционках. Не, понятно, там два столбца, типа dt_start + dt_end, но кое-какие моменты не доходят до людей вообще. Попробую исправить.
- null как дата начала/окончания -- неудобно. Правильное решение: фиксированные даты типа 01.01.0001 и 31.12.9999 и функции/вьюхи для получения видимой пользователем даты (если такая будет). Это только выглядит криво, а на самом деле спасает от тонн ошибок, связанных с нуллами.
- главное: дата начала -- включительно, дата окончания -- исключительно. То есть, если есть дата начала 2014-12-07 00:00:00 и дата окончания 2014-12-08 00:00:00, в этот интервал попадают все даты 2014-12-07 XX:XX:XX, но не попадают 2014-12-08 00:00:00 и больше неё. С такими раскладами не получится сделать where mydate between dt_start and dt_end (если бы обе даты были "включительно"), но это абсолютно похуй, так как профит перевешивает: 1. условия не зависят от типов и форматов дат: в случае преобразования даты+времени в дату (если часы были 00:00:00) либо преобразования даты в дату+время (когда добавляют часы 00:00:00 к дате без часов) код продолжает работать как и раньше (а такие преобразования не всегда видны в коде невооружённым глазом, неявные преобразования типов таки случаются). 2. нет привязки к тому, какой "квант времени" подразумевался. Если бы интервал из примера выше был записан "концы включительно, квант = сутки", было бы "2014-12-07 .. 2014-12-07". Если бы надо было разбивать на часы, интервал внезапно преобразился бы в "2014-12-07 00:00:00 .. 2014-12-07 23:00:00". 3. часто надо рассмотреть "какие интервалы попадают на данную дату-время". В случае "квант = сутки" имеем where trunc(dt, 'DD') between dt_start and dt_end, заметьте функцию для обрезания даты и явное указание, докуда обрезать. А функции, как известно, не очень хорошо сотрудничают с оптимизатором запросов.
- следствие обоих пунктов: валидация становится не сложнее, чем check (dt_start < dt_end) (для непустых интервалов) или check (dt_start <= dt_end) (для возможно пустых интервалов).
- для извращенцев: with recursive либо connect by по условию prev.dt_end = next.dt_start

#ovqzip
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
gds

https://wiki.postgresql.org...ew_in_PostgreSQL_9.4 -- постгрес хорошо движется вперёд, мне нравится.

#ovrvyj
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
gds

http://www.slideshare.net/b...patterns-strike-back
Про enum чуть-чуть гонят (в постгресике с ним гибче, чем обычно), но, в целом, правы.

#tudhq
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
gds

"То, что пессимисты называют "full table scan", оптимисты называют "Map-Reduce"" [lj\jakobz]

#ntjao
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
gds

#nkq
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.