Любопытно, спасибо, почитаю на досуге. Картинки красивые, но слишком уж хипстерские, а я натурал довольно старомоден. Хорошо, что он Open-Source, может вытащу что-нибудь из него хотя бы по частям.
Спасибо, очень полезная статья. Закрыл ИП в этом году, но ситуация знакомая и глаз дёргался, да..
Ставить всякие .deb-пакеты под sudo в систему - не оч хорошая идея для параноиков. Оно, там, между прочим, сертификаты ставит, а мы все знаем для чего нужны доверенные сертификаты. Я бы в следующий раз себе попробовал как-то это всё упаковать в контейнеры - Docker или Snap. Вместо Firefox, возможно, лучше подойдёт Chromium-Gost - он специально собирается с поддержкой ГОСТ-шифрования.
Есть такой банк - TSB. Погуглите что-нибудь типа "TSB 2018" - они решили мигрировать на новую платформу с Кобола. Всё пошло очень плохо, банк не работал несколько дней, а восстановил всё через месяцы. Прямых убытков (штрафы, компенсации и тп) было около 50млн, а в сумме оценивают ущерб более 300млн. Около 80000 клиентов покинуло банк после этого.
Можно и пример. Не банкротство, но похожий пример. В ковидные времена в Нью-Джерси скопилось более 360к необработанных заявлений на выплату пособий по безработице. 40-летние мэйнфреймы не справлялись, а новых работников для решения проблем найти было трудно.
Для монги тоже можно поискать нишу, если какие-то специальные сравнения делать.
Например, загонять документы в JSON-формате и потом по ним искать по вложенным полям. Из конкурентов PostgreSQL что-то может сравнимое показать, да ещё у Redis было расширение для такого, кажется.
Ну или просто пихать рандомные JSON в монгу, без схемы. Все остальные базы с ума сойдут от такого. Разве что какие-нибудь колоночные базы вытащат.
Почему бы и не сравнить в режиме чтения? В данном случае это всё лежит в памяти.
Или не в памяти. Postgres по-умолчанию: shared_buffers=128MB , work_mem=4MB Ну ещё max_connections=100, но вы могли в них и не упереться. Если вы рандомно читаете из таблицы, то будете с диска грузить постоянно новые страницы. Кстати, версия 15 немного старовата - уже 18я вышла.
С остальными базами не могу нормально прокомментировать, но опираться на дефолт и мерять скорость - не очень объективно.
Опять же - Redis тут вообще ни к месту сравнивать. У него доступ O(1), а постгрес сначала посчитает номер закоммиченной транзакции чтобы вам строку отдать.
Но правда в том, что какая бы БД не была в вашей системе, вы всё равно прикрутите её дополнительно как key-value к части бизнес логики. Так что, сравнение допустимо. Redis работает в режиме одного потока, поэтому я запускал по 4 инстанса - один на ядро. Остальные же базы активно используют все 4 ядра. Mongo по определенным причинам запускал в докере, остальные базы просто устанавливал в систему. Настройки дефолтные, т.к. нас не интересуют размеры кэшей и индексов в данном тесте.
Вот этот абзац точно написан через ChatGPT, потому что каждое предложение очень нелогично.
То есть вы сравниваете in-memory KV-хранилище с транзакционной базой данных? И удивляетесь что почему-то на диск пишет?
Настройки дефолтные, т.к. нас не интересуют размеры кэшей и индексов в данном тесте.
В смысле не интересуют? Из-коробки любая база сконфигурирована так, чтобы просто запуститься на минимальном железе, но производительность никто не обещал.
Redis работает в режиме одного потока, поэтому я запускал по 4 инстанса - один на ядро.
То есть в кластере? Или по отдельности? А тесты шли на каждый отдельно или только на один? Что за ерунда тут происходит? В linux можно прилепить процесс к одному ядру процессора и он только его и будет использовать, если вы этого хотели добиться. Зачем 4 инстанса-то?
Простите, но это ответ из серии "дерево справа более зелёное, чем слева".
Что значит "улучшился"? За счёт чего? У вас в обоих случаях за RSGI/WSGI фронтендом стоит питоновское приложение, одно и то же. И интерпретатор один и тот же. Однопоточный. В случае gunicorn фактически воркер и приложение работают в одном процессе. В RSGI, как я понимаю, бинарник на Rust вызывает Python-код, это уже некоторые накладные расходы. В любом случае, 98% времени будет выполняться именно Python-код джанги и приложения, а здесь выигрыша никакого не предвидится.
Разница WSGI и ASGI хотя бы понятна из-за чего. Здесь хотелось бы либо объяснения, либо результатов с тестами.
Опять же, перед всем этим в любом случае будет стоять балансер типа nginx, который возьмёт на себя основные расходы типа терминирования TLS и медленных клиентов.
Нестареющая "классика": Лео Каганов "Законопроект"
Любопытно, спасибо, почитаю на досуге. Картинки красивые, но слишком уж хипстерские, а я
натуралдовольно старомоден. Хорошо, что он Open-Source, может вытащу что-нибудь из него хотя бы по частям.Это называется кликджекинг или кликбейт.
Спасибо, очень полезная статья. Закрыл ИП в этом году, но ситуация знакомая и глаз дёргался, да..
Ставить всякие .deb-пакеты под sudo в систему - не оч хорошая идея для параноиков. Оно, там, между прочим, сертификаты ставит, а мы все знаем для чего нужны доверенные сертификаты. Я бы в следующий раз себе попробовал как-то это всё упаковать в контейнеры - Docker или Snap. Вместо Firefox, возможно, лучше подойдёт Chromium-Gost - он специально собирается с поддержкой ГОСТ-шифрования.
У вас это для Python 2 программа, для Python 3 надо скобки добавить. Но совершенно читаемо, вы правы.
Мда, помним, помним..
(Парсер тут не может правильно показать все символы, но и к лучшему).
На продакшене быстрее работает эта "программа".
Вебсокеты двусторонние - это вам уже на AsyncAPI надо смотреть, хотя он тоже довольно абстрактный и ещё меньше проработанный.
Ну вы сами хотели
Вы и так знаете кто там
Что-то я ничерта не понял, если честно. Сдающих в аренду что? Номера? Аккаунты? А это разве законно вообще? Как их можно сдавать?
Есть такой банк - TSB. Погуглите что-нибудь типа "TSB 2018" - они решили мигрировать на новую платформу с Кобола. Всё пошло очень плохо, банк не работал несколько дней, а восстановил всё через месяцы. Прямых убытков (штрафы, компенсации и тп) было около 50млн, а в сумме оценивают ущерб более 300млн. Около 80000 клиентов покинуло банк после этого.
Можно и пример. Не банкротство, но похожий пример. В ковидные времена в Нью-Джерси скопилось более 360к необработанных заявлений на выплату пособий по безработице. 40-летние мэйнфреймы не справлялись, а новых работников для решения проблем найти было трудно.
Ну а потом старого программиста Джона разбивает инсульт и большая корпорация банкротится за три дня (потому что два из них - выходные).
Как же в дайджесте пропущена такая новость: Председатель комитета Госдумы по финансовому рынку первым получил зарплату в цифровых рублях ? Я расчитывал увидеть на эту тему более смешной мем, чем мой боян.
Для монги тоже можно поискать нишу, если какие-то специальные сравнения делать.
Например, загонять документы в JSON-формате и потом по ним искать по вложенным полям. Из конкурентов PostgreSQL что-то может сравнимое показать, да ещё у Redis было расширение для такого, кажется.
Ну или просто пихать рандомные JSON в монгу, без схемы. Все остальные базы с ума сойдут от такого. Разве что какие-нибудь колоночные базы вытащат.
Или не в памяти. Postgres по-умолчанию:
shared_buffers=128MB
,work_mem=4MB
Ну ещёmax_connections=100
, но вы могли в них и не упереться. Если вы рандомно читаете из таблицы, то будете с диска грузить постоянно новые страницы. Кстати, версия 15 немного старовата - уже 18я вышла.С остальными базами не могу нормально прокомментировать, но опираться на дефолт и мерять скорость - не очень объективно.
Опять же - Redis тут вообще ни к месту сравнивать. У него доступ O(1), а постгрес сначала посчитает номер закоммиченной транзакции чтобы вам строку отдать.
альтернатив
Вот этот абзац точно написан через ChatGPT, потому что каждое предложение очень нелогично.
То есть вы сравниваете in-memory KV-хранилище с транзакционной базой данных? И удивляетесь что почему-то на диск пишет?
В смысле не интересуют? Из-коробки любая база сконфигурирована так, чтобы просто запуститься на минимальном железе, но производительность никто не обещал.
То есть в кластере? Или по отдельности? А тесты шли на каждый отдельно или только на один? Что за ерунда тут происходит? В linux можно прилепить процесс к одному ядру процессора и он только его и будет использовать, если вы этого хотели добиться. Зачем 4 инстанса-то?
Простите, но это ответ из серии "дерево справа более зелёное, чем слева".
Что значит "улучшился"? За счёт чего? У вас в обоих случаях за RSGI/WSGI фронтендом стоит питоновское приложение, одно и то же. И интерпретатор один и тот же. Однопоточный. В случае gunicorn фактически воркер и приложение работают в одном процессе. В RSGI, как я понимаю, бинарник на Rust вызывает Python-код, это уже некоторые накладные расходы. В любом случае, 98% времени будет выполняться именно Python-код джанги и приложения, а здесь выигрыша никакого не предвидится.
Разница WSGI и ASGI хотя бы понятна из-за чего. Здесь хотелось бы либо объяснения, либо результатов с тестами.
Опять же, перед всем этим в любом случае будет стоять балансер типа nginx, который возьмёт на себя основные расходы типа терминирования TLS и медленных клиентов.