There will be no singularity – Telegram
There will be no singularity
1.99K subscribers
248 photos
15 videos
5 files
995 links
Smartface, technologies and decay
@antonrevyako
Download Telegram
я: что-то я не высыпаюсь...
wakatime: на этой неделе ты писал код 50 часов

PS: wakatime считает сколько ты нажимаешь на кнопки в IDE, если не ставить отдельные плагины для браузера и терминала. у меня стоят в vscode и datagrip. Т.е. сколько я гуглил и смотрел ютубчик тут не посчитано.
Пятничный SQL-WTF
Понедельничный SQL-TIL #6

Последние недели я с головой погружен в написание парсера для SnowflakeDB и все SQL-WTF касаются именно этой базы. Я понимаю, что эта база в русскоязычном сегменте интернета мало кого интересует, но других вотсдефаков у меня для вас нет :)

1) LIMIT - не ключевое слово
Источникам данных и колонкам можно задавать псевдонимы:
SELECT t.* FROM table1 AS t

или без AS
SELECT t.* FROM table1 t


Но на этом запросы обычно не заканчиваются. После списка источников данных может идти union, where, group by, having, order by.
Ни одно из этих ключевых слов не может быть использовано в качестве псевдонима. Кроме LIMIT:
SELECT limit.* FROM table1 limit LIMIT 10

2) Неявное именование подзапросов
Если в качестве источника данных используется подзапрос, для него должен быть задан псевдоним. Так работает в PostgreSQL, так работает в MySQL:
SELECT * FROM (SELECT * FROM table1) t

Но в SnowflakeDB это совершенно необязательно. Так же как и в SQLite... :)
Но что будет, если у нас два подзапроса?

SELECT * FROM (SELECT * FROM table1), (SELECT * FROM table1)

В SQLite будет магия - CROSS JOIN с колонками только из первой таблицы... Но, справедливости ради в SQLite даже с заданными псевдонимами и прописанным CROSS JOIN будет такой же результат... B как выяснилось, там нет RIGHT JOIN и FULL JOIN... Пользуясь случаям - привет всем фанатам этой базы :)
Но черт с SQLite, что там у SnowflakeDB?

> SQL compilation error: duplicate alias 'values'

Чего? Какой values?
Оказывается, что SnowflakeDB сам дописывает один и тот же псевдоним к каждому подзапросу:

SELECT values.* FROM (SELECT * FROM table1)

3) Нестрогие значения параметров
В SnowflakeDB есть такая функция для работы с датой:
SELECT  next_day(current_date(), 'Friday')

которая вернет дату следующей пятницы. Удобно. Молодцы. Но:
SELECT  next_day(current_date(), 'Friday I am in love')

даст такой же результат.
Как минимум, неплохо бы было описать это поведение в документации.

4) ISO? Какой ISO?
Правила сортировки (сollation) описываются в формате language[_country][-specifier ...]
И все бы было ок - возьми ISO639-1 для языков, ISO3166-1 для стран. Да, но кого интересуют эти мелочи?

SELECT 'foo' COLLATE 'trololo'

Как я об этом узнал? Случайно, потратив час на поиск того, как узнать доступный список collation.

----

Есть версия, что все эти странности связаны с тем, что основные пользователи SnowflakeDB - дата аналитики и грузить их всякими мелочами типа правильного названия стран и языков это лишнее. Мне сложно сказать что-то по этому поводу, но тем, кто перейдет на SnowflakeDB с мейнстрим баз, гарантированно будет некоторое время больно.
И уже сейчас понятно сколько невалидных отчетов из-за этого было построено, but who cares?
Сразу два ведущих венчурных фонда: Sequoia Capital и Greylock, инвестировали $40M в ходе раунда B в компанию-лидера в области облачной аналитики Rockset. Общая сумма инвестиций составила $61.5M.

https://www.globenewswire.com/news-release/2020/10/27/2115067/0/en/Rockset-Raises-40-Million-For-Real-Time-Analytics-at-Cloud-Scale.html

Rockset создает индексируемую СУБД для аналитики в реальном времени. Сфера применения чрезвычайно широка: механизмы персонализации и рекомендаций в e-commerce, игровые таблицы лидеров, фрод, трекеры здоровья и фитнеса, новостные ленты социальных сетей и многое другое.

Из заявленных  на сайте параметров:
1/ задержка данных - в пределах секунды после создания записи;
2/ поддержка быстрых, высококонкурентных запросов - быстрее в 125 раз, чем SQL;
3/ в 15 раз меньше затрат на операционную поддержку, в сравнении с Elastic или Druid.

Компания Rockset наблюдает феноменальный рост, поскольку аналитика, полученная в реальном времени, становится решающим фактором успеха для организаций произвольного размера. В последнем квартале выручка Rockset выросла на 290%, в проекте зарегистрировались тысячи новых пользователей, а число запросов, выполняемых на платформе, выросло на 313%.

Любопытно, конечно, было бы увидеть что это за цифры в абсолютных значений, но этим Rockset, к сожалению, не хвастается.

Привлеченные средства компания направит на рост команды, ускорение инноваций продуктов и усилия по выводу их на рынок.
Сильное заявление. Проверять я его, конечно, не буду...
Все-таки интроверт он и в Африке интроверт.
После каждого демо колла хочется весь оставшийся день просто лежать...
Да, кстати, на той неделе потрачено 57 часов 44 минуты на написания кода. На этой, видимо, так уже не получится :(

Буду прокрастинировать и скролить непросмотренные мемасы на @profunctor_io, @java_memes и @ydotmdotcdotadot

Если есть еще что-то дельное из публичных каналов, скиньте в чатик. Хочется отпрокрастинировать качественно :)
Посмотрите, что они с моей шапкой сделали!
Через неё теперь хорошо вермишель отбрасывать
Forwarded from Angry Frontend
Если у вас iPhone, Google Authenticator и iOS 14.2, то у меня для вас плохие новости. Вдруг вы ещё не в курсе
Сисадмин тулз случайно спровоцировал сход лавины :)
Forwarded from Sysadmin Tools 🇺🇦
Не оплаченный пост🖖

Решил сделать подборку своих каналов в телеграме, здесь штук 10 нет т.к. там не часто пишут посты или же с мемами каналы, но думаю с мемами вы и так найдёте.

Спасибо авторам и людям, которые их ведут и обновляют❤️

@tech_b0lt_Genona
@alexmakus
@catops
@devopslibrary
@flant_ru
@linuxgram
@opensource_findings
@hacker_news_feed
@oleg_log
@oleg_fov
@generictalks
@overtimehate
@nosingularity
@cybershit
@bykvaadm
@sqaunderhood
@evilmartians
@sudo_rmrf
@bortlog
@qaload
@lovely_it_hell
@badoo_tech
@buhtig
@opennet_ru
@razborfeed
@automation_remarks
@experimentalchill
@itgram_channel
@manandthemachine
@good_bad_reviewer
@sec_devops
@tmfeed
@your_tech
@werf_ru_notifications
@newpodcast2
@SysadminNotes
Я в разработке больше 20 лет, и синдром самозванца преследует меня практически все это время.
Было в самом начале ощущение, что я знаю все, но оно быстро прошло. Это, знаете, когда получил водительские права и кажется, что ты Шумахер...

До сих пор, если меня просят что-то посоветовать, я сначала честно определяю для собеседника границы того, в чем я разбираюсь, в чем точно нет, и какие последствия могут возникнуть.
Естественно, я знаю не все. Само собой есть очень много людей, которые знают больше, соображают быстрее и не имеют проблем с запятыми в текстах... :)

Но скрин в аттаче - это на, мой взгляд, перебор.

Посмотрев на рынок курсов по SQL я даже было хотел запилить свой с блэкджеком, но меня во время отпустило :)
Сейчас рассматриваю только вариант тренажера и то, не хочу делать его самостоятельно, а только в партнерстве с существующими курсами.
Так что если вы работаете в edtech проектах, университетах или знаете того, кто работает, обращайтесь. Есть возможность осушить это болото :)
Егор Бугаенко замутил конфу по code quality: iccq.ru

Должно быть круто, жаль не успею подготовить доклад до 4 декабря.

Справедливости ради, это не первая конфа по качеству кода. Существует Static Analysis Symposium, который через несколько дней будет проводиться уже в 27 (!!!) раз. Да, это не совсем про code quality, но все-таки...
1 год, 600+ постов, 1100+ подписчиков. За вас, друзья!
Внезапно узнал, что Jack Conte - клавишник и лидер группы Pomplamoose, чьи мэшапы я с удовольствием слушаю, оказывается, фаундер Patreon. И запилил он его, потому что его группе было сложно монетизироваться.

Сейчас Patreon оценивают в $1.2B, а самой группе патроны заносят почти $15k в месяц.
Работал с MSSQL 20 лет назад и уже все забыл, но вот тут рассказывают как оно сейчас там происходит в сравнении с PostgreSQL.

Про MERGE забавный факт - его с диким мордобоем пытаются занести в pg уже 10 лет.
До начала 2016 года (!!!) в PostgreSQL не было даже той замены MERGE, которая есть сейчас. UPSERT приходилось делать через RULE или триггеры. Не буду даже искать пример, но поверьте, это выглядело мрачно.

Про возможности работы с JSON в PostgreSQL стоит рассказать отдельно, что я когда-нибудь сделаю :)

Еще полезная ссылка про сравнение возможностей разных баз:
http://sql-workbench.eu/dbms_comparison.html


Набросил @sysadmin_tools