Наверное, все уже слышали, как в одном европейском королевстве пролюбили статистику по ковиду из-за того, что в екселе, куда они все записывали, закончились колонки.
Отдельных ответов заслуживают вопросы: как можно было этого не заметить и какой мудак решил использовать для этой цели колонки вместо строк.
Вывода тут можно сделать два:
- не связывайтесь в .gov, у них все через жопу. В любой стране.
- не используйте в качестве систем управления базами данных те инструменты, которые таковыми не являются (привет любителям sqlite)
Отдельных ответов заслуживают вопросы: как можно было этого не заметить и какой мудак решил использовать для этой цели колонки вместо строк.
Вывода тут можно сделать два:
- не связывайтесь в .gov, у них все через жопу. В любой стране.
- не используйте в качестве систем управления базами данных те инструменты, которые таковыми не являются (привет любителям sqlite)
каждый раз видя такие графики вспоминаю историю как рубисты положили постгрес, который крутился на 70 cpu...
https://www.2ndquadrant.com/en/blog/oltp-performance-since-postgresql-8-3/
https://www.2ndquadrant.com/en/blog/oltp-performance-since-postgresql-8-3/
2ndQuadrant | PostgreSQL
OLTP performance since PostgreSQL 8.3 - 2ndQuadrant | PostgreSQL
A couple years ago (at the pgconf.eu 2014 in Madrid) I presented a talk called “Performance Archaeology” which showed how performance changed in recent PostgreSQL releases. I did that talk as I think the long-term view is interesting and may give us insights…
На заметку всем, кто рекомендует мне выложить все в опенсорс:
https://twitter.com/tim_nolet/status/1317061818574082050
https://twitter.com/tim_nolet/status/1317061818574082050
Twitter
Tim Nolet 👨🏻🚀
Oh @awscloud I really do 💕 you! But next time you fork my OS project github.com/checkly/headle… and present it as your new service, give the maintainers a short "nice job, kids" or something. Not necessary as per the APLv2 license, but still, ya know? aw…
Вроде бы и смешно, но я знаю несколько человек, которые тянут язычок у куллера на себя. У всех офисных куллеров, что я видел, язычок в таком положении фиксируется и можно не держать чашку в ожидании наполнения.
https://twitter.com/towernter/status/1317479702349647873
https://twitter.com/towernter/status/1317479702349647873
Twitter
Tawanda Nyahuye👨💻
users be like that sometimes
А пока идет перепись тех, у кого есть бесплатная столовка в офисе и тех, кому приходится наливать воду в куллере, аки холопам, вот еще один наброс в тему канала:
чуваки заморочились и посчитали сколько ресурсов тратит одна и та же программа, написанная на разных языках.
Бенчмарк (как и все бенчмарки) барахло (и переписывать все на сях я не буду), но в конце списка оказались именно те, кого мы там ждали: руби и питон :)
https://thenewstack.io/which-programming-languages-use-the-least-electricity/
Теперь мы знаем, кто виноват в глобальном потеплении...
чуваки заморочились и посчитали сколько ресурсов тратит одна и та же программа, написанная на разных языках.
Бенчмарк (как и все бенчмарки) барахло (и переписывать все на сях я не буду), но в конце списка оказались именно те, кого мы там ждали: руби и питон :)
https://thenewstack.io/which-programming-languages-use-the-least-electricity/
Теперь мы знаем, кто виноват в глобальном потеплении...
The New Stack
Which Programming Languages Use the Least Electricity?
Can energy usage data tell us anything about the quality of our programming languages? Last year a team of six
Пятничный SQL-WTF
Понедельничный SQL-TIL
Пару недель я занимаюсь описанием грамматики SQL-синтексиса базы snowflake. Это такая cloud-only база, которую пилят 8 лет, 1500 человек сотрудников, вышли месяц назад на IPO с оценкой $70B...
Как-то давно в твитерах молодежь жаловалась на непонятную документацию постгреса:
https://news.1rj.ru/str/nosingularity/165
Как же выглядит синтаксис snowflake?
Выглядит он как письмо дяди Федора родителям (олды тут?).
1) Нет нормальной структуры.
Часть команд очевидно где-то есть, но найти их не получается. Например, есть описание ALTER ACCOUNT, а CREATE ACCOUNT нет.
Оно, наверное, логично - аккаунт, это сущность, получаемая в результате регистрации. Но если выполнить "несуществующую" команду
2) Одни и те же сущности описываются разными ключевыми словами:
Описание параметров FILE FORMAT занимает несколько страниц и копируется из раздела в раздел, везде, где это свойство используется. Видимо, зарплата привязана к количеству строк :)
4) У команд есть алиасы, но про них ничего не сказано.
Случайно узнаешь об этом из примеров. Есть команда REMOVE, во всех примерах - RM.
5) Содержимое строк является частью синтаксиса.
6) В некоторых командах строки можно НЕ БРАТЬ в кавычки.
В документации:
7) Ключевые слова иногда можно использовать в кавычках:
И даже в примерах об этом ничего не нет. Например, в FILE FORMAT можно пропустить описание type и тогда будет считаться, что за основу взят CSV.
9) Порядок некоторых свойств может быть произвольный.
Узнать какие именно свойства не зависят от порядка можно только императивно. Например, о том, что CLUSTER BY можно воткнуть перед описанием колонок я нашел в примере на гитхабе у какого-то левого чувака:
В примере выше CLUSTER BY описан как
11) Описание аналогичных команд имеет разный формат.
Опустим подробности, что зарегистрироваться жителям РФ они не дают. Просто "ой, не работает" на этапе регистрации, а в каких-то формах страны просто нет.
Но когда вы прорветесь в админку, можно будет порадоваться - они вернули мне мой 2007. Такая убогая и тормозная админка ставит их на одну ступень со всеми серьезными игроками - гугл и амазон :)
И это не считая того, что там визуально не обозначено и половины тех функций, которые описаны в документации.
Пару недель я занимаюсь описанием грамматики SQL-синтексиса базы snowflake. Это такая cloud-only база, которую пилят 8 лет, 1500 человек сотрудников, вышли месяц назад на IPO с оценкой $70B...
Как-то давно в твитерах молодежь жаловалась на непонятную документацию постгреса:
https://news.1rj.ru/str/nosingularity/165
Как же выглядит синтаксис snowflake?
Выглядит он как письмо дяди Федора родителям (олды тут?).
1) Нет нормальной структуры.
Часть команд очевидно где-то есть, но найти их не получается. Например, есть описание ALTER ACCOUNT, а CREATE ACCOUNT нет.
Оно, наверное, логично - аккаунт, это сущность, получаемая в результате регистрации. Но если выполнить "несуществующую" команду
CREATE ACCOUNT userто получим не syntax error, а SQL access control error: Insufficient privileges to operate on account 'USER'
2) Одни и те же сущности описываются разными ключевыми словами:
SOURCE_COMPRESSION = AUTO_DETECT | GZIP | ... | NONEеще:
COMPRESSION = AUTO | GZIP | ... | NONE
FILE FORMAT, FILE_FORMAT, STAGE_FILE_FORMATи еще:
NETWORK POLICY, NETWORK_POLICY3) Определения повторяются.
Описание параметров FILE FORMAT занимает несколько страниц и копируется из раздела в раздел, везде, где это свойство используется. Видимо, зарплата привязана к количеству строк :)
4) У команд есть алиасы, но про них ничего не сказано.
Случайно узнаешь об этом из примеров. Есть команда REMOVE, во всех примерах - RM.
5) Содержимое строк является частью синтаксиса.
SCHEDULE = '{num MINUTE | USING CRON expr time_zone }'
или вот:externalStageParams (for Amazon S3) ::= URL = 's3://_bucket_[/_path_/]' ...Видимо, есть некоторые сомнения в когнитивных способностях пользователей azure, т.к. одного протокола оказалось недостаточно...
externalStageParams (for Google Cloud Storage) ::= URL = 'gcs://_bucket_[/_path_/]' ...
externalStageParams (for Microsoft Azure) ::= URL = 'azure://_account_.blob.core.windows.net/_container[/_path_/]'
6) В некоторых командах строки можно НЕ БРАТЬ в кавычки.
В документации:
PUT file:///tmp/data/mydata.csv @my_int_stage;А можно брать. Но узнаешь, только если попробуешь...
7) Ключевые слова иногда можно использовать в кавычках:
... COMPRESSION = AUTO ...8) Свойства описаны как обязательные, но на самом деле таковыми не являются.
... COMPRESSION = 'AUTO' ...
И даже в примерах об этом ничего не нет. Например, в FILE FORMAT можно пропустить описание type и тогда будет считаться, что за основу взят CSV.
9) Порядок некоторых свойств может быть произвольный.
Узнать какие именно свойства не зависят от порядка можно только императивно. Например, о том, что CLUSTER BY можно воткнуть перед описанием колонок я нашел в примере на гитхабе у какого-то левого чувака:
create or replace TABLE "tablecluster" cluster by LINEAR(DATE, ID)(10) Описанный ограничения синтаксиса некоторых свойств в реальности не существуют.
DATE TIMESTAMP_NTZ(9),
ID NUMBER(38,0),
...
);
В примере выше CLUSTER BY описан как
CLUSTER BY ( expr1 [ , expr2 ... ] )То, что параметром может выступать функция, не сказано нигде.
11) Описание аналогичных команд имеет разный формат.
PUT file://_path_to_file_/_filename_ internalStageВидимо, это связанно с возможностью использования свойств в произвольном порядке, но блин!
GET internalStage file://_path_to_file_/_filename
Опустим подробности, что зарегистрироваться жителям РФ они не дают. Просто "ой, не работает" на этапе регистрации, а в каких-то формах страны просто нет.
Но когда вы прорветесь в админку, можно будет порадоваться - они вернули мне мой 2007. Такая убогая и тормозная админка ставит их на одну ступень со всеми серьезными игроками - гугл и амазон :)
И это не считая того, что там визуально не обозначено и половины тех функций, которые описаны в документации.
👍1
В этом довольно специфичном тесте PostgreSQL выносит MSSQL и MySQL вперед ногами:
https://www.mssqltips.com/sqlservertip/6607/delete-sql-performance-for-sql-server-mysql-and-postgresql/
https://www.mssqltips.com/sqlservertip/6607/delete-sql-performance-for-sql-server-mysql-and-postgresql/
There will be no singularity
На заметку всем, кто рекомендует мне выложить все в опенсорс: https://twitter.com/tim_nolet/status/1317061818574082050
Twitter
Андрей Ситник
«Большинство (>80%) популярных опенсорс-проектов, получают пожертвований меньше, чем платят среднему программисту или даже ниже черты бедности». https://t.co/gsOV99CYM2
Ребята из @profunctor_io большие молодцы и я всегда готов поддержать их призывы рассказать про профунктор-джоб, поэтому вот:
Не секрет, что лучшие вакансии в айти расходятся задолго до попадания на hh и linkedin. Одно из мест где можно ловить такие варианты это канал Профунктора: NVIDIA, Revolut, Bolt, Мосбиржа и другие лучшие карьерные варианты для разработчиков появляются там регулярно. Стоит подписаться, чтобы быть в курсе того сколько нынче платят «по рынку», и не гнуть спину за полцены из-за того что неудачно прособеседовался год назад.
@profunctor_jobs
@profunctor_jobs
И первая хорошая новость за этот год:
https://www.government.is/news/article/2020/10/27/-Foreign-experts-can-work-remotely-in-Iceland/
https://www.government.is/news/article/2020/10/27/-Foreign-experts-can-work-remotely-in-Iceland/
www.government.is
Icelandic measures for remote workers put in place
The Minister of Tourism, Industry, and Innovation, the Minister of Justice and the Minister of Finance and Economic Affairs have put in place measures to enable non-EEA foreign nationals to reside in Iceland for up to six months and telework for foreign companies.…
Не перестаю кекать со snowflakeDB (вот тут история, как я грамматику по документации начал писать)
Как можно одновременно выполнить запрос и выдать "SQL compilation error"?
Update: причем ошибка вываливается на примере из документации. А результат, который все-таки прилетает, не совпадает с результатом из документации...
PS: про сноуфлейк нет мемасов, поэтому вот вам демотиватор (!!!):
Как можно одновременно выполнить запрос и выдать "SQL compilation error"?
Update: причем ошибка вываливается на примере из документации. А результат, который все-таки прилетает, не совпадает с результатом из документации...
PS: про сноуфлейк нет мемасов, поэтому вот вам демотиватор (!!!):
Прошло несколько месяцев с публикации прошлой версии подборки экзотических применений SQL, поэтому не грех опубликовать ее еще раз, добавив еще один пункт.
Не все знают, но SQL можно использовать не только для работы с данными в БД.
Есть возможность манипулировать данными из командной строки.
Зачем такое может понадобиться?
1) Парсинг JSON-логов
https://github.com/avz/jl-sql
Можно придумать много хороших usecases. Я писал про эту тулзу в статье про тестирование логов - https://news.1rj.ru/str/nosingularity/198
https://osquery.io/
Совершенно безумная и красивая идея. 257 источников данных!
https://github.com/escherize/img_sql/
4) SQL для MongoDB, DynamoDB, Kafka, S3
Если не хочется работать с монгой, но очень нужно, то можно выкрутиться так
https://rockset.com/solutions/mongodb/
Например, отлично зайдет для использования в тулзах для визуализации, таких как Grafana.
Насколько это имеет смысл для работы с базами из приложения, сказать сложно.
5) SQL для запросов по git репозиториям
https://github.com/augmentable-dev/gitqlite (переименовали в askgit)
https://relational-pipes.globalcode.info/v_0/examples-jack-midi-generating-1.xhtml
Не все знают, но SQL можно использовать не только для работы с данными в БД.
Есть возможность манипулировать данными из командной строки.
Зачем такое может понадобиться?
1) Парсинг JSON-логов
https://github.com/avz/jl-sql
Можно придумать много хороших usecases. Я писал про эту тулзу в статье про тестирование логов - https://news.1rj.ru/str/nosingularity/198
> cat data.json | jl-sql 'SELECT key, SUM(value) AS sum, COUNT(*) AS count GROUP BY key'2) Работа с параметрами операционной системы
https://osquery.io/
Совершенно безумная и красивая идея. 257 источников данных!
> osqueryi --json "SELECT * FROM mounts m, disk_encryption d WHERE m.device_alias = d.name AND d.encrypted = 0;"3) Работа с изображениями
https://github.com/escherize/img_sql/
> ./img_sql.py -i samples/matrix.jpg -o samples/matrix_out.jpg -s 'update pixels set r = g, b = r, g = b where x > 700'Осталось написать транспайлер в GLSL и будет win :)
4) SQL для MongoDB, DynamoDB, Kafka, S3
Если не хочется работать с монгой, но очень нужно, то можно выкрутиться так
https://rockset.com/solutions/mongodb/
Например, отлично зайдет для использования в тулзах для визуализации, таких как Grafana.
Насколько это имеет смысл для работы с базами из приложения, сказать сложно.
5) SQL для запросов по git репозиториям
https://github.com/augmentable-dev/gitqlite (переименовали в askgit)
> -- how many commits have been authored by user@email.com?6) Играем музыку оО
> SELECT count(*) FROM commits WHERE author_email = 'user@email.com'
https://relational-pipes.globalcode.info/v_0/examples-jack-midi-generating-1.xhtml