ar
Feedback
There will be no singularity

There will be no singularity

الذهاب إلى القناة على Telegram

Smartface, technologies and decay @antonrevyako

إظهار المزيد
1 958
المشتركون
لا توجد بيانات24 ساعات
+27 أيام
-130 أيام
أرشيف المشاركات
Очередная история успеха приложения на рельсах. На этот раз у гитлаба https://about.gitlab.com/blog/2021/09/29/why-we-spent-the-last-month-eliminating-postgresql-subtransactions/ Они месяц с недешевыми консультантами разгребали то, что им нагенерили рельсы. Причем приключение случилось в 4 строках кода. Может быть вы помните статью dhh, что рельсы им стоят "всего" $450k в год, но зато какой кайф не писать этот богомерзкий SQL. Это он посчитал только сколько им стоит лишнее железо. Если решите повторить расчеты для своего ror-проекта, то закладывайте еще работу DBA из расчета где-то $500/час. Я, честно говоря, не хотел акцентировать внимание на этой истории, потому что, ну а что вы, собственно, хотели от ror. Но в твиттере CEO Fivetran напомнил о ней с каментом "нахер эти ORM", а дальше все как в тумане...

photo content

В мою подборку необычных применений SQL добавился еще один тул для git askgit:
SELECT count(*) FROM commits WHERE author_email = 'user@email.com'

На днях вышел Postgresql 14 (подробности о новинках тут). Но я пока продолжу сидеть на 12 версии... Во-первых, потому что у меня managed база в облаке, а там все происходит небыстро (хотя в azure, говорят, уже есть) А во-вторых, есть еще одна проблема, о которой я хотел бы сегодня рассказать. Проблема называется error messages. В Postgresql сообщения об ошибках далеки от идеала. Ты получаешь код ошибки и текстовое описание, в которое засунули sprintf'ом все нужные константы. Т.е. если твой запрос может выкинуть один и тот же код ошибки по разным причинам, то единственное, что остается, это ассертить строку с ошибкой.
null value in column "column1" of relation "table1" violates not-null constraint 

Круто бы было, если бы "column1" и "table1" возвращались в отдельных параметрах, но жизнь такова, какова она есть, и больше ни какова. Отдельная интересная задача - узнать все возможные сообщения об ошибках статическими методами, по тексту запроса. Такое когда-то планировалась сделать в рамках holistic.dev ... Так вот, от версии к версии формат сообщений об ошибках тоже может меняться! И если вам важна причина возникновения ошибки, то привет. Нужно переделывать все ассерты:
-- pg 13
null value in column "column1" of relation "table1" violates not-null constraint


-- pg 12
null value in column "column1" violates not-null constraint

Возможно, вы хотите сказать: "какая нафиг разница какая ошибка, падай в 500 да и все". Но это только потому, что вы не видели моих запросов :)

Канал перевалил за 1000 подписчиков, очень радостное для меня число! Пока вы не успели отписаться, сделаю стандартный телеграм-пост с каналами об ИТ, которые я читаю. * @oleg_log, @oleg_fov — Олег пишет об индустрии. Удивляюсь его продуктивности и читаю, чтобы держать руку на пульсе; * @bigflatmappa — канал контрибутора ФП-библиотек с историями о том, что он туда контрибутит. Стоит подписаться, чтобы проникнуться духом 10х программирования; * @yourcybergrandpa — дед ворчит на облака; * @architect_says — дед ворчит на Agile; * @nikitonsky_pub — Никита Прокопов ворчит на всё вокруг; * @nosingularity — о базах данных и инструментарии для них; * @dereference_pointer_there — личный блог без чётко очерченной тематики (но частенько про Rust); * @pmdaily — о продуктовой разработке и взаимоотношениях программиста с бизнесом; * @scala_channel_ru — важные новости и анонсы из мира Scala; * @daily_ponv — в основном ссылки на сложные пейперы; * @shark_in_it — резюме пейперов о распределённых системах и базах данных; * @scalabin — Антон давно ничего не писал, но если вдруг напишет — точно будет интересно; * @consensus_io — о распределённых системах. И конечно же чаты самого дружелюбного в мире сообщества, в котором высококвалифицированные специалисты помогают всем желающим стать 10x скалистом: @scala_ru, @scala_learn, @scala_jobs, @ru_zio, @akka_ru

Мама, я в телевизоре…

В честь выхода Дюны, я так понимаю… https://github.com/authzed/spicedb/releases/tag/v1.0.0

Вы знаете какого доклада там не будет... :) Программа конференции по дата-инжинирингу SmartData 2021 уже готова! Начинаем 11
Вы знаете какого доклада там не будет... :) Программа конференции по дата-инжинирингу SmartData 2021 уже готова! Начинаем 11 октября 🔥 И не просто готова — в ней десятки крутейших докладов от спикеров со всего мира. Например: ✔️ Andy Pavlo, "Using Machine Learning to Automatically Optimize Database Configurations"; ✔️ Tejas Chopra, "An experience report on strategies for working with Cloud Storage"; ✔️ Владимир Озеров, "Архитектура высокопроизводительных распределенных SQL-движков"; ✔️ Дмитрий Бугайченко, "Рабочее место D-people - опыт СБЕР". И это только маленькая часть программы — в ней еще десятки докладов. Заходите на сайт конференции за подробностями и билетами. И не забывайте, что по промокоду nosingularity2021JRPc еще можно успеть купить Personal Standard билет со скидкой. До встречи на SmartData👋

Как заменить DISTINCT на recursive CTE с пользой: https://www.depesz.com/2021/09/27/using-recursive-queries-to-get-distinct-elements-from-table/

Как выглядел бы sql если бы его придумали в 2021
select:
  items:
    - foo
    - bar
  where:
    - eq:
      - foo
      - bar

из нашего чата

Музыкальная пауза. 5 ноября выйдет "новый" альбом Radiohead - Kid A Mnesia В кавычках, потому что это переиздание Kid A и Amnesiac + неизданное. А пока можно послушать свежую "If You Say The Word" где суровые мужики собирают по лесам заблудившихся клерков :) PS: еще они замутили что-то c epic games. Но на игру не похоже...

Добавил в свою подборку необычных применений SQL еще парочку записей. Внезапно обнаружилось сразу несколько проектов, реализующих SQL-интерфейс к облачной инфре: cloudquery.io steampipe.io iasql.com Последний не зарелижен, неизвестно будет ли opensource, но выглядит наиболее интересно. Если первые два дают возможность делать SELECT'ы, то последний еще и INSERT'ы (может еще и UPDATE'ы):
INSERT INTO aws_ec2 (ami_id, ec2_instance_type_id)
SELECT ami.id, ait.id
FROM ec2_instance_type as ait, (
    SELECT id
    FROM   amis
    WHERE  image_name LIKE 'amzn-ami-hvm-%'ORDER BY creation_date DESC
    LIMIT 1
) as ami
WHERE  ait.instance_name = 't2.micro';

Как вам идея?

Clickhouse теперь отдельная компания с $50m инвестиций. Переживаю за Altinity… https://vc.ru/services/295690-yandeks-s-fondami-otkryl-kompaniyu-clickhouse-ona-vypustit-servisy-na-osnove-sistem-upravleniya-bazami-dannyh

Distributed SQL Summit 2021 (кродеться) Sept 21 - 23 https://distributedsql.org/

Как и год назад для 13 версии, Hewlett Packard выложили 80 страниц с описанием изменений в Postgresql 14 по сравнению с предыдущей версией. Выделил самые, на мой взгляд, интересные: LZ4 compression TOAST колонки теперь можно жать. CREATE INDEX INCLUDE можно использовать для SP-GiST индексов
 CREATE INDEX idx1_gist1 ON gist1 USING spgist (c1) INCLUDE (c2) 
BRIN index Можно делать Bloom-индексы
 CREATE INDEX idx1_data1 ON data1 USING brin (c1 numeric_bloom_ops (false_positive_rate = 0.05, n_distinct_per_range = 100)) 
Extended Statistics Можно создавать статистику по выражениям
 CREATE STATISTICS extstat1_data1 ON MOD(c1, 10), MOD(c2, 10) FROM data1 
Multirange type
 SELECT '{[1, 5), (10, 20]}'::int8multirange 
Jsonb type Более удобный синтаксис для JSONB
SELECT ('[1, "2", null]'::jsonb)[1] ;

SELECT ('{"age": 25}'::jsonb)['age'] ;

SELECT ('{"email":"pgsql-hackers@postgresql.org", "phone":"+3012345678"}'::jsonb) ['phone'] ;
Документ полностью

https://t.me/oleg_log/4870
SELECT
   NULL OR TRUE, -- TRUE
   NULL OR FALSE, -- NULL
   NULL AND TRUE, -- NULL
   NULL AND FALSE -- FALSE

photo content

Очень хочется сделать свою SQL бд? Вот тут ребята из Querify Labs показывают на пальцах как навесить SQL на Apache Ignite. Есть такая штука - Apache Calcite. На ней можно описать парсер и планер с оптимизатором. А потом научить этот план выполняться над целевой базой. Кому-то захочется реализовать мою бредовую идею SQL для редис - пожалуйста. У кого-то своя база на GPU но без SQL - пожалуйста. Есть желающие заменить уродский ELK-синтаксис на нормальный? Велкам. Короче, SQL в каждый дом :)