dzz: Dizzy の春 (Default)
Бывает, что в суете бегущих дней никто не реализовал простую, вроде бы, штуку, и нет ответа на твой вопрос ни в StackOverflow, ни в гугле... :)

Понадобилось намедни нагенерить в постгресе некоторое количество неповторяющихся случайных mac-адресов с первым октетом из нулей.
Настоящий веб-программист :))) написал бы аж целый скрипт с подключением к базе и подстановкой сгенерированных значений в SQL-запросы.

А я не нашёл ничего лучшего, чем соорудить простенькую функцию на Pl/PgSQL. Бонус - она исполняется на стороне сервера и может быть задействована в любом запросе или хранимой функции/процедуре без запуска дополнительных сущностей.

Выглядит так:
...click to open code... )
Возможно, кому-то пригодится.

P.S. Постояно замечаю, что люди используют СУБД преимущественно как место хранения таблиц, вынося всю логику в приложения. Причём, началось это не вчера (ругался на такой подход ещё в нулевые), но в последние годы тенденция приобрела угрожающие масштабы, вплоть до попыток теоретического обоснования "почему центральная БД с логикой - это плохо" со стороны микросервисников.

Джеффри Ульмана на них нет :)))
dzz: Dizzy の春 (Default)
Нашёл в одном из своих скриптов N-летней давности табличку:

CREATE TABLE sock_table(sock_id INT, smell_factor FLOAT, hole_count INT);

Напрочь не помню, зачем создавал, но модель данных забавная.

Вспомнил, зачем. Но не скажу :)
dzz: Dizzy の春 (Default)
Redis в качестве оперативной БД для миддлвари, управляющей отрисовкой электронных ценников и передачей контента в полки, оказался лучшим решением из возможных.

...немного подробностей... )

В целом, доволен выбранной архитектурой, и собой немножко :)

КДПВ: Redis database mascot в представлении Midjourney

Dmitry_Povarov_redis_software_mascot_472f9f10-6b4f-4e75-b9f8-efddbef9d840.png
dzz: Dizzy の春 (Default)
Прекрасное с просторов:

DB_Snapshots.png

Это даже веселее, чем старинное "Вы купили у нас NetBackup, а NetRestore не купили..."
dzz: Dizzy の春 (Default)
Ненавижу, когда используют полноразмерные СУБД (например, постгрес) как эдакий эксель, для тупого хранения табличек. Ни индексов, ни констрейнтов, ни хранимых процедур, вся логика в приложении. Хорошо, если primary key есть. Поубывав бы :)
dzz: Dizzy の春 (Default)
-Как у вас с Ораклом дела?
-У нас всё по-старому, а Ларри Элиссон купил себе новую яхту...
dzz: Dizzy の春 (Default)
Какой же, всё-таки, тормоз этот ваш Oracle SQL Developer...
dzz: Dizzy の春 (Default)
Продолжаю экстренное изучение мелкомягкого SQL-сервера и T-SQL. Открыл для себя много нового.
Нестандартность некоторых решений весьма впечатляет - авторы во многом шли ну очень своими путями. В поисках концентрированного описания отличий MS SQL от знакомых СУБД прошёлся по форумам sql.ru. Нашёл 60+ страниц срача о локальных временных таблицах, весьма познавательно ;)))
dzz: Dizzy の春 (Default)
Собственно, вполне реальные события - ERP-система нашего клиента в ходе консолидации финансовых данных сгенерила SQL-запрос длиной 2 мегабайта примерно следующего вида:

select a,b,c from my_table
where a in (0000001,0000002,00000003,00000004,00000006,0000023...


и так далее.

Оракловый парсер изумился и выкинул белый флаг ORA-3113 (end of communication channel).
Оракл изумился действиям парсера и выкинул кору на 4.5 гигабайта.
Служба поддержки Oracle изумилась и ушла в астрал.
Интеграторы изумились и написали разработчикам.
Разработчики изумились и после 3-дневного размышления признали фичу багом...

Ну а по московскому Oracle-community теперь ходит байка про 2-мегабайтный SQL-запрос.
"Просмотрите, дети... Так писать НЕЛЬЗЯ!!!!!"

April 2026

S M T W T F S
   1 2 34
56 7 891011
1213141516 1718
19202122232425
2627282930  

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 19th, 2026 11:42 pm
Powered by Dreamwidth Studios