<?xml version='1.0' encoding='utf-8' ?>

<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>Dmitry Belyavskiy</title>
  <link>https://beldmit.dreamwidth.org/</link>
  <description>Dmitry Belyavskiy - Dreamwidth Studios</description>
  <lastBuildDate>Tue, 29 Jan 2019 17:31:12 GMT</lastBuildDate>
  <generator>LiveJournal / Dreamwidth Studios</generator>
  <lj:journal>beldmit</lj:journal>
  <lj:journaltype>personal</lj:journaltype>
  <image>
    <url>https://v2.dreamwidth.org/806875/776862</url>
    <title>Dmitry Belyavskiy</title>
    <link>https://beldmit.dreamwidth.org/</link>
    <width>97</width>
    <height>100</height>
  </image>

<item>
  <guid isPermaLink='true'>https://beldmit.dreamwidth.org/871216.html</guid>
  <pubDate>Tue, 29 Jan 2019 17:31:12 GMT</pubDate>
  <title>Open, блин, Source</title>
  <link>https://beldmit.dreamwidth.org/871216.html</link>
  <description>Блин. Я ещё могу понять, зачем Postgres использует BSD-шный indent. Но какого хрена этот indent пытается собраться с -lselinux -lxslt -lxml2 -lpam -lgssapi_krb5 -lz -ledit?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; сим полукреслом мастер Гамбс начинает попытку засабмитить патч в PostgreSQL. Точнее, в контриб ltree.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=beldmit&amp;ditemid=871216&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://beldmit.dreamwidth.org/871216.html</comments>
  <category>postgresql</category>
  <lj:security>public</lj:security>
  <lj:reply-count>8</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://beldmit.dreamwidth.org/837883.html</guid>
  <pubDate>Mon, 04 Dec 2017 17:17:20 GMT</pubDate>
  <title>Unicode, сортировки, а я маленький такой</title>
  <link>https://beldmit.dreamwidth.org/837883.html</link>
  <description>Коллега сегодня обнаружил, что при сортировке в уникодной локали PostgreSQL выдаёт записи в таком порядке:&lt;br /&gt;&lt;br /&gt;_a&lt;br /&gt;a&lt;br /&gt;_c&lt;br /&gt;d&lt;br /&gt;&lt;br /&gt;что несколько контринтуитивно. &lt;br /&gt;&lt;br /&gt;Вскрытие показало, что &lt;a href=&quot;http://unicode.org/reports/tr10/#Variable_Weighting&quot;&gt;алгоритм сравнения в Unicode&lt;/a&gt; довольно хитровывернутый в этом месте. При сортировке в локали базы в итоге символы подчёркивания игнорируются. &lt;br /&gt;&lt;br /&gt;Вылечилось это привешиванием COLLATE &quot;C&quot; на искомую колонку, который даёт сравнение, грубо говоря, побайтовое. Но вообще поведение документированное, но неочевидное.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=beldmit&amp;ditemid=837883&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://beldmit.dreamwidth.org/837883.html</comments>
  <category>компьютерное</category>
  <category>программирование</category>
  <category>postgresql</category>
  <category>работа</category>
  <lj:security>public</lj:security>
  <lj:reply-count>21</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://beldmit.dreamwidth.org/817554.html</guid>
  <pubDate>Wed, 03 May 2017 13:42:20 GMT</pubDate>
  <link>https://beldmit.dreamwidth.org/817554.html</link>
  <description>&lt;a href=&quot;http://okbob.blogspot.ru/2017/04/how-to-find-unindexed-foreign-keys.html&quot;&gt;Поиск забытых индексов при FOREIGN KEY для PostgreSQL&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;У себя нашёл не очень много и не очень актуальных, но вообще пригодится, прикопаю.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=beldmit&amp;ditemid=817554&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://beldmit.dreamwidth.org/817554.html</comments>
  <category>программирование</category>
  <category>postgresql</category>
  <category>ссылки</category>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://beldmit.dreamwidth.org/807684.html</guid>
  <pubDate>Mon, 30 Jan 2017 16:12:47 GMT</pubDate>
  <link>https://beldmit.dreamwidth.org/807684.html</link>
  <description>В очередной раз заглянул в лог запросов базы, обнаружил толпу однотипных мелких запросов. В итоге переписал сегодня обработчик очереди с poll- на push-модель, использовав LISTEN/NOTIFY. &lt;br /&gt;Примеры в сети нашлись толковые, и в результате единственное исправление с тем, что я предполагал — то, что в триггере на добавление записи надо сказать не SELECT pg_notify(), а PERFORM pg_notify().&lt;br /&gt;&lt;br /&gt;Вообще январь оказался куда продуктивнее декабря, когда очень не хотелось ничего начинать. За три недели это уже третья революция в отдельно взятых кусках кода.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=beldmit&amp;ditemid=807684&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://beldmit.dreamwidth.org/807684.html</comments>
  <category>работа</category>
  <category>postgresql</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://beldmit.dreamwidth.org/489381.html</guid>
  <pubDate>Thu, 03 Nov 2016 17:24:56 GMT</pubDate>
  <title>PGConf EU</title>
  <link>https://beldmit.dreamwidth.org/489381.html</link>
  <description>&lt;a href=&quot;http://modern-sql.com/slides&quot;&gt;A lot has changed since SQL-92&lt;/a&gt; - очень толковая презентация. &lt;span style=&apos;white-space: nowrap;&apos;&gt;&lt;a href=&apos;http://hettie-lz.livejournal.com/profile&apos;&gt;&lt;img src=&apos;https://www.dreamwidth.org/img/external/lj-userinfo.gif&apos; alt=&apos;[livejournal.com profile] &apos; style=&apos;vertical-align: text-bottom; border: 0; padding-right: 1px;&apos; width=&apos;17&apos; height=&apos;17&apos;/&gt;&lt;/a&gt;&lt;a href=&apos;http://hettie-lz.livejournal.com/&apos;&gt;&lt;b&gt;hettie_lz&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;, последняя представленная там возможность как-то с Вашим докладом в Москве стыкуется?&lt;br /&gt;&lt;br /&gt;Ещё была презентация про обеспечение безопасности при работе с базой. Ничего сверхъестественного, но неплохой checklist.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.cybertec.at/2016/11/announcing-availability-of-postgresql-instance-level-encryption/&quot;&gt;Announcing availability of PostgreSQL instance level encryption&lt;/a&gt; - очень похоже на правильную реализацию криптографии на уровне СУБД. Завтра попробую пообщаться с автором.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=beldmit&amp;ditemid=489381&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://beldmit.dreamwidth.org/489381.html</comments>
  <category>ссылки</category>
  <category>postgresql</category>
  <category>security</category>
  <lj:security>public</lj:security>
  <lj:reply-count>7</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://beldmit.dreamwidth.org/471196.html</guid>
  <pubDate>Fri, 29 Apr 2016 17:50:05 GMT</pubDate>
  <title>На память - оптимизация базы</title>
  <link>https://beldmit.dreamwidth.org/471196.html</link>
  <description>Запрос для поиска пропущенных в базе индексов.&lt;br /&gt;&lt;br /&gt;SELECT relname, idx_scan, seq_scan, seq_tup_read&lt;br /&gt;FROM pg_stat_user_tables&lt;br /&gt;ORDER BY seq_tup_read DESC;&lt;br /&gt;&lt;br /&gt;И вообще интересная &lt;a href=&quot;http://www.postgresql.biz/download/2013_dublin_bottlenecks.pdf&quot;&gt;презентация&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=beldmit&amp;ditemid=471196&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://beldmit.dreamwidth.org/471196.html</comments>
  <category>программирование</category>
  <category>ссылки</category>
  <category>postgresql</category>
  <lj:security>public</lj:security>
  <lj:reply-count>11</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://beldmit.dreamwidth.org/453120.html</guid>
  <pubDate>Wed, 11 Nov 2015 09:12:54 GMT</pubDate>
  <title>Schemaless-базы данных</title>
  <link>https://beldmit.dreamwidth.org/453120.html</link>
  <description>Я давно хотел написать этот пост, но до разговора с Фёдором Сигаевым на PGConf.eu стеснялся.&lt;br /&gt;&lt;br /&gt;Одно из позиционирований NoSQL-ных баз данных — отсутствие схемы. Я всегда этот момент не понимал. Собственно, у меня на рабочем столе (физическом) полное отсутствие схемы, и помойкой это не является только потому, что я её так не называю. В смысле, мало запихнуть данные в куда-нибудь, с ними надо ещё работать: искать по атрибутам или по их значениям, а значит где-то эти значения должны регламентироваться. Не будут регламентироваться — рано или поздно получите атрибуты topic, Topic и TOPICS с одной семантикой. &lt;br /&gt;&lt;br /&gt;В SQL-базе эту регламентацию достигают проверкой на уровне имён колонок. В NoSQL это придётся делать в приложении, потому что альтернатива — в мозгах программистов — слишком ненадёжна. И то и другое приводит к багам разной степени уловимости, даже при использовании hstore мы вдвоём с коллегой по этому грабельному полю потоптались. &lt;br /&gt;&lt;br /&gt;То есть по большому счёту летать вся эта структурированность будет в паре случаев.&lt;br /&gt;&lt;br /&gt;1. Когда база используется как хранилище без обработки. Максимум - проверить, что то, что передали в качестве XML, таковым является.&lt;br /&gt;2. Когда “структурированные” данные обрабатываются и пишутся локально (например, параметры для разных типов заданий в очереди). И то в этом случае приходится работать с такой структурой как минимум в 2 местах — при чтении и при записи.&lt;br /&gt;&lt;br /&gt;Во всех остальных случаях получаются размазанные по приложению метаданные, которые удобней держать в одной точке — в базе. Удобнее, например, потому как grep-ать не надо, а можно описание таблицы посмотреть. Нельзя построить внешние ключи (ну, ORM это частично компенсирует) и навести типизацию тоже можно довольно ограниченно.&lt;br /&gt;&lt;br /&gt;Лично я до сих пор использую из таких &quot;бессхемных&quot; типов в PostgreSQL ровно 2 — hstore и XML. XML при этом в моей задаче можно было бы заменить массивом hstore или отдельной таблицей, но из соображений отслеживания изменений оказалось проще внедрить XML. Можно было бы с таким же успехов json воткнуть, впрочем.&lt;br /&gt;&lt;br /&gt;Конечно, недооценивать экономию усилий при добавлении новой колонки не надо. Это часто бывает самостоятельным геморроем, особенно если требуется zero downtime. Но пока что, по ощущениям, schemaless того не стоит.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=beldmit&amp;ditemid=453120&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://beldmit.dreamwidth.org/453120.html</comments>
  <category>postgresql</category>
  <category>программирование</category>
  <lj:security>public</lj:security>
  <lj:reply-count>31</lj:reply-count>
</item>
</channel>
</rss>
