Сохранен 513
https://2ch.hk/pr/res/2701507.html
24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Универсальный баз данных тред #8 /sql/

 Аноним 17/05/23 Срд 01:40:35 #1 №2701507 
.png
.png
Прошлый >>2530219 (OP)

Ссылки:
- https://www.postgresqltutorial.com/
- https://www.mysqltutorial.org/
- https://www.sqlitetutorial.net/
- https://www.oracletutorial.com/
- https://github.com/agarcialeon/awesome-database

Задачи:
- https://www.sql-ex.ru
- https://www.codewars.com/?language=sql

Продвинутый MySQL:
- https://www.mysqltutorial.org/mysql-resources.aspx
- https://shlomi-noach.github.io/awesome-mysql/

Инструменты проектирования БД
- https://www.mysql.com/products/workbench/
- https://explain.dalibo.com/

Видосики:
- Плейлисты по разным СУБД: https://www.youtube.com/c/SQLDeveloperBI/playlists
- https://www.youtube.com/playlist?list=PLY7PmJJFH5nT-lbFKxfbp3rw5BBuq5Azo

Литература:
- Томас Кайт. Oracle для профессионалов
- https://postgrespro.ru/education/books/dbtech
- Алан Бьюли. Изучаем SQL. - про MySQL
- К. Дж. Дейт. Введение в системы баз данных

Прочее:
- https://dbdb.io/
- https://db.cs.cmu.edu/
- https://www.youtube.com/channel/UCHnBsf2rH-K7pn09rb3qvkA/playlists
- Сравнение диалектов SQL: http://troels.arvin.dk/db/rdbms/
- Как БД работают изнутри: https://habr.com/ru/company/mailru/blog/266811/

Ссылки для альтернативно мыслящих:
- https://www.w3schools.com/sql/
- https://learnxinyminutes.com/docs/sql/
- https://metanit.com/sql/
- http://sql-tutorial.ru/
- https://metanit.com/nosql/mongodb/


FAQ:
Q: Нужно ли знать английский?
A: Нет.

Q: Что лучше, SQL или NoSQL?
A: SQL.

Q: Вопросы с лабами и задачками
A: Задавай, ответят, но могут и обоссать.

Здесь мы:
- Разбираемся, почему PostgreSQL - не Oracle
- Пытаемся понять, зачем нужен Тырпрайс, если есть бесплатный опенсурс
- Обсуждаем, какие новые тенденции хранения данных появляются в современном цифровом обеществе
- Решаем всем тредом лабы для заплутавших студентов и задачки с sql-ex для тех, у кого завтра ПЕРВОЕ собеседование
- Анализируем, как работает поиск вконтакте
- И просто хорошо проводим время, обсирая чужой код, не раскрывая, как писать правильно.

Поехали!
Аноним 17/05/23 Срд 14:55:10 #2 №2701957 
>>2701090 →
О, насчёт datagrip не знал.
Жаль она платная, месяц триал...
Аноним 17/05/23 Срд 16:13:54 #3 №2702052 
Хай только устроился в компанию на должность аналитика-маркетолога хехе. Отчетность на основе кубов в excel, но я видел что есть MSQL. Какие подводные камни если я буду писать запросы к кубу из менеджера или сразу к таблицам обращаться минуя кубы?
Аноним 20/05/23 Суб 21:12:31 #4 №2705969 
>>2701507 (OP)
Есть непонятка по микросервисам
Постоянно говорят что на каждый сервис должна быть строго 1 база, что шареная между несколькими сервисами база это плохо-плохо

Но есть следующий кейс: отправляется запрос на main back сервис на выгрузку некого большого файла, он создает запись в таблице event, отправляем реквест в сервис file handler и возвращаем фронту id ивента. В это время сервис file handler начинает обрабатывать запрос.

Если база с таблицей event не шарится между несколькими сервисами то как тогда иначе?
Аноним 21/05/23 Вск 11:54:23 #5 №2706326 
>>2701957
Для пайчарма и осмелюсь предположить любой Иде от жидбрейнс есть плагины, которые повторяют функции датагрип. Также полно другого бесплатного софта для управления базами данных, например dbeaver
Аноним 21/05/23 Вск 17:19:24 #6 №2706786 
>>2706326
Только в Про Пайчарме
Но сейчас бы в 2023 не мочь его украсть...
Аноним 21/05/23 Вск 22:17:22 #7 №2707337 
Не считается ли моветоном mssql? ну кто будет держать сервера на шиндовсе?
Аноним 21/05/23 Вск 22:24:35 #8 №2707356 
>>2705969
> В это время сервис file handler начинает обрабатывать запрос.
А дальше что должно произойти? Фронт обратится к file handler по id ивента, и он должен вернуть результат выгрузки? Ну сохраняй эти id в отдельной таблице в БД file handler. Да, данные в БД разных микросервисов дублируются.
Аноним 21/05/23 Вск 22:25:48 #9 №2707361 
>>2707337
MSSQL работает на линуксе. Но моветоном считается всё, кроме постгреса.
Аноним 21/05/23 Вск 22:29:00 #10 №2707369 
>>2707361
>постгреса
чем он так хорош в отличие от, например, мускула или марии?
Аноним 21/05/23 Вск 22:48:55 #11 №2707402 
>>2707369
Да хуй его знает, никто конкретно ответить не может. Любые доводы спорны и вызывают срач. Но на крупных проектах, где пытаются слезть с Oracle/MSSQL, мускул часто даже не рассматривают, не нравится от им, слишком PHP пахнет.
Аноним 22/05/23 Пнд 11:45:23 #12 №2707900 
>>2701507 (OP)
А есть хорошие гайды или книги где подробно объясняют как правильно строить модель данных, которая бы ложилась на NoSQL базу данных? Как не приду на проекте - каждый раз кто-то пытается натянуть реляционную модель и выдумать внешние ключи на стороне приложения.
Аноним 22/05/23 Пнд 12:00:55 #13 №2707913 
417vtvOK8sL.jpg
41bklOf3zTL.jpg
61WK-R8OQfL.jpg
>>2707900
>есть хорошие гайды или книги где подробно объясняют как правильно строить модель данных
Гугли single table design.
Аноним 23/05/23 Втр 18:39:44 #14 №2709595 
Как пруфануть ХРющке знание sql чтобы она меня до собеса допустила? Думаю сделать какой-то из сертификатов, какой лучше databricks data analyst associate или Oracle sql 1z-071? Дата брикс больше к моему стэку подходит тк я азур учу так же, но оракул чисто sql экзамен можно сказать с некоторыми вкраплениями оракловчкой версии а датабрикс всякие визуализации и тд еще есть.
skuf 23/05/23 Втр 20:47:39 #15 №2709683 
Шо парни, скока получаете, скока по времени работаете?
100/6мес
Аноним 24/05/23 Срд 19:17:07 #16 №2710669 
>>2709595
Никак. Собеседование не с разработчиками - строго нахуй.
Аноним 24/05/23 Срд 20:09:28 #17 №2710733 
Отговорить становиться датаинженером, а то мне начинает нравиться.
Аноним 24/05/23 Срд 20:11:15 #18 №2710735 
>>2710733
hh.ru
Аноним 25/05/23 Чтв 02:40:16 #19 №2710955 
>>2709683
>>100/6мес
Год назад тоже был 100/6 мес.
Теперь я 120/1,5 года
Аноним 25/05/23 Чтв 06:23:09 #20 №2710986 
>>2701507 (OP)
Прошу, скиньте арт со второй пикчи
Аноним 25/05/23 Чтв 18:37:58 #21 №2711824 
>>2710955
А чо так хуево?
Ты не из дс?
Аноним 26/05/23 Птн 13:51:46 #22 №2712455 
Привет. Вопрос по PSQL
Есть Пикей с настроенными автоматическими значениями. Как сделать так, чтобы после удаления строк из таблицы следующий пикей выбирался минимальным? Пример:
id
1
2
3
Дропаем вторую строчку и вставляем новую
id
1
3
4
вместо 4 хотелось бы получить 2. Такое реально?
Аноним 26/05/23 Птн 14:34:58 #23 №2712517 
>>2712455
Можешь написать триггер, который будет на каждый инсерт вычислять максимум и записывать в id, причём надо каждый раз блокировать всю таблицу, чтобы другая транзакция не сгенерировала такой же id. Представь, какие будут тормоза.
Пропуски в генераторе id - меньшее зло.
Аноним 26/05/23 Птн 14:55:40 #24 №2712576 
>>2712517
Согласен.
Думал малой кровью обойдусь, но раз нет так нет, просто глаза мозолят индексы не от 1...
Аноним 27/05/23 Суб 11:00:58 #25 №2713387 
>>2712576
Я конеш хз, но вот чет я даже не оьращаю внимания на пк. Какая разница что у тебя пк 12949393, а не 12938322, например? Да и в целом меня больше смущает то, что они по идеи могут повторяться из за cycle, а если у тебя no cycle, а там уже подходит к концу, то ждет прекол
Аноним 30/05/23 Втр 08:27:19 #26 №2715999 
Привет, нужна обучалка по mdx. Есть кто знает?
Аноним 30/05/23 Втр 14:22:48 #27 №2716370 
предположим вопрос на собесе про оптимистическую и пессимистическую блокировки.
В случае постгреса можно ли через базу сделать оптимистическую блокировку?

isolation_level = serializable - оно защищает только от параллельных изменений. Читаем данные 2 раза, отдаем 2 клиентам. Первый клиент присылает данные, мы коммитим. Второй клиент присылает данные, мы коммитим и перезатираем данные первого. Т.е. оптимистичную блокировку нужно делать только руками?

Пессимистичная - я так понимаю это select for update?
Аноним 30/05/23 Втр 16:08:22 #28 №2716518 
Уважаемые, нужен ваш совет.
Есть N таблиц в кликхаусе, которые периодически транкейтятся и заполняются заново (пару раз в сутки, точный период будет настраиваться чужим человеком во внешней проге).
Нужно сделать денормализованную таблицу из этих N, чтобы быстренько из неё селектить и, чтобы денормализованная таблица сбрасывала данные и заполнялась снова, когда это делают остальные N таблиц.
Как тут можно поступить? Триггиров в кликхаусе нет, а всякие штуки типа materializedView не обращают внимание на транкейты
Аноним 30/05/23 Втр 18:06:51 #29 №2716619 
>>2716518
>Есть N таблиц
>транкейтятся и заполняются заново пару раз в сутки
А нахуа тогда кликхаус?
Аноним 30/05/23 Втр 18:34:17 #30 №2716651 
>>2716619
Если бы я знал, но маэмо то що маэмо
Аноним 31/05/23 Срд 06:20:04 #31 №2717048 
>>2716651
Похоже тот случай когда технологию ради названия в проект пихают. Прост юзкейсы кликхауса противоречат тому что ты описал.
1) Кликхаус не заточен под быструю встаку большого объема данных. У него есть буфер специальный, в котором данные хранятся пока сам кликхаус должен пропердется мелкими порциями.
2) Кликхаус заточен под накопление данных и аналитические запросы к ебическому количеству записей. Причем поскольку это колоночная БД, денормализация не приветствуется так как можно оптимизировать запросы выбирая только те колонки которые нужны.
3) Кликхаус до некоторого времени не умел в DELETE.
Аноним 31/05/23 Срд 07:15:21 #32 №2717058 
>>2717048
>денормализация не приветствуется
нормализация не приветствуется

слоуфикс
Аноним 31/05/23 Срд 07:52:12 #33 №2717063 
>>2717048
Меня в данный момент не интересует БЫСТРАЯ вставка чего-то куда-то, я хочу хоть какую-то АВТОМАТИЧЕСКУЮ вставку в денормализованную таблицу и очистку её, при очистке "таблиц-источников"
Как MaterializedView, только чтобы очищалась еще сама
Аноним 02/06/23 Птн 15:55:33 #34 №2719626 
Наверное вопрос не совсем по теме, но интересно.
Уже не первый замечаю, что стандартные пакеты из ряда дистрибутивов (будь-то арч или убунту) делают владельцем директории /var/lib/postgresql рута:
drwxr-xr-x 3 root root 18 Jun 2 15:18 postgres
При это /var/lib/postgres/data/ уже имеет нормальные права.
drwx------ 19 postgres postgres 4096 Jun 2 15:40 data
Есть идеи зачем? Вот я сходу ловлю проблемы, потому что как обычно при инициализации БД приходится работать:
sudo su postgres
initdb -k -D ./data
И допустим я правлю конфиг или хба через вим, а он мне сразу фигу показывает, т.к. не может своп файл создать в домашней директории постгресаправа на запись в которой у самого постгреса нет.
Права на весить не проблема, но я не понимаю, почему бы сразу не дать права на /var/lib/postgresql ?
Аноним 02/06/23 Птн 16:19:11 #35 №2719645 
>>2719626
Мастер процесс запускают от рута, а воркеры от постгрес?
Аноним 02/06/23 Птн 16:27:40 #36 №2719661 
>>2719645
Да нет, все процессы от юзера постгрес, ни одного от рута. Это же вроде как за стандарт взято, чтобы все процессы от постгреса запускались, а не от рута. Иначе бы в демонах не прописывался запуск от юзера постгрес.
Мой вопрос довольно простой, почему /var/lib/postgresql ,как правило, принадлежит руту и при этом является домашней директорией постгреса?
/home/username/ же не принадлежит руту, а принадлежит username
Аноним 04/06/23 Вск 14:51:26 #37 №2721226 
делаю select for update, строка блокируется для изменения и для других select for update.

А обычный select без update будет блокироваться? В мануале прямо не написано, значит будет читать?
Аноним 04/06/23 Вск 15:00:35 #38 №2721236 
>>2721226
select for update блокирует для чтения и изменения
select for share для изненения
что делает просто select зависит от субд
Аноним 04/06/23 Вск 15:06:57 #39 №2721240 
PUfETbNlOm.png
>>2721236
> блокирует для чтения
написано что блокирует для изменения. Про простые селекты ничего не написано. Значит эту заблокированную строку можно читать селектом?
Аноним 04/06/23 Вск 15:21:25 #40 №2721250 
>>2721240
In the context of database transactions, "SELECT FOR SHARE" and "SELECT FOR UPDATE" are clauses used in SQL statements to control concurrent access to data. These clauses are typically used in conjunction with the "SELECT" statement in database systems that support transaction isolation levels.

SELECT FOR SHARE:
When you use the "SELECT FOR SHARE" clause, it indicates that the selected rows are to be locked in a shared mode. This mode allows other transactions to read the selected rows but prevents them from making any modifications to those rows until the lock is released. Multiple transactions can acquire a shared lock on the same rows simultaneously, enabling concurrent reading operations.

SELECT FOR UPDATE:
On the other hand, when you use the "SELECT FOR UPDATE" clause, it indicates an exclusive lock on the selected rows. This mode not only prevents other transactions from modifying the selected rows but also prevents them from reading those rows until the lock is released. The intention is to ensure that the transaction that acquired the lock has exclusive access to modify the data.

мимо чатгпт
Аноним 05/06/23 Пнд 07:59:01 #41 №2721732 
>>2721250
оно английскую версию перепечатало. Понятнее не стало
Аноним 07/06/23 Срд 22:20:47 #42 №2725130 
где обсуждение 23 стандарта
Аноним 07/06/23 Срд 22:22:29 #43 №2725135 
>>2725130
Наконец-то не надо писать FROM DUAL.
Аноним 08/06/23 Чтв 02:24:29 #44 №2725344 
Ребята, это пиздец, уже сегодня сдавать курсовую.
У меня возникла проблема с Mongo db compass , выдает такую ошибку connect ECONNREFUSED 127.0.0.1:27017
Я облазил уже просто все, дойдя до служб , mongo там просто не оказалось. Я решил добавить - тщетно, пробовал по-всякому, нихуя не получается. У меня, откровенно говоря, уже горит с этой ситуации и я чувствую себя дауном (мб так и есть). Поэтому, прошу у вас помощи, завтра утром надо доделать курсовую без вариантов. Буду безумно благодарен, я уже не знаю к кому обратиться
Аноним 08/06/23 Чтв 02:24:58 #45 №2725345 
Ребята, это пиздец, уже сегодня сдавать курсовую.
У меня возникла проблема с Mongo db compass , выдает такую ошибку connect ECONNREFUSED 127.0.0.1:27017
Я облазил уже просто все, дойдя до служб , mongo там просто не оказалось. Я решил добавить - тщетно, пробовал по-всякому, нихуя не получается. У меня, откровенно говоря, уже горит с этой ситуации и я чувствую себя дауном (мб так и есть). Поэтому, прошу у вас помощи, завтра утром надо доделать курсовую без вариантов. Буду безумно благодарен, я уже не знаю к кому обратиться
Аноним 08/06/23 Чтв 19:47:18 #46 №2726337 
>>2725344
докер
Аноним 09/06/23 Птн 07:45:33 #47 №2726682 
image.png
image.png
Анон, смотри. На первом скрине админер (бывший пхпмайадмин), на втором - dbeaver. Можно ли во втором как-то сделать вывод строки в столбец, как на первом скрине. Руководитель иногда бывает запрашивает данные и делать скриншоты 3 экранов ради одной строчки - ну такое себе. а так бы был аккуратный столбец. На втором скрине одна из простых таблиц, но бывают и в разы обьемнее. dbeaver в приоритете, потому что у нас несколько типов баз данных, в том числе такие, которые не поддерживаются админером.
Аноним 09/06/23 Птн 08:26:58 #48 №2726713 
Iitb0mJlGF.png
>>2726682
Аноним 09/06/23 Птн 19:49:42 #49 №2727613 
.png
>>2726682
Выгрузи в эксель и сделай специальную вставку с транспонированием.
Аноним 11/06/23 Вск 11:03:10 #50 №2729149 
>>2726713
Офигенно, то, что надо! А как по быстрому переключить записи не нажимая в grid ? Типа пробелом например итд. Но в целом, то, что надо, спасибо!!
Аноним 11/06/23 Вск 11:06:11 #51 №2729152 
>>2729149
Ой, я довен, увидел, вон же внизу кнопки влево-вправо. Вопрос закрыт.
Аноним 12/06/23 Пнд 09:30:50 #52 №2730067 
Что должен знать джуниор дата инженер?
Аноним 12/06/23 Пнд 12:02:16 #53 №2730147 
>>2730067
Своё место под шконкой
Аноним 19/06/23 Пнд 16:28:36 #54 №2738377 
123.JPG
Можно ли такое преобразовать sql(ем)?
Аноним 19/06/23 Пнд 18:24:23 #55 №2738567 
>>2738377
Да, но заёбно, лучше кодом
Аноним 20/06/23 Втр 10:17:10 #56 №2739085 
шалом, анон
Не получается на sql, я орм обезьяна, нужен совет
еот оракл
В таблице А фк на Б
В таблицу А добавили новый столбец
В столбец надо добавить номер от 0 до n
n - количество строк из А, которые имеют фк на одну и ту же строку в Б

есть кабинет
и его работники: славик, антон, ерохин
Надо дать работникам порядковые номера
Аноним 20/06/23 Втр 10:54:10 #57 №2739108 
>>2701507 (OP)
Надо придумать систему логирования событий в базе Постгрес
Какой-то юзер меняет данные -> следовательно это должно быть отражено в БД: что за юзер и что он менял. Поначалу казалось норм идеей сделать это на триггерах, но в таком случае вместо реального юзера будет записываться юзер БД (а он один, очевидно, приложение коннектится к БД всегда от имени конкретного пользака БД)

Как это осуществить вообще? Как-то на уровне самого приложения питона? Или притащить другую БД, например монгу?
Аноним 20/06/23 Втр 12:13:10 #58 №2739186 
Есть БД Access, в него юзеры пишут циферки через формы.
Есть скрипт выгружающий из бд в эксель.
Есть дашборд Power BI в котором визуализируются эксельки.

Проблема - после показывания дашборда руководству, циферки вносятся шаловливыми ручками и отчетность идет по пизде.

1) Как посчитать разрыв в цифрах до-после отчёта?
2) Логи нельзя внедрить, разграничить доступ тоже. Как не давать довбивать данные?
Аноним 20/06/23 Втр 12:35:00 #59 №2739223 
>>2739108
> (а он один, очевидно, приложение коннектится к БД всегда от имени конкретного пользака БД)

ну сделай чтобы не один.
в Древние Времена на Дельфи это не было проблемой.
Аноним 20/06/23 Втр 12:52:37 #60 №2739258 
>>2739223
>ну сделай чтобы не один
Ты ебобо? У меня около сотни потенциальных пользователей в прилоежнии. Мне сотню юзеров заводить в БД? А если их тысячи или миллионы?
Аноним 20/06/23 Втр 13:13:26 #61 №2739284 
>>2739108
Да, на уровне приложения. Просто отдельный инсерт в таблицу событий.
>>2739223
И где все эти двухзвенки теперь? Потому они и остались в нулевых, что проблем они создавали дохуя.
Аноним 20/06/23 Втр 14:14:43 #62 №2739350 
>>2739108
Взять нормальную БД, которая умеет авторизовывать внешних пользователей, из Active Directory например, то есть MSSQL. Ну или прикручивай костыли к своему красноглазому говну, зато швабода.
Аноним 20/06/23 Втр 14:46:58 #63 №2739383 
>>2739085
решил с помощью ROW_NUMBER() с указанием партишонов
Аноним 20/06/23 Втр 21:34:39 #64 №2739862 
>>2739108
Что мешает написать логику в коде и не дрочить бд?
Аноним 21/06/23 Срд 10:22:40 #65 №2740186 
Привет. Расскажите про датаинженеринг. Востребовано? Какая конкурентность? Что учить, чтобы стать? Моих вводных достаточно? Python, базовые знания SQL, один раз жизни написал макрос для Excel, могу делать схему базы данных в НФ3.
Аноним 22/06/23 Чтв 02:22:39 #66 №2741076 
Реально ли в реббите посылающему (publisher) получить уведомление о том что его сообщение было взять потребителем (consumer) из очереди?
Аноним 22/06/23 Чтв 19:57:36 #67 №2741849 
>>2701507 (OP)
Что по ci/cd или хотя бы ide для разработки на sql? Я потыкался, только какие-то синтакс хайлайтерыи форматтеры для написания одной функции (одну я и так в голове удержу), которые потом, видимо, планируется руками в интерфейс бд копировать?
Аноним 22/06/23 Чтв 20:10:39 #68 №2741857 
>>2741849
Есть PL/SQL Developer. Вообще, такие IDE мало кому нужны, сейчас почти никто не держит бизнес-логику в БД.
Аноним 22/06/23 Чтв 20:11:52 #69 №2741861 
>>2741076
Это тред баз данных, а не брокеров сообщений.
Аноним 22/06/23 Чтв 22:23:56 #70 №2742009 
>>2741861
Спиздани такую хуйню на работе и можешь сразу искать новую
Аноним 22/06/23 Чтв 22:26:35 #71 №2742012 
>>2742009
> на работе
Это должность администратора баз данных, а не девопса.
Аноним 23/06/23 Птн 01:47:26 #72 №2742163 
>>2741857
Есть мнение, что второе из первого вылезает, а не наоборот.
Аноним 23/06/23 Птн 09:46:53 #73 №2742342 
Есть задача. Сохранять, читать целиком, удалять джейсонки. Нагрузка может быть большой, джейсонки от пары килобайт до 10 мегабайт. Джейсонки с критичными данными, терять нельзя.
Какая база под эти задачи подходит? Монга?
Аноним 23/06/23 Птн 16:18:18 #74 №2742784 
Привет.
Есть таблица
[obj_id, label_id] N:N
Как мне найти все obj_id, для которых существуют ВСЕ label_id из некоторого множества?
Аноним 23/06/23 Птн 17:56:24 #75 №2742876 
Пацаны, надо бы в постгре накатить check constraint на поле с датой, чтобы все значения когда день не равен 1 не позволялись к записи. Как мутить?
Аноним 23/06/23 Птн 17:59:17 #76 №2742879 
>>2742342
По жсончикам часто читаем данные или пишем? Обновлять их нужно? Что значит "удалять"?
Аноним 23/06/23 Птн 19:49:34 #77 №2743000 
>>2742342
rocksdb
Аноним 23/06/23 Птн 20:12:47 #78 №2743012 
>>2742342
Любая база подходит.
Аноним 23/06/23 Птн 22:07:53 #79 №2743090 
>>2742879
Они нужны временно, их заберут через ручку и их можно удалить.
Аноним 24/06/23 Суб 10:17:58 #80 №2743296 
>>2743090
Удалить критически важные данные? Софт делит?
Аноним 24/06/23 Суб 15:24:28 #81 №2743453 
>>2743296
Они критически важные пока не будут вычитаны.
По сути как в очереди реббита. Сохраняем, один раз читаем и удаляем. Но через бд + рест.
Да, это тупо, криво и костыльно, но такие ограничения.
Хранить большие jsonb в постгресе, как мне сказали это плохая идея. Особенно с учетом что на одно чтение будет одна запись и одно удаление.
Аноним 24/06/23 Суб 18:35:56 #82 №2743570 
>>2743453
Если они вычитываются строго иерархично, по таймстемпам например или по категориям, то просто юзается Кафка, она как раз для этого и придумывалась. Данные не удаляются, просто в определенном файле где они лежали теперь мы знаем что ниже определенного порога это "старые" данные
Аноним 25/06/23 Вск 06:43:56 #83 №2743792 
изображение.png
продублирую сюда
подскажите как open server запустить, вот такую ошибку выдаёт, а после того как закрываю окно программа закрывается и пропадает из панели задач. в антивируснике выключил защиту в реальном времени.
по поводу файла hosts, его раньше получалось показать командой attrib.exe -s -r -h -a C:\Windows\system32\drivers\etc\hosts сейчас даже так не выходит. ещё почему то после начала всех моих манипуляций винда создала аккаунт администратора отдельно от того которым я пользовался всё время.
подскажите что делать я тупой
Аноним 25/06/23 Вск 08:43:44 #84 №2743816 
>>2743792
Что это за хуйня? Не нужно ее запускать
Аноним 25/06/23 Вск 08:45:03 #85 №2743818 
>>2743792
Лол, может у тебя малварь какая-то сидит и захватила хостс.
>>2743816
Васянская зборочка лампа.
Аноним 25/06/23 Вск 09:56:56 #86 №2743863 
>>2743570
Нет, читаем мы по айдишникам.
Аноним 25/06/23 Вск 13:46:19 #87 №2743982 
>>2742784
Решил.
Select distinct(object_id) from ...
Where label_id in ([N])
Group by object_id
Having count(*) >= N
sage[mailto:sage] Аноним 25/06/23 Вск 14:11:35 #88 №2744018 
>>2743792
PHP-тред тебе на что? Зачем оффтоп разводить?
sage[mailto:sage] Аноним 25/06/23 Вск 16:49:13 #89 №2744182 
>>2744018
В пхп треде обсуждать как редактировать hosts файл на винде?
sage[mailto:sage] Аноним 25/06/23 Вск 16:50:23 #90 №2744183 
>>2744182
Как будто в SQL-треде обсуждают.
Аноним 27/06/23 Втр 06:22:19 #91 №2745634 
Помогите пожалуйста разработать комплекс программ создания и обработки базы данных из трех таблиц.

Содержание кейса

1. Создать базу из основной таблицы с оперативными данными и четырех таблиц‑справочников с наименованиями кодов (используются для расшифровки кодов в формах, в представлениях, в запросах и в отчетах).

2. Создать базовый, перекрестные, итоговые, графические представления и запросы (не менее шести). Запросы и представления оформить в виде табличных форм, диаграмм.

3. Сформировать формы для заполнения таблиц и просмотра запросов, представлений с русифицированными кнопками, наименованиями полей (по одной форме для каждой таблицы и представления или запроса и по одной составной форме).

4. Сформировать отчет с детальными строками, с расшифровками кодов и с итогами по двум уровням группировки (указаны в условии), по одному простому отчету для каждой таблицы, представления, запроса .

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

6. Разработать систему программной защиты с регистрацией пользователей и их полномочий, журнала аудита для основной таблицы и защиты параметров настройки от изменений (п. 3.14.3). (Как мне объяснили - это значит, что, когда в БД заходишь, там окошечко пароля должно быть, чтобы её не мог изменить каждый)


Вариант 15. Учет поставок товаров.

Поставки товаров: код поставщика, код товара, количество, цена, единица измерения, дата поставки.

Справочники: поставщики (код, наименования, адрес, телефон, код города), товары (код, наименование), города (код, наименование, код области), области (код и наименование).

Отчет по городам и поставщикам с итоговой стоимостью поставленных товаров по городам и поставщикам.
Оплату гарантирую
Аноним 27/06/23 Втр 10:29:44 #92 №2745771 
Почему обычно на проде не ставят БД (постгрес например) через докер-контейнер а накатывают ее как отдельный сервис? Много раз слышал, но не врубаюсь почему
Аноним 27/06/23 Втр 11:12:00 #93 №2745835 
>>2745771
А смысл? СУБД обычно одна и работает постоянно, её не надо запускать десятками и уметь перезапускать налету в зависимости от нагрузок, как обычные приложения.
Аноним 27/06/23 Втр 13:50:18 #94 №2745966 
image.png
>>2739108
>Какой-то юзер меняет данные
>приложение коннектится к БД всегда от имени конкретного пользака БД, то есть БД ВООБЩЕ НЕ ЕБЁТ КТО ТАМ МЕНЯЕТ ДАННЫЕ
>осуществить логирование на уровне самого приложения питона или накатить авторизацию КАЖДОГО пользователя напрямую в БД, ПОЛНОСТЬЮ СДУБЛИРОВАВ ЛОГИКУ ПРАВ ДОСТУПА ИЗ ПРИЛОЖЕНИЯ ВНУТРИ БД БЛЯДЬ чтобы БД могла сама логировать на уровне БД?

Nigga, please!
Ты сам себе ответил считай, хули ты в себя не веришь, всё правильно подумал про уровень приложения.
Аноним 27/06/23 Втр 14:06:36 #95 №2745983 
Придумал гениальную защиту от sql-инъекций:

Мы просто при интерполяции строк проверяем данные по регулярке:
[A-Za-z\_0-9]+

Если не проходят проверку то сразу дроп. В принципе ситуация когда в строку вставляют что-то кроме этих символов очень подозрительна и в любом случае должна пресекаться. При таком подходе вероятность инъекций - 0%
Аноним 27/06/23 Втр 14:14:06 #96 №2745989 
>>2745983
Нахуя снова и снова решать проблему, которую решили давным-давно? Параметризованные запросы придумали лет 30 назад.
Аноним 27/06/23 Втр 14:24:41 #97 №2745998 
>>2741857
>почти никто не держит бизнес-логику в БД
А как же бизнес-отчётики?
Или уже все пересели на носкл и в приложении конструируют свои ебовейшие запросы?
Аноним 27/06/23 Втр 14:54:11 #98 №2746026 
>>2745989
Как будешь параметризовать следующий запрос:

`SELECT DISTINCT {$attr_name} FROM reestr WHERE creation_date=to_date(:dto_date_str, 'YYYY-MM-DD') and {$attr_name} IS NOT NULL`

Или вот этот:

`CREATE DATABASE {$test_name} TEMPLATE {$default_db}`
Аноним 27/06/23 Втр 14:57:56 #99 №2746035 
Стикер
>>2745998
Аноним 27/06/23 Втр 15:29:32 #100 №2746075 
>>2745771
>накатывают ее как отдельный сервис?
Потому что для "накатывания отдельного сервиса" достаточно одной команды apt install postgres? Плюс автоматические обновления и все-все-все. Контейнеры обычно применяются для запуска непосредственно разрабатываемого приложения, причем обычно это приложение разрабатывается на всякой говнине, типа питона, в которой нормально без контейнера нельзя управлять зависимостями, не поломав систему.
Конечно, бывают и случаи, когда админят бд зумеры, умеющие только докер, тогда и БД будет в контейнере.
Аноним 27/06/23 Втр 15:36:42 #101 №2746085 
noname.gif
Я наверное долбоеб раз такое спрашиваю, но все же. Как связать штуки из одной таблицы и цены из другой на основе таблицы категорий?

В Power BI делал объединение слева, нихуа не отображает значения.
Аноним 27/06/23 Втр 15:39:06 #102 №2746088 
>>2746026
Пиздос. Там, где с клиента приходят названия столбцов и баз данных, бессмысленно что-то параметризовывать. Остаётся лишь выдать права админа всем пользователям и прямой коннект к БД, хуже уже не будет.
Аноним 27/06/23 Втр 15:53:25 #103 №2746107 
изображение.png
>>2745771
Реляционные БД - это как правило технологии древних, ими занимаются олдовые свитера, заставшие мейнфреймы. Они эти ваши докеры искренне не любят без всякой объективной причины, просто из классовой вражды.
Аноним 27/06/23 Втр 16:08:19 #104 №2746115 
>>2746075
redis, rabbit, монгу постоянно через контейнер гоняют
Аноним 27/06/23 Втр 16:18:15 #105 №2746127 
>>2746107
Получается, петушиная каста?
Аноним 27/06/23 Втр 16:37:22 #106 №2746170 
>>2746115
Относительно постгреса - это все технологии пориджей, поэтому так
Аноним 27/06/23 Втр 17:03:26 #107 №2746205 
>>2746115
На дев контуре у нас постгря - одна субд на десяток проектов, там несколько сотен баз.
А редисы, монги и еще более редкие штуки они обычно на одном-двух проектах есть и их себе разработчкики сами в контейнере понимают на той же машине где крутится контейнер сервисов проекта.
Аноним 27/06/23 Втр 17:30:34 #108 №2746240 
>>2746205
>одна субд на десяток проектов, там несколько сотен баз
Ну вот это не то чтобы хорошо. Это прикол из 80х, когда время ЦПУ стоило бабок, потому на кучу проектов выкатывали одну точку отказа с зашкаливающей инженерной ответственностью.
Аноним 27/06/23 Втр 17:56:48 #109 №2746286 
>>2746240
Ну и еще базы разработчики на этой общей постгре не могут сами создать, через опсов по заявке. А в носикулях и брокерах опсы разбираться не хотят, поэтому их поднимают разработчики.
Там какое-то кряхтение про безопасность и всякое такое, а сколько цп и памяти экономится на постгре без контейнера - хз.
Может поведение какое-то особое в контейнере. На проде ведь все будет в отдельных субд на отдельных машинах стоять без всяких контейнеров. Там экономить цп имеет смысл.
Аноним 27/06/23 Втр 18:17:53 #110 №2746310 
image.png
image.png
>>2746240
++
Слева типичный юзер nosql, справа - юзер рсубд
Аноним 27/06/23 Втр 18:29:47 #111 №2746326 
s7olw2f01ra81.jpg
>>2746107
Аноним 28/06/23 Срд 11:39:10 #112 №2746895 
Есть постгрес, есть 100+ схем, в каждой есть нужная таблична с нужным полем. Как нормально одним селектом получить данные из каждой схемы, если названия и кол-ва схем могут меняться?
Т.е что-то на подобии SELECT foo FROM ALL_SCHEMA. Понимаю что такого нет, а то найти не могу, но надеюсь посыл понятен. Просто писать 100 FROM schema_1 ... FROM schema_2 не выйдет, да и просто тупо как-то выглядит
Аноним 28/06/23 Срд 11:41:22 #113 №2746899 
>>2746895
Написать код на питоне с for-loop и async, очевидно же
Аноним 28/06/23 Срд 11:45:29 #114 №2746903 
>>2746899
У меня жаба с multitenancy, где у каждого тенанта своя схема. Пока у меня доходят руки только до цикла с тучей селектов, потому подумал что хуета и надо искать ответ внутри самой бд
Аноним 28/06/23 Срд 13:13:18 #115 №2747051 
Гайз
Не кидайтесь камнями сразу.
Я ОРМ макака и вместо джойнов у меня они делаются через жопу QxOrm делаю пару селектов для выбора нужных мне айдишников, затем вставляют условие where id in(...) and id in(...)
Вопрос - когда я обосрусь по производительности или базе похуй?
Аноним 28/06/23 Срд 15:23:35 #116 №2747278 
>>2747051
>in(...)
Внутри массив циферок или селект это важно?
И какая БД вообще?
Должно быть похуй, поскольку ты линейно обсираешься с самого начала
Разве что расставить твои всратые in в порядке возрастания кол-ва возможных значений внутри, но это не точно.

другая_ORM_макака
Аноним 28/06/23 Срд 15:30:11 #117 №2747285 
16860418954250.mp4
>>2747051
>where id in(...) and id in(...)
where exists (select 1 from (твой селект) where твой_селект_id = id)

или как-то так
Аноним 28/06/23 Срд 16:32:34 #118 №2747360 
>>2747278
Внутри в разных запросах по разному, есть где массив цифр, есть где селект.
Бд постгрес, но скорее всего надо будет заставлять работать и на склайте.
Как сделать чтоб не обсираться?
Задача фильтрануть айдишники по куче параметров из других таблиц.
>>2747285
Так быстрее будет?
Аноним 28/06/23 Срд 18:42:58 #119 №2747531 
>>2747360
>Внутри в разных запросах по разному, есть где массив цифр, есть где селект.
>Бд постгрес, но скорее всего надо будет заставлять работать и на склайте.
>Плюсы блядь

Ебал в рот спасать ваш комок костылей да и скиллов не хватит, но может ты попытаешься как-то обернуть свою поисковую парашу в WITH перед основным запросом, чтобы оно хотя бы общую таблицу не дрочило столько времени, а дрочило один раз по итогу всех твоих левых селектов, последовательно перетёртых друг об друга?
Аноним 28/06/23 Срд 19:10:23 #120 №2747575 
>>2747531
Бля, подумаю... Но вообще вроде я дрочу каждую таблицу только раз, а далее в in(...) Вставляю дохуилион айдишников.
Аноним 28/06/23 Срд 20:02:31 #121 №2747643 
Screenshot2023-06-28-20-11-16-09a27b88515698e5a58d06d430da63049d.jpg
Screenshot2023-06-28-20-11-35-83a27b88515698e5a58d06d430da63049d.jpg
Screenshot2023-06-28-20-12-07-88a27b88515698e5a58d06d430da63049d.jpg
Screenshot2023-06-28-20-12-28-78a27b88515698e5a58d06d430da63049d.jpg
Братушки двачеры, помогите остолопу решить тестовое для собеса, умоляю
sage[mailto:sage] Аноним 28/06/23 Срд 20:09:29 #122 №2747646 
>>2747643
Зарплату тоже за тебя получать?
Аноним 02/07/23 Вск 06:32:10 #123 №2750784 
>>2747643
Попроси чат гопоту. В бинге из под эджа с впном бесплатно работает из рф.
Аноним 02/07/23 Вск 12:00:03 #124 №2750903 
>>2747643
> оператор выбора
Хуя канцелярит
Аноним 02/07/23 Вск 14:54:20 #125 №2750991 
image.png
>>2747643
Это на какую роль такие задачи и какую зарплату? Решил все
Аноним 02/07/23 Вск 19:42:39 #126 №2751382 
>>2750991
Что за редактор/ide?
Аноним 02/07/23 Вск 19:48:33 #127 №2751396 
>>2751382
dbeaver
Аноним 03/07/23 Пнд 10:56:28 #128 №2751872 
16881424710201.webm
>>2747575
> я дрочу каждую таблицу только раз, а далее в in(...) Вставляю дохуилион айдишников
>Внутри в разных запросах по разному, есть где массив цифр, есть где селект.

Вот там где селекты ты будешь дрочить основную таблицу её id-индексом об результат селекта, а потом об результат другого селекта, а потом об список циферок, и т.д.
НО
т.к. у тебя and между in, ты можешь хотя бы наванговать в каком in будет меньше всего строк результата и поставить его впереди остальных, чтобы он отпилил для дальнейшего скана об другие in(...) минимум строк из основной.
НО
ты не можешь гарантировать, что планировщик не пошлёт твои вангования нахуй и не перевернёт порядок in'ов исходя из своих сообажений, тем более что у тебя прям живые селекты там бывают.
ТАК ЧТО
безопаснее запереть все твои in(...) в WITH, только обязательно WITH MATERIALIZED, ибо обычный WITH только на читаемость влияет и на выполнении может закешить, а может и дёргать свой селект ))0)00)))0))0)))) каждый раз, как будто ты его как обычно прямо в запросе написал.

Результаты потом в тред принеси пжл.

P.S. неебу что там с WITH в sqlite, я после Postgres смотрю с пониманием только на Oracle на MSSQL с осторожностью.
Аноним 03/07/23 Пнд 11:07:48 #129 №2751881 
>>2751872
Бля выглядит сложно, пойду думать.
Что именно притащить? У меня щас нет никакой нагрузки и в рамках посгреса скорее всего не будет, у меня это спортивный интерес.
Есть смысл сделать интерсект idшников программно? Мне это сделать не тяжело.
Аноним 03/07/23 Пнд 12:08:32 #130 №2751940 
>>2751881
>сделать интерсект idшников программно
Ты просто кроме памяти БД потратишь ещё память приложения.

>>2751881
>Мне это сделать не тяжело
А вот приложению будет тяжело, если ты будешь тянуть id из базы создавая сущность для подтягивания, дёргая id и запихивая его в лист.

Постгре на С написан, быстрее ты посчитаешь разве что спаяв собственный контроллер с собственной прошивкой и всравно на самописных драйверах потеряешь всё что выиграл с большим запасом


>>2747360
>EXISTS
>Так быстрее будет?

EXISTS заебись, там же будут повторы, инфа сотка. Тебе же по сути нужно только чекнуть условие что id из основной встречается в in(...), данные из подзапроса не нужны.
Только я не уверен что тот анон привёл правильную структуру.
Аноним 03/07/23 Пнд 17:24:42 #131 №2752313 
>>2751940
Короче я заебался и избавился от векторов in(), заменив их на in select. База же закеширует если я один и тот же запрос делаю?
Как exists прикрутить пока не придумал придумал, но дохуя переписывать. В целом действительно в логике косяк, хотя бы понял где, но на сегодня я заебался. в целом полезу сюда теперь когда мне не будет лень явно будет затык на этом месте, а его скорее всего никогда и не будет.
Спасибо за помощь всем.
ах да, ради чего это все: ща в таблице 2500 записей, при запросе из узкого пула айдишников время выполнения увеличилось, при запросе из широкого уменьшилось.
Аноним 04/07/23 Втр 09:12:40 #132 №2752939 
>>2752313
>закеширует если я один и тот же запрос делаю
Если оно в кеш влезет конечно.

>при запросе из узкого пула айдишников время выполнения увеличилось, при запросе из широкого уменьшилось.
Прелести планировщика пг, иногда он плохо планирует.
Аноним 06/07/23 Чтв 19:22:30 #133 №2756552 
>>2701507 (OP)
Вопрос от новичка, не пинайте. Как сильно постгре без дополнительных действий со стороны разработчика (то есть без каких-то оптимизаций и переписываний) зависит от производительности на ядро и многопоточной производительности? Что, условно, лучше, иметь 4 ядра Xeon Gold 6240 R или восемь-шестнадцать ядер старенького Xeon 2678 v3?

Да, я могу запустить pgbench и увидеть там рост от многопоточности, а в жизни эта многопоточность как, используется вообще самой СУБД, например когда пользователь выполняет запрос с подзапросом, или когда пользователя одновременно два?

Особенно интересна зависимость от многопоточности в задачах посложнее TPC-B, где в одном запросе могут быть подзапросы, нечеткие поиски с LIKE, агрегатные функции...? Есть кстати готовые бенчмарки, которые может запустить любой нуб, на подобные извращения?
Аноним 07/07/23 Птн 10:11:26 #134 №2757120 
вопрос по улучшению скорости добавления записи mySQL. Есть таблица в ней сейчас ~150к записей, постоянно добавляются новые. Есть текстовое поле VARCHAR с длиной ~35 символов. Проблема в том что при добавлении ищу есть ли такая запись по этому полю
SELECT link FROM {tablename} WHERE link = %s и на это уходит 1 секунда. Столбец в таблице для поиска не уникальный. Есть ли способ увеличить выполнение запроса? Или вообще сделать его уникальными и тупо добавлять?
Аноним 07/07/23 Птн 22:58:52 #135 №2758145 
>>2757120
Добавить индекс на это поле, ну или сделай уникальный индекс, тогда вставка с таким же значением отъебнёт и все
Аноним 07/07/23 Птн 23:54:19 #136 №2758188 
image.png
Коллеги с релевантным опытом, какие мнения насчёт пикрила?
Аноним 16/07/23 Вск 10:18:33 #137 №2768303 
selectOrUpdate

делать через int count = update ...
if (count == 0) {
insert into
}

или
boolean isExist = select true from ...
if (isExist) {
update ...
} else {
insert into ..
}

?
Аноним 16/07/23 Вск 10:25:19 #138 №2768308 
>>2768303
insertOrUpdate

fix
Аноним 16/07/23 Вск 18:22:43 #139 №2768877 
>>2768303
UPSERT.
Аноним 18/07/23 Втр 18:31:44 #140 №2771878 
Почему при инсерте сначала перечисляются столбцы, а потом значения?
Почему не сразу col1='aa', col2='bbb', col3='ccc'.....
Аноним 18/07/23 Втр 18:53:58 #141 №2771924 
>>2771878
Так исторически сложилось.
Аноним 18/07/23 Втр 20:10:58 #142 №2772017 
kKeJtmIFga.png
чот не могу всосать.
Предположим есть два select for update. В первой транзации эта строка удаляется. Когда блокировка снимется, что увидит вторая транзакция?

BEGIN
select where id = 1 for update
delete where id = 1
COMMIT
и параллельно вторая транзация ждёт
select where id = 1 for update

Первая транзация коммитится, строка удаляется, блокировка снимается, вторая транзация выполнится? Ведь строки уже не существует
Аноним 18/07/23 Втр 21:01:40 #143 №2772075 
>>2772017
Если первая транзакция заблокирует запись раньше, селект во второй транзакции зависнет, пока не завершится первая. Ну а дальше селект во второй транзакциио либо ничего не вернёт (если первая транзакция закоммитилась), либо заблокирует запись (если первая откатилась). Пустой результат селекта корректен и не вызовет ошибок, т.к. SQL работает с наборами строк, отобранными по условию, а не с конкретными записями.
Если вторая транзакция заблокирует запись раньше, селект в первой зависнет, затем удалится запись, когда завершится вторая транзакция.
Аноним 18/07/23 Втр 23:25:50 #144 №2772296 
redis, пишу в конфиге

user default off -@all nopass ~
user erdogan on +@all nopass ~


, подразумевая, что всем юзерам, кроме одного, будет отказано в доступе. Однако доступ закрывается для всех. Что там нужно написать, кто-нибудь в курсе?
Аноним 18/07/23 Втр 23:59:15 #145 №2772330 
А, короче проблема решилась установкой пароля на пользователя. То есть логин можно сделать от любого юзера в системе. Ладно.

>>2772296
Аноним 19/07/23 Срд 18:12:26 #146 №2773575 
>>2772075
т.е. селект выполняется, видит что стоит блокировка, ждёт. Когда блокировка снимается, селект выполняется второй раз?
Аноним 19/07/23 Срд 19:20:26 #147 №2773719 
>>2773575
Это детали реализации. Скорее всего, нет, СУБД увидит запрос, найдёт у себя блокировку на такое же условие и просто не будет выполнять выборку, пока другая транзакция не завершится.
Аноним 23/07/23 Вск 10:09:17 #148 №2778300 
>>2758188
мы юзаем, но мне кажется в нашем кейсе науй не нужно
Аноним 25/07/23 Втр 05:53:39 #149 №2780392 
Смарите, есть куча файлов за много лет со структурой вида
all 100
_hui1 50
__hui11 25
__hui12 25
_hui2 50
__hui21 25
__hui22 25
Т.е. иерархичная структура и циферки это составляющие высшего уровня.
Надо провалидировать, что это так, т.е. из самой глубины сверять суммы с родителями.
Потом надо высрать в эксель сумму за все годы каждого элемента с той же иерархией.

Я пока придумал хранить в реляционке плоско и отдельно иерархию и уже кодом ебаться, но это как-то тупо. Может есть более подходящие решения?
Аноним 25/07/23 Втр 07:29:22 #150 №2780419 
>>2780392
Звучит как кейс для Nosql
Аноним 26/07/23 Срд 01:43:55 #151 №2781654 
>>2709683
600-700к/4года

Ну как с курсом повезет
Аноним 26/07/23 Срд 13:18:20 #152 №2782123 
Какую вышку получать по Базе Данных для корочки? Заочно вуз или курсы? На чьи лучше пойти? Всерьёз задумался профессию сменить, ибо инженерка по ОВИК оказалась- не моё.
Аноним 27/07/23 Чтв 12:06:22 #153 №2783617 
Нюфаня в треде. Нужно написать приложуху - обертку над sql базой. Сама база есть. Думаю как правильно начать. чтобы потом не переделывать. Хуярю в WindowsForms.

Правильно ли будет создать отдельный класс, например SQLMyClass который будет отвечать за всю работу с базой - подключение, получение данных, добавление данный и прочее.

А остальные формы, будут общаться только с этим классом. По идее проблем быть не должно?

Запускаем приложуху, создается объект класса SQLMyClass, получаем список имеющихся баз по фильтру имени. Кликаем на нужную базу и она у нас база по умолчанию, пока пользователь не выберет другую. Если баз нет - создаем базу и пользуем.

И потом, все время работаем с объектом класса SQLMyClass - соединяемся, получаем данные, меняем что нужно и тд.

Выглядит вроде логично, но могут быть подводные? Просто раньше у меня был проект, где был адский пиздец и куча запросов из разных форм и вообще нихуя не понятно что и где.

П.С. Стоит ли пробовать использовать LINQ или ну его нахуй и проще руками все писать, без изъебонов?
Аноним 27/07/23 Чтв 22:08:34 #154 №2784705 
>>2780392
САМОСБОР
САМОJOIN with recursive
Аноним 27/07/23 Чтв 22:10:50 #155 №2784706 
>>2709683
>>2710955
>>2781654
Суки блядские закладчики-вебкамщики, СТЭК кто указывать будет?
Аноним 27/07/23 Чтв 22:12:35 #156 №2784708 
>>2783617
>Нужно написать приложуху - обертку над sql базой
Гугли CRUD и пиши на чём хочешь.
Аноним 27/07/23 Чтв 22:25:01 #157 №2784722 
>>2783617
Смотря что может понадобиться переделывать, вдруг тебе хватит один раз накидать контролы мышкой со всякими Form12 и Buttton43 с SQL-запросами в OnClick и потом 15 лет пользоваться и не дорабатывать.
Если делать по науке, читай про MVVM и MVP. Узнаешь основные принципы, как отделить пользовательский интерфейс от логики и от работы с БД. Хотя там не всё применимо к винформам.
В добавок к LINQ можешь взять Entity Framework.
Аноним 28/07/23 Птн 20:30:19 #158 №2786117 
>>2784722
>>2784708
Спасибо!
Аноним 28/07/23 Птн 21:21:10 #159 №2786233 
Я уметь писать сложный скуль запрос? Куда катиться дальшэ?
Аноним 28/07/23 Птн 21:28:39 #160 №2786250 
>>2786233
PL/SQL
Аноним 29/07/23 Суб 01:29:32 #161 №2786538 
>>2786233
А админить скуль сервер уметь?
Аноним 29/07/23 Суб 08:27:31 #162 №2786654 
>>2786538
Если под админить скуль ты подразумеваешь умение подключиться к бд через консоль, то да, уметь
Аноним 29/07/23 Суб 13:07:13 #163 №2786800 
>>2786654
Нет, я подразумеваю проектировать и масштабировать, настраивать всякие заумные DWH и ETL залупы, там уже не только sql требуется.
Аноним 29/07/23 Суб 18:37:14 #164 №2787167 
>>2784706
postgresql 9.6 + немного php
Аноним 29/07/23 Суб 18:37:59 #165 №2787169 
>>2781654
еба, неплох. че у тебя по стеку, радной?
Аноним 29/07/23 Суб 19:49:01 #166 №2787232 
>>2787169
Bitrix, WordPress, MySQL
Аноним 29/07/23 Суб 20:05:28 #167 №2787258 
>>2780392
для валидации просто сравниваешь сумму родителя и сумму дочерних

для екселя через рекурсию собираешь
Аноним 29/07/23 Суб 20:33:45 #168 №2787305 
>>2787232
Надо быть тоньше, перетолстил с битриксом. Не, я еще могу поверить что Дон Боар, у которого микросервисы на вордресе исторически сложились, будет платить $7k. Но битрикс кабаны никогда не будут платить стока, да даже в 5 раз меньше.
Аноним 30/07/23 Вск 17:50:48 #169 №2788088 
Нюфаг итт, пытаюсь разобраться в PG. Объясните, как в security_invoker view открыть/закрыть доступ к столбцу? Ну например таблица users со столбцами user_id, name, avatar, email. Она закрыта на публичное чтение через rls по user_id (типа чтобы по дефолту данные только сам юзер мог прочитать), теперь хочу дать всем зареганым смотреть avatar и name в профиле юзера на сайте. Это же через view делается с опцией security_invoker, или я не туда полез? Есть где-то примеры такого?
Аноним 30/07/23 Вск 19:19:44 #170 №2788240 
>>2710986
Если ты майор, то вот этого не должно тебе на доказательную базу хватать. А если анон* (с мозгами), то хватит чтобы найти.

Попробуй поиск через гугл, там есть ссылки на соцсеть и двач. Чел в соцсети был рад дать сурс на пиксиве.

Шевели булками, если хочешь подрочить!
Аноним 31/07/23 Пнд 08:33:02 #171 №2788695 
>>2788088
acl
Аноним 31/07/23 Пнд 10:28:41 #172 №2788761 
Есть некий набор Х из значений в количестве около 100 штук. И есть postgres таблица material_data в которой около миллиона записей, надо проверить, какие из значений набора X есть в определенной колонке таблицы material_data а какие - нет. Как это сделать?

Я могу конечно отсылать по запросу на каждое значение из X и смотреть, есть оно в табличке или нет (в ней есть индекс по нужной колонке), но делать так 100 раз?.. Причем даже асинхронное - такое себе. Какие есть еще варианты? Как видите, выгрузить все значения из таблицы material_data в память и потом с ними играться - невариант, их слишком много
Аноним 31/07/23 Пнд 14:10:37 #173 №2789054 
>>2788761
select max(opredelyonnaya_kolonka) from material_data where opredelyonnaya_kolonka in (список значений через запятую) group by opredelyonnaya_kolonka;
Или создать таблицу из этих 100 значений и делать inner join.
Аноним 31/07/23 Пнд 14:42:12 #174 №2789118 
>>2788761
SELECT UNNEST(array[%x_data])
INTERSECT (SELECT name FROM material_data)
Аноним 31/07/23 Пнд 16:21:03 #175 №2789313 
>>2787232
А где примерно работаешь? Что за компания с такими зарплатами на битриксе?
Аноним 31/07/23 Пнд 18:07:15 #176 №2789484 
>>2789313
>такими зарплатами
Он называет зарплату в долларах, что при нынешнем говнокурсе выглядет ниче так если живешь в Рашке или ЮВА
Если же живешь в Эмиратах или тем более Европке или США - это довольно хуевый уровень
Аноним 31/07/23 Пнд 18:15:50 #177 №2789500 
Пацаны, а как "развернуть" record в обычную запись чтобы из него сделать ARRAY в постгресе?
Ну вот такая хуйня получается:

ARRAY[('100', '200', '300')]

Очевидно что оно падает потому что в array надо передать сразу значения через запятую, но блять sqlalchemy передает множественные значения в query именно так. Как это обойти? Все что пока что нашел это конвертировать мой массив в строку, вставить в query строку и потом сделать string_to_array (!) - хуйня конечно но работает вроде
Аноним 01/08/23 Втр 15:25:12 #178 №2790295 
А вот я чет задумался: если мы пишем
SELECT <звездочка> FROM mytable

Без указания сортировки то по какому принципу (в каком порядке) нам выведутся данные? Что там за "дефолтная сортировка"? Они совсем рандомно не выводятся, на первый взгляд они сортируются по id (pk) но при более тщательном рассмотрении это не так. Как это работает в тех же Postgres / Oracle ?
Аноним 01/08/23 Втр 18:11:41 #179 №2790584 
>>2790295
implementation defined
Чисто логически - в том порядке, в котором лежат в памяти
Аноним 03/08/23 Чтв 22:29:23 #180 №2793228 
Сап. Есть какие годные роадмапы для sql?
Аноним 04/08/23 Птн 20:25:05 #181 №2794413 
>>2793228
sql-ex около 100 задач
Пару пет проектов на postgresql или oracle или ms sql
Собес
Аноним 05/08/23 Суб 12:36:28 #182 №2794826 
Может, оно неправильно, но испрользую BEGIN EXCLUSIVE на базе SQLite, чтобы запретить запуск еще одного экземпляра приложения. Но нужно периодически между своими запросами вклинивать "COMMIT; BEGIN EXCLUSIVE". Может ли в промежутке между COMMIT и BEGIN другой поток или приложение успеть залочить базу? В принципе, если я сделаю один общий BEGIN EXCLUSIVE при запуске приложения и COMMIT при завершении, а в середине буду все делать через SAVEPOINT, то это то же самое получится? При отрубе питания ничего не пропадет в режиме journal_mode = WAL?
Аноним 05/08/23 Суб 19:32:39 #183 №2795318 
>>2794413
Какие пет-проекты пилить то?
Аноним 05/08/23 Суб 19:48:04 #184 №2795330 
>>2795318
напиши борду на PL/pgSQL

начни с этого https://github.com/pramsey/pgsql-http
Аноним 05/08/23 Суб 19:50:36 #185 №2795334 
>>2795330
фу нет это клиент
во с этого https://postgrest.org/en/stable/
Аноним 05/08/23 Суб 20:07:57 #186 №2795350 
>>2795330
И на какие вакансии мне потом откликаться? DBA?
Аноним 05/08/23 Суб 20:14:54 #187 №2795358 
>>2795350
Зочем? Просто зарабатывай на паскодах
Аноним 05/08/23 Суб 21:16:57 #188 №2795420 
>>2795358
А если серьезно?
Аноним 05/08/23 Суб 21:50:37 #189 №2795440 
>>2795420
почекай тестовые в свободном доступе от озона вайлдбериза от сбера от любой конторки, раньше валялось всегда че нить на просторах. Потом на разраба. Пока будешь пилить читай доку. На постгрис про есть целые лекции в пдф на разраба и дба. ты идешь на разраба.
Аноним 05/08/23 Суб 21:51:51 #190 №2795441 
>>2795420
энивей без sql-ex хотябы в 80 задач лезть дальше тупо смысла нет.
Аноним 06/08/23 Вск 08:01:51 #191 №2795664 
изображение.png
>>2795441
Артем, ты?
Аноним 06/08/23 Вск 17:41:16 #192 №2796216 
>>2795664
не, я его последователь, прошел его путь и стал им по итогу. уже почти годик на постгри прогаю и работаю. так шо он так то дело говорит
Аноним 06/08/23 Вск 17:46:24 #193 №2796227 
>>2796216
Павел? Я сразу про вас подумал!
Аноним 06/08/23 Вск 23:42:21 #194 №2796605 
>>2796227
Кароче хочешь ASSкуэлить, то проходи шарагу а дальше токо сотни hr с собесами. Токо так. Ну или поступай в итмо на большие данные, учись 4 года и быыыть может ты сможешь пробиться на стажировочку куда нибудь за +-0 рублей, а мб и нет и по итогу 4 года вьебешь. Ну вобщем то вот.
Аноним 08/08/23 Втр 04:53:28 #195 №2797828 
>>2738377
Короче стало мне любопытно, как бы это на SQL сделать. Сделал.
>>2738567 Действительно заебно. Однако очень познавательно. Пока делал кучу новых фишек для себя открыл. Современный SQL позволяет тебе делать ТАКОЕ...
https://dbfiddle.uk/2l5odSO7
Аноним 08/08/23 Втр 13:19:47 #196 №2798162 
Вопрос есть дамп базы данных, как мне определить из какого он типа базы (MySQL, MS SQL, ...)?
Если базу открыть то она состоит из текста в начале в виде: {"_index":"prodindex","_type":
Аноним 09/08/23 Срд 01:02:59 #197 №2799138 
>>2797828
Красиво сахарком постгреса оперируешь.
Аноним 09/08/23 Срд 02:17:29 #198 №2799169 
>>2799138
Не не не. Тут очень важный момент, что это сахарок не постгреса, а именно SQL стандарта.
UNNEST WITH ORDINALITY, например, в стандарте 99 года https://ronsavage.github.io/SQL/sql-99.bnf.html#xref-ORDINALITY

Это нужно понимать когда выбираешь mysql в качестве базы. Иронично, но mysql несмотря на sql в названии, формально sql базой не является. Потому что не поддерживает полностью ни один из стандартов sql.
Аноним 09/08/23 Срд 19:26:45 #199 №2800073 
>>2799169
Ну майскл это вообще кринж так то. А кодик харош. Оконочки наше всё. Попробуй как нить написать код который будет искать максимальное значение и почекай скорости на больших данных (на пг)
Аноним 09/08/23 Срд 23:50:39 #200 №2800338 
>>2800073
>Попробуй как нить написать код который будет искать максимальное значение
Максимальное значение в группе? Опиши задачу поконкретней.
Аноним 09/08/23 Срд 23:58:16 #201 №2800342 
>>2800338
ну типо того. есть лог данных и тебе надо вывести ласт (по времени) строку лога определенного id. Тут чисто на скорости посмотреть интересно было. на моем серваке с моими настройками с помощью оконки быстрее всего получилось.
Аноним 10/08/23 Чтв 00:00:24 #202 №2800347 
>>2800342
А насколько "большие" данные?
Аноним 10/08/23 Чтв 00:04:24 #203 №2800352 
>>2800347
это логи, точное число не скажу. полтора лямчика вроде было. есть индекс по времени и на ойди тоже индекс есть
Аноним 10/08/23 Чтв 00:06:23 #204 №2800354 
>>2800352
А по сколько дат на один id?
Аноним 10/08/23 Чтв 00:09:55 #205 №2800357 
>>2800354
я когда тестил брал рандомных 50 ойди. когда я чекал всего по датам то у меня выходило всегда что то около 1к
Аноним 10/08/23 Чтв 06:12:58 #206 №2800425 
>>2800073
Кароче попробовал всякое https://dbfiddle.uk/kGoWz2Do . Гонял на 50кк и все способы примерно одинаковые по скорости 40-50мс. Даже обычный group by. Попробуй по тестируй на живых данных, может что-то окажется получше.

Да и еще важный момент. Если таблица большого размера, то я бы рекомендовал не ебашить по ней целиком запрос в тупую, а сделать процедуру, которая в цикле пачечками по 10к будет обрабатывать и складывать. Тем более что это логи, их никто блокировать не будет.
Аноним 10/08/23 Чтв 08:48:26 #207 №2800467 
>>2800357
Зобыл добавить. Таблица партиционированая. Там 24 партиции
Аноним 10/08/23 Чтв 08:55:18 #208 №2800472 
>>2800467
А нахуя?
Аноним 10/08/23 Чтв 19:44:49 #209 №2801296 
>>2800472
Для каждой таблицы своя таблица таьлица лога

Типо есть таблица родитель называется лог
А дальше идут от нее наследники лог_для_таблицы_1.
Аноним 10/08/23 Чтв 21:02:13 #210 №2801417 
>>2800425
https://dbfiddle.uk/P2m3FstM
Аноним 10/08/23 Чтв 21:03:59 #211 №2801424 
>>2800472
>>2801296
вообще в целом бд говна по ощущениям, так шо странных вещей там хватает
Аноним 10/08/23 Чтв 21:05:53 #212 №2801426 
>>2801417
без индекса разница еще заметнее
Аноним 10/08/23 Чтв 21:16:20 #213 №2801451 
>>2801296
Вопрос нахуя остается открытым.

>>2801417
В некоторых ситуациях группировка бывает оооочень медленной. Полезно уметь обойтись без группировки. Хотя на 500к время выполнения совпадает до микросекунды. Похоже под капотом движок одну и туже оптимизацию делает.

>>2801426
>без индекса разница еще заметнее
Ну это не реальная ситуация. Индекс есть всегда.
Аноним 10/08/23 Чтв 21:56:53 #214 №2801490 
>>2801451
ну вообще говоря про индекс всегда тоже спорно. это расходы на его обслуживание. хотя по факту это мусорка и оттуда нехйу селектить по кд и жить можно и без индексов, чтобы никак не влияла вставка на общую производительность.
мой код становиться мега гавном когда речь идет не про 1 ойди, а я говорил как раз о задаче когда нужно токо для определенного.
плюс мы сча тестим хуйню не на ссд и без норм настроек пг и статистики.
И кста, поч ты так любишь цтешки? этож кал говна, не?
Аноним 10/08/23 Чтв 21:59:54 #215 №2801491 
>>2801451
>>2801424
.
Проект не нравится этот в целом, но пока так. И поменять особо ничего не могу. А надо бы... и партиции это токо верхушка, если бы я тебе расказал чуть больше, ты бы охуел...
Аноним 10/08/23 Чтв 22:57:03 #216 №2801535 
>>2801417
бля под этот пример и этот код говна, видимо я неправильно в целом задачу описал. ну да похуй.
Аноним 10/08/23 Чтв 23:40:27 #217 №2801577 
>>2801490
>ну вообще говоря про индекс всегда тоже спорно. это расходы на его обслуживание
И какие у тебя расходы на его "обслуживание"? Типа вставка на наносекунду ниже? Ваще пахую на такое. Места он конечно занимает, но место щас вообще никто не считает. А если тебе нужно поиск по терабайту делать, так нахуй тебе вообще реляционная база тогда.

>мой код становиться мега гавном когда речь идет не про 1 ойди
Посмотри последний пример отсюда https://explainextended.com/2009/11/26/postgresql-selecting-records-holding-group-wise-maximum/ там как раз несколько полей для группировки используется.

Вообще статья четкая, я вот этой конструкции просто охуел и кончил:
SELECT (SELECT n FROM (VALUES (1, 2)) AS n(n1, n2))
Внутри селект части можно сделать подзапрос, но он должен возвращать только одно значение. А если надо несколько? Да нехуй делать, просто возвращай значение, содержащее весь ряд нахуй. Причем это не строка какая-нибудь, ты по прежнему можешь получать оттуда отдельные значения через (n).n1
Отвал башки просто.
Аноним 11/08/23 Птн 12:59:55 #218 №2801940 
>>2801577
А так это типо select record получился какой то, прик.
Не уверен насчет небольших трат на индекс. В среднем дмлка которая чето добавляет /изменяет ведет за собой каскадных изменений на кесик-три кесика (в моем текущем проекте). Собсно вечь этот каллл надо записать. А че если одновременно будет 5 юзеров, которые чето добовляют. Там итак у базф горм будет работки а мы еще ему накидываем обслуживать мусорку. Ну хз. Если появляется потребность читать логи прям постоянно никто не мешает накатить индекс потом, но я так подозреваю что ечли мы начинаем читать логи по кд, то мы чето анализируем а в логах сам понимаешь больше инфы чем ойди и время, там как минимум состояние строки или что то этакое, а там обычный битри индекс не катит, там скорее всего будет гист. Кароче хзхз. В целом если не планируется дохуя инсертов и апдейтов то мб и можно, а так... Мне чот не кажется это охуенной идеей, не зря брин индекс существует жеж
Аноним 11/08/23 Птн 13:02:53 #219 №2801947 
>>2801940
А ну и накину то шо обычно запись в лог это делается триггером фор ич ров, что как бы изначально хуево а потом в процессе этой хуйни будет какой нить вакуум работать или просто гин индекс будем вставлять в мусорке ну це пизда
Аноним 11/08/23 Птн 17:27:28 #220 №2802364 
>>2801940
>Там итак у базф горм будет работки а мы еще ему накидываем
Мой пойнт что ты на самом деле не знаешь сколько ты накидываешь, просто где-то прочитал что индексы это дораха.

>там скорее всего будет гист
Не будет. Этот индекс работает не так как ты думаешь. Если нужен полнотекстовый поиск по логам, то это 100% эластик, кибана и вся вот эта хуйня. Туда прямо терабайтами можно логи хуярить, без дурацкого партицирования.

>не зря брин индекс существует
Опять же он в этой ситуации не подходит.
Запросы которые я писал были на группировку логов по дате. Если нужен поиск по ТЕКСТУ, то сразу мимо. По json'у еще куда ни шло, но все равно медленно будет. Но просто по тексту это сразу мимо реляционной базы.
Аноним 11/08/23 Птн 19:28:57 #221 №2802588 
>>2802364
>Мой пойнт что ты на самом деле не знаешь сколько ты накидываешь, просто где-то прочитал что индексы это дораха.
Зайди в свой код и не добавляй индекс, посмотри на скорость вставки (спойлер примерно в 10 раз будет быстрее).
Как раз таки я знаю сколько я докидываю и знаю что бд под большим кол-вом одновременных вставок/изменений превращается в тыкву(мертвых строк в пг становиться ПИЗДЕЦ как много, ибо хот update тупо нет в случае если есть индекс и если нет места на странице). Не веришь - твоё дело. Мне доказывать что я чё то не знаю не нужно, по крайней мере без пруфов.
>полнотекстовый поиск
Кто тебе про это сказал? Существуют hstore с ключом=>значением и иногда нужено найти что то по ключу
> По json'у
Кек, какой нахуй json. Кто его юзает блядь в реляционке? Кринг... jsonb - да, но это не json в твоем понимании.
>Опять же он в этой ситуации не подходит
Его вешать на дату и всё. Никаких других стратегий юзанья не вижу в той задаче, о которой мы сейчас толкуем.
> 100% эластик, кибана и вся вот эта хуйня.
Ну и дополню тем что не все проекты могут это юзать. Привет из ФСБ, друг =)
Аноним 11/08/23 Птн 23:39:22 #222 №2802972 
>>2802588
>Зайди в свой код и не добавляй индекс, посмотри на скорость вставки (спойлер примерно в 10 раз будет быстрее).
Я третий раз говорю: конкретно, сколько? Без наверное и похоже. Сколько на самом деле?

>Кто тебе про это сказал? Существуют hstore с ключом=>значением и иногда нужено найти что то по ключу
Это не полнотекстовый поиск.

>jsonb - да
Я про его и говорил. И все равно медленно на больших данных.

>Его вешать на дату и всё.
Неправильно. Нам все равно нужно все даты в таблице проверять и этот индекс тут не поможет. Если бы нам нужно было задать диапазон по дате, то да.

>Ну и дополню тем что не все проекты могут это юзать. Привет из ФСБ, друг =)
И че фсбшиники не умеют пользоваться эластиком? Прям все поголовно?
Аноним 12/08/23 Суб 11:03:47 #223 №2803316 
>>2802972
>Я третий раз говорю: конкретно, сколько? Без наверное и похоже. Сколько на самом деле?
Возьми и чекни. https://dbfiddle.uk/imIvr4UT
Плюс пиздуем в доку и читаем
https://postgrespro.ru/docs/postgresql/9.6/indexes-intro

>После создания индекса система должна поддерживать его в состоянии, соответствующем данным таблицы. С этим связаны неизбежные накладные расходы при изменении данных. Таким образом, индексы, которые используются в запросах редко или вообще никогда, должны быть удалены.

Я говорил про сценарий когда мы а) пишем не "логические" логи, б) очень редко из них читаем в)логи в нашей базе и пишутся самой базой

>Это не полнотекстовый поиск.
Да он и не всегда и нужен, второй раз говорю. Но ты не сможешь создать на хсторку ничего другого вразумительного что тебе позволит быстро ползать по ключам
>Неправильно. Нам все равно нужно все даты в таблице проверять и этот индекс тут не поможет. Если бы нам нужно было задать диапазон по дате, то да.
Чекай линк и план. Плюс я не вчитывался в твой код с тем как ты генерируешь и вставляешь даты, но в реальности не будет такого что у тебя сначала вставился лог июлем, а потом января этого же года. И в этом случае брин будет еще лучше работать ну и настройки сервака нужны. Ну и задача на максимум это тоже диапазон ))))) если есть начало 01.01.23 то если и конец 31.12.23 )) упс конец диапазона и есть макс число! не может быть)
>И че фсбшиники не умеют пользоваться эластиком? Прям все поголовно?
Лни не могут юзать что то , что не имеет сертификации и мандатных меток или аналога. даже постгрис у них свой и нет, это не постгрис про, а вообще свое ядро.
Аноним 12/08/23 Суб 13:50:17 #224 №2803456 
>>2803316
Братишка, ты ведь в памяти все это делаешь. В этом запросе на создание у тебя индекс и таблица по размеру одинаковые и в памяти хранятся целиком, получается в два раза больше ресурсов тратится. В реальности никто по 500к записей не вставляет. Ты ведь всерьез не думаешь что btree индекс тупо в два раза вставку замедляет? Кто бы тогда постгрей пользовался вообще.

>Да он и не всегда и нужен, второй раз говорю.
А хсторка тем более не нужна. По jsonb если че делается стандартный btree индекс по выражению column ->> 'field'. Потому что он гораздо быстрее всего остального.

>Чекай линк и план.
Ну ты конечно хитрый. У тебя же в первом запросе всего одна запись выбирается. Сделай обычный GROUP BY id LIMIT 10 и скорость будет такая же.
А дело в том что BRIN индекс нужен чтобы ПРОПУСКАТЬ строки. Типа ты знаешь что начальная дата периода на диске вон там, а поскольку данные последовательные, то заданный период может быть только после строки с начальной датой. И ты пропускаешь все страницы и строки до строки с начальной датой. За счет этого прирост производительности и идет.
А в нашем запросе надо максимальную дату определить для КАЖДОГО id, а для этого нужно ВСЕ даты прочитать. Нечего скипать. И индекс нам из-за этого мало помогает, нам тупо надо прочитать каждую строку в таблице.

А вот в запросе с рекурсией, хотя он и получился медленнее всех, мы именно что скипаем строки за счет повторной сортировки в рекурсивной части. А медленный он потому что мы буквально по одной строчке прибавляем 25к раз. Если это будет десять раз. Или если надо будет выбрать по большему количеству условий или идентификаторов будет не 1 к 20 датам, а 1 к 10к, то прирост будет очень сильный.

Запрос с лефт джойном кстати совсем плохой. Потому что сначала в памяти происходит джойн, а потом условие. Убери лимит и охуей: Rows Removed by Join Filter: 2 446 129. Это при размере таблицы 500к. А если там 50кк будет? Охуенный способ нагенерить неколько гигов мусора.

>Лни не могут юзать что то , что не имеет сертификации и мандатных меток или аналога. даже постгрис у них свой и нет, это не постгрис про, а вообще свое ядро.
Ну а кто им мешает сертифицировать эластик кроме их собственной лени? Ну или сделай виртуалку на "сертифицированном" линухе, закрой на ней доступы по своим ебанутым фсбшным правилам, и крути там эластик. То что погоны умом и сообразительностью не отличаются это всем известно.
Аноним 12/08/23 Суб 14:20:16 #225 №2803486 
>>2803456
> В реальности никто по 500к записей не вставляет.
Вставим 1 строку
https://dbfiddle.uk/JUDvVeE8
Я не понимаю, ты доку принципиально никогда не читал или ты её игнорируешь? Энивей успехов те в создании логов с индексами, чо сказать.
>А хсторка тем более не нужна
Угу сча бы старую легаси проект взять и переписать с нуляку под jsonb вместо хсторки, каждый день токо это и делаю.
Ясен хуй хсторка не нужна, но приколись не все базы разрабатываются с нуля! Иногда тебе надо поддерживать говно мамонта.
>Сделай обычный GROUP BY id LIMIT 10
Ты почему то сам это написал а теперь считаешь это за изначальную мою задачу
>>2800342
> тебе надо вывести ласт (по времени) строку лога определенного id
Определенное ойди это не LIMIT 10
А если ты уберешь и лимит 10, то че будет?)
>Запрос с лефт джойном кстати совсем плохой.
А каким он еще должен быть то? Я тебе его написал к своим словам из
>>2803316
>Ну и задача на максимум это тоже диапазон )))))
>Ну а кто им мешает сертифицировать эластик кроме их собственной лени? Ну или сделай виртуалку на "сертифицированном" линухе
Чел, чтобы он стал сертифицированным ему едро надо переписать целиком, потому что у тебя на серваке будет дохуя пользаков, с разными доступами секретности. И кто то даже не должен блядь знать что какая то запись вообще существует на серваке.
>То что погоны умом и сообразительностью не отличаются это всем известно.
Ну, хотя бы читать умеют доку, в отличии от некоторых)


>>
Аноним 12/08/23 Суб 14:45:51 #226 №2803517 
>>2803486
>Вставим 1 строку
>Execution Time: 0.224 ms
>Execution Time: 0.925 ms
Вывод: индекс замедляет вставку в четыре раза. Ты это хочешь сказать?

>Иногда тебе надо поддерживать говно мамонта.
Ну и? Я так-то все запросы на 14 версии писал. Не понимаю зачем ты вообще хстор приплел? Ну было и было. Но прошло.

>Ты почему то сам это написал а теперь считаешь это за изначальную мою задачу
Я это написал чтобы сайт по 500к записей на страницу для каждого запроса не вываливал (а он пытался). А так-то ты сам задачу поставил на выборку по всей таблице.

>А если ты уберешь и лимит 10, то че будет?)
Я и описал в своем посте что будет. Будет поиск по всей таблице и оптимизатор не будет срезать углы зная что надо всего одну строку высрать.

>А каким он еще должен быть то? Я тебе его написал к своим словам из
>Ну и задача на максимум это тоже диапазон )))))
Нет, ты просто свел её к диапазону, по сути сгенерировав этот диапазон лефт джойном. Я в своем посте объяснил как правильно эмулировать диапазон сортировкой. Сортируем 1234 и берем первую запись. Потом сортируем 4321 и опять берем первую запись. Получаем 1-4 диапазон при том же самом количестве строк. Рекурсивный запрос примерно так и делает, просто на таких данных он немного медленнее. А с диапазонами 1-10к очень ускорится.

>Чел, чтобы он стал сертифицированным ему едро надо переписать целиком, потому что у тебя на серваке будет дохуя пользаков, с разными доступами секретности.
Ты вообще не читаешь что я пишу? Ты можешь создать организацию доступов НАД эластиком. На уровне пользователей ОС, например. Или сам её написать если есть время и бюджет.

>Ну, хотя бы читать умеют доку, в отличии от некоторых)
Ну это слишком жирно.
Аноним 12/08/23 Суб 15:38:39 #227 №2803612 
>>2803517
>Вывод: индекс замедляет вставку в четыре раза. Ты это хочешь сказать?
ну явно не ускоряет в 4 раза. Я просто не понимаю твою позицию в корне, как можно считать, что понаписав индексов на таблицу фулл логирования с учетом того, что из нее селектят раз в месяц +- можно быть уверенным что ты все сделал правильно. Абсурд.
>14 версии
толстота. старая версия это 9.6 и на них до сих пор работают
потому что
>Или сам её написать если есть время и бюджет.
и ты сам знаешь с чем тут проблемы)
> А так-то ты сам задачу поставил на выборку по всей таблице.
для определенного ойди а не для каждого.
Аноним 12/08/23 Суб 16:56:24 #228 №2803725 
>>2803612
>Я просто не понимаю твою позицию в корне
Моя позиция в том что все не настолько драматично. Да замедляет, но процентов на десять каждый индекс.

>что понаписав индексов на таблицу фулл логирования
Что значит "понаписав"? По содержимому там никаких индексов нет. Если че Primary key автоматически создает Btree индекс.

>толстота. старая версия это 9.6 и на них до сих пор работают
Ну работают. Опять не понял к чему это вообще?

>и ты сам знаешь с чем тут проблемы)
Знаю. Ну и кто в этих проблемах виноват? Разве эластик? Сапоги-погоны сами себе дураки. Вот пусть и катают квадратное. А нормальные люди пишут логи туда где от них будет толк.

>для определенного ойди а не для каждого.
Это щас шутка была? Не смешно.
Аноним 12/08/23 Суб 17:25:35 #229 №2803760 
>>2803725
>Да замедляет, но процентов на десять каждый индекс.
ого! прогресс! и зачем нам тогда тратить ресурсы на логи, которые мы редко юзаем?
>По содержимому там никаких индексов нет
там это где? ты написал составной битри на все поля
>Если че Primary key автоматически создает Btree индекс.
ну у тебя нет pk и кстати pk эт не просто битри, а уникальный битри если че =) а на проверку уникальности тоже времечко будет уходить в жестокой боевой реальности и уже от этого уйти нельзя вообще.
> Опять не понял к чему это вообще?
к причине юзанья хсторки
> А нормальные люди пишут логи туда где от них будет толк.
Использовать редко <>бестолковые
И че за негатив к людям в форме? это из за смузи или чего? у меня негатив к людям, которые цтешками обкладываются с ног до головы, например.
>Это щас шутка была? Не смешно.
да никто и не смеется, ты буквально написал код который ищет для всех, а я писал про задачу поиска для одного конкретного ойди.



Ты сам возьми и попробуй в 5 сеянсах вставить по 1 кесику строчек в одну таблицку и все сразу станет ясно. нужны индексы, не нужны индексы и скока там процентов. А то мне сдается что ты нихуя и не разраб бд, дружище, а какой то аналитик или хз кто, который тока в селект и может
Аноним 12/08/23 Суб 17:58:53 #230 №2803799 
>>2803760
>и зачем нам тогда тратить ресурсы на логи, которые мы редко юзаем?
Зависит от того насколько "редко" и нагрузки на базу вообще. Если база под нагрузкой, то запрос без индекса на 50кк строк может насрать всем остальным. Кстати один из вариантов создания таких логов - через репликацию. Отдельная нода, которой на всех остальных похуй и индекс твою основную вставку нагружать не будет.

>там это где? ты написал составной битри на все поля
Там это в настоящей базе. Хватит троллить тупостью, пример это всего лишь пример. Я не могу на этом сайте еще и логи генерить, там и так даже 1кк записей не вставить. Этот сайт просто чтобы показать запросы красиво.

>ну у тебя нет pk
Опять же потому что это твой пример. В моей базе очевидно pk был бы.

>к причине юзанья хсторки
Круг замкнулся.

>И че за негатив к людям в форме? это из за смузи или чего?
Ну это ты начал людей в форме обсирать. Сам начал рассказывать как они ограничены и что у них все не как у людей.

>да никто и не смеется, ты буквально написал код который ищет для всех, а я писал про задачу поиска для одного конкретного ойди.
Ты понимаешь что для этого нужно просто сделать запрос WHERE id = n и все? Никаких оконных функций, никаких группировок, никаких CTE.

>Ты сам возьми и попробуй в 5 сеянсах вставить по 1 кесику строчек в одну таблицку и все сразу станет ясно.
Я думал над этим. Слишком сложно получается такое провернуть. Это либо какую-то очень хитрую процедуру писать. Либо из кода так срать в базу. Дохуя мороки. Мое понимание стоимости индексов из опыта работы с хайлоадом. Если идет только вставка, а удаление чисто логическое, то оверхед от индексов вполне терпимый. Он буквально вопринимается как налог на работу с таблицей больше миллиона записей. Потому что без индекса это просто пиздец, который всю память засрет.
Аноним 15/08/23 Втр 17:05:50 #231 №2807278 
>>2707369
просто в нем есть все и он бесплатный!
мимо работал и на MSSQL и на MySQL, даже на Oracle
Аноним 15/08/23 Втр 17:22:58 #232 №2807311 
>>2707900

NoSQL в 2023? Ты долбоеб? Эта залупа изначально смузи-уебками придумано было, что не смогли осилить все формы Бойса — Кодда. Не взлетела и нахуй никому не нужна
Аноним 15/08/23 Втр 20:02:21 #233 №2807529 
>>2701507 (OP)
Суп, появилась возможность вкатится в администрирование Oracle NetSuite, собна вопроса два:
1) Что базовое можно почитать для вката?
2) Какой IDE лучше для написание кастомных скриптов для этой ебанины?
Аноним 16/08/23 Срд 10:22:29 #234 №2807746 
>>2807311
дед, таблетки принял?
Аноним 16/08/23 Срд 11:43:52 #235 №2807811 
>>2807311
Это ты примерно так прочувствовал что все они не взлетели?
Эластик вполне себе взлетел, не видел ни одной компании где его не используют.
Редис взлетел. Опять же везде и повсюду.
Кликхаус взлетел. Этот уже не везде, но много где встречается.
Кассандра, сцилла взлетели. В кассандру вставка данных быстрее чем чтение. Если у тебя запись миллионов строк в секунду, то у тебя вариантов всего пара. И это пара не rdbms.
neo4j взлетела. Если данные хоть немного походят на граф, то она в сотни раз быстрее реляционной.
Аноним 16/08/23 Срд 13:07:59 #236 №2807922 
>>2807811

>Эластик вполне себе взлетел, не видел ни одной компании где его не используют.
Эластик - можно реализовать и без ваших nosql

>Редис взлетел. Опять же везде и повсюду.
кроме редиса - все говно ( и то, в большистве своем это тупо memory-кэш который на коленке за 10 минут делается )
Остальное говно без задач
Аноним 16/08/23 Срд 13:10:54 #237 №2807925 
>>2807746
смузи уебок порвался. Иди мафина наверни и в доку 2 подрочи или там в овервотч
Аноним 16/08/23 Срд 13:40:14 #238 №2807952 
>>2807811
>Кликхаус
А его то зачем в эту гоп-компанию приплел?
Аноним 16/08/23 Срд 15:04:51 #239 №2808089 
>>2807811
отключи индексы долбоеб
Аноним 16/08/23 Срд 22:45:21 #240 №2808722 
>>2807922
>Эластик - можно реализовать и без ваших nosql
Реляционный эластик? Ну скинь перфоманс тесты реализации, поржу.

>это тупо memory-кэш который на коленке за 10 минут делается
Кек. А репликация тоже на коленке делается? Давай сбацай мне на коленке реализацию HyperLogLog.

>Остальное говно без задач
Ну так у тебя задачи говно. Для них и microsoft access достаточно.
Аноним 16/08/23 Срд 22:45:55 #241 №2808724 
>>2807952
>А его то зачем в эту гоп-компанию приплел?
Популярное nosql решение. Многие логи и журналы там хранят. А тебе что вкусно только заграничное?
Аноним 16/08/23 Срд 22:46:35 #242 №2808727 
>>2808089
>отключи индексы долбоеб
Хули еще отключить? Транзакцции? mvcc? acid?
Autovacuum на шесть утра настроил и бегом за пивандепалой для nosql батьков.
Аноним 17/08/23 Чтв 07:42:26 #243 №2808891 
>>2808724
В каком месте кликхаус nosql?
Аноним 17/08/23 Чтв 09:21:50 #244 №2808940 
>>2808891
>В каком месте кликхаус nosql?
А в каком месте нет?
Не реляционная база, которая на поддерживает ни один из SQl стандартов.

Про кассандру ты почему-то этого не спросил, хотя там язык запросов тоже на SQL похож.
Аноним 17/08/23 Чтв 10:47:35 #245 №2809051 
>>2808940
Давай жопой не виляй. Все более менее соответствует
https://clickhouse.com/docs/ru/sql-reference
https://clickhouse.com/docs/ru/sql-reference/ansi
Аноним 17/08/23 Чтв 11:21:29 #246 №2809096 
>>2809051
Ну ты и еблан канеш.
Ты типа думаешь что nosql означает что SELECT'а нету? Это в первую очередь относится к тому как хранение данных устроено.

Вот запрос SELECT lastname FROM cycling.cyclist_name LIMIT 50000;
Обычный такой SQL запрос. Вот только это запрос для кассандры https://docs.datastax.com/en/cql-oss/3.3/cql/cql_reference/cqlSelect.html
Перестала от этого кассандра быть nosql базой? Ясен хуй нет. Потому что cql просто похож на sql.
Аноним 17/08/23 Чтв 11:36:07 #247 №2809114 
>>2809051
>более менее
Аноним 17/08/23 Чтв 11:41:51 #248 №2809121 
1524214279166297364.jpg
Screenshot 2023-08-17 113825.png
>>2809114
>Это SQL база
>А ты чё не верил?
Аноним 17/08/23 Чтв 11:42:59 #249 №2809122 
>>2809121
Она даже не ACID-compliant, блядь!
Аноним 17/08/23 Чтв 11:47:13 #250 №2809127 
>>2809122
Ну если серьезно, то ей и не надо. Вся эта sql залупа там только чтобы легче переезжать на неё было. Больше потенциальная аудитория - больше классов яндексу. Это додик выше начал её в реляционные базы записывать, непонятно нахуя.
Аноним 17/08/23 Чтв 11:49:30 #251 №2809130 
>>2809096
Давай жопой не виляй 2. Ты пытаешься подменить предмет обсуждения. Речь шла о кликхаусе, а не касандре. Когда люди говорят о nosql то подразумевают кей-валуе и графовые СУБД

Если это не реляционная СУБД то нафейхоа там JOIN
https://clickhouse.com/docs/en/sql-reference/statements/select/join

То есть реалиционные операции на табличках это основа кликхауса - значит РСУБД
Аноним 17/08/23 Чтв 12:05:10 #252 №2809149 
row-oriented-3e6fd5aa48e3075202d242b4799da8fa.gif
column-oriented-d082e49b7743d4ded32c7952bfdb028f.gif
>>2809130
>говорят о nosql то подразумевают кей-валуе и графовые СУБД
Ну тоесть hbase и кассандра не nosql?
clickhouse точно такая же колоночная база. Тебе даже анимацию красивую нарисовали. Имаджинирую ебало разрабов когда каждому додику нужно картинки красивые рисовать чтобы до него дошло.

>Если это не реляционная СУБД то нафейхоа там JOIN
Чтобы данные в памяти объединять? Ради мира на земле? Ты че хочешь услышать, еблан?

>То есть реалиционные операции
Ну типа они берут свои нереляционные данные, преобразуют их в реляционные, и делают джойн.
Ты можешь над эластиком надстройку написать, которая будет делать два запроса, преобразовывать json'ы в формат таблицы и делать джойн. Эластик от этого реляционным станет?
Аноним 17/08/23 Чтв 12:26:41 #253 №2809173 
>>2809149
Давай как и ты начну на другие СУБД съезжать...
У Mysql есть колоночный движок https://warpsqlblog.wordpress.com/2020/02/02/warpsql-introduction/
Mysql не РСУБД?
Аноним 17/08/23 Чтв 12:53:03 #254 №2809211 
>>2809173
>ACID Compliant with MVCC capabilities
Бля, ебанько, ты бы хоть читал че постишь.
Аноним 17/08/23 Чтв 13:12:57 #255 №2809246 
>>2809211
Ты понимаешь слово реляционная? Причем здесь транзакции? Транзакции нужны для OLTP. Кликхаус специально для OLAP задизайнен. Реляционные операции он поддерживает. Я переносил запросы между мускулем и кликхаусом, туда и обратно. Проблем не было. Короче я устал от тебя, иди нахуй
Аноним 17/08/23 Чтв 14:11:58 #256 №2809338 
16883720408070.png
Посоветуйте OLTP решение:

- Open Source;
- Распределенную;
- С нативной поддержкой UUID7;
- С авто-партиционированием из коробки: у меня мультарендность и есть желание не хранить перемешанные данные, чтобы затем читать с диска лишние данные на запросы;
Аноним 17/08/23 Чтв 14:26:23 #257 №2809380 
Screenshot 2023-08-17 141831.png
>>2809246
Бля, чучело ты понимаешь что термин "relation" относится к организации данных внутри таблицы? Хоть википедию почитай, неуч https://en.wikipedia.org/wiki/Relation_(database) . Кликхаус нереляционная потому что в ней хранение данных организовано не так. Нет там отношений внутри таблицы.

А исходя из твоей дегенеративной логики excel это реляционная база. Таблицы есть, объединять их можно. Шах и мат ебать.
Аноним 17/08/23 Чтв 14:47:13 #258 №2809414 
>>2809338
>OLTP
Технически и кассандра oltp. Тебе acid нужен или нет?

>Распределенную
Как распределенную? Хоть аналог приведи чтобы было понятно что тебе нужно.

>С авто-партиционированием из коробки
Насколько "авто"? Поставить на постгрес pg_partman это достаточно "из коробки"?

>и есть желание не хранить перемешанные данные, чтобы затем читать с диска лишние данные на запросы
Ебал её рука. Тут опечатка что-ли? Нихуя не понятно.

А самый главный вопрос: щас-то че стоит? Ты откуда мигрировать собрался?
Аноним 17/08/23 Чтв 16:48:27 #259 №2809579 
>>2809338
cassanda, ch, vertica, amazon,databrick...Блять Коля, скажи чо надо то?
Аноним 17/08/23 Чтв 22:12:17 #260 №2809951 
>>2808722
>HyperLogLog
нахуй пройди
https://github.com/citusdata/postgresql-hll
Аноним 17/08/23 Чтв 22:13:41 #261 №2809954 
>>2808727
да отключи транзакции вливай bulk'ом и будет тебе счастье , долбоеб
Аноним 17/08/23 Чтв 22:15:36 #262 №2809958 
>>2809380
тебя уже обоссали , а ты не уймешься, чучело
Аноним 18/08/23 Птн 01:22:15 #263 №2810108 
>>2809951
>на коленке за 10 минут делается
>ну сделай
>пук
Аноним 18/08/23 Птн 01:24:29 #264 №2810112 
>>2809954
>да отключи транзакции вливай bulk'ом
И упирайся в скорость записи на хард. Эта переписка с душевнобольным начинает утомлять.
Аноним 18/08/23 Птн 01:26:45 #265 №2810113 
>>2809958
Не снимая штанов.
Аноним 18/08/23 Птн 09:22:27 #266 №2810202 
Поясните за dblink в Postgres, там обязательно нужны superuser privilege? Можно как-то изолировать это, например дать права только на вью?
Аноним 18/08/23 Птн 22:23:15 #267 №2811418 
>>2810108
блять , ты реально не можешь кэш сервер накатать? Нахуй мне с тобой вообще говорить тогда
Аноним 18/08/23 Птн 22:25:47 #268 №2811421 
>>2810112
блять ты всегда будешь упираться в скорость записи на хард долбоеб. А если тебе не надо на хард, ну тогда извини, свет отрубят твоим данным пизда . Я еще раз говорю, NoSQl - это хуйня , по факту большинство классических SQL серверов все это умеют .
Аноним 18/08/23 Птн 22:26:34 #269 №2811423 
>>2810113
а ты хочешь , чтобы тебе еще и штаны приспустили и обоссали при этом?
Аноним 18/08/23 Птн 22:29:25 #270 №2811425 
>>2811418
>на коленке за 10 минут делается
>ну сделай
>не могу сам сделай
Аноним 18/08/23 Птн 22:32:56 #271 №2811427 
>>2811421
>блять ты всегда будешь упираться в скорость записи на хард долбоеб
На реляционной базе. Потому что ты еблан.
А умный человек поставит кассандру, которая мультимастер и в принципе стартует минимум с трех нод. И каждая нода будет писать на свой хард.
Какой же ты тупой опущ.
Аноним 18/08/23 Птн 22:34:14 #272 №2811428 
>>2811423
>а ты хочешь , чтобы тебе еще и штаны приспустили и пососали при этом?
Нет, тобой побрезгую. Трипак гарантирован.
Аноним 19/08/23 Суб 00:05:31 #273 №2811475 
>>2811427
долбоеб, ты видимо не слышал про linked сервера, сервера master-slave и прочие кластерные забавы. Этому говну уже лет так 15 как ! И все без твоей обоссандры работает, опущ!
Аноним 19/08/23 Суб 00:07:32 #274 №2811476 
>>2811427
Cassandra написана на Java, уябывай, долбоеб
Аноним 19/08/23 Суб 13:52:37 #275 №2811814 
>>2811475
>linked сервера, сервера master-slave и прочие кластерные забавы. Этому говну уже лет так 15 как ! И все без твоей обоссандры работает, опущ!
Ну ты бы хоть почитал про что пишешь, чучело. При чем тут вообще master-slave? Как он вообще скорость записи увеличивает? Мастер-мастер теоретически да, но все равно реплицироваться данные будут с одного мастера на другой.

А в кассандре данные хранятся на разных нодах и пишутся ВСЕГДА на разные ноды. И скорость записи там увеличивается ЛИНЕЙНО. В кассандру если есть железо, то можно 1кк записей в секунду хуярить. Не чтений блядь а ЗАПИСЕЙ.

Хватит писать рандомные слова, ты уже обосрался, а теперь говно себе по еблу размазываешь.

>>2811476
>Cassandra написана на Java, уябывай, долбоеб
Расскажи это ебланам из апаче и дегенератам из гугла, которые все свои хадупы, спарки и кафки на джаве пишут. Кончи тупые не понимают, что это зашквар.
Аноним 20/08/23 Вск 13:42:03 #276 №2812827 
>>2701507 (OP)
Мы тут обсуждали использование постгреса в нашем проекте и наш сенька сказал что "лучше откоывать коннекшн ненадолго, записывать что нам нужно небольшим батчем и идти дальше, подолгу не удерживая соединение, как в принципе постгрес и подразумевал работу с коннекшнами" - я попытался найти что-то подобное в доках но нихрена, мне немного стремно подходить к нему и спрашивать "ты это че, выдумал?"

Это вообще дельная тема что он сказал или нет?
Аноним 20/08/23 Вск 13:53:30 #277 №2812831 
>>2812827
Я не эксперд ,но у постгреса нет менеджера конекшенов, этим внешие библиотеки занимаются. Вроде все они держат пул конекшенов и реюзают эти конекшены. Это связано с тем что постгрес на каждый конекшен ебашит отдельный процесс со со всеми кешами.
Аноним 20/08/23 Вск 14:18:06 #278 №2812847 
>>2812827
Постгрес - это такая ебанина что да, все так
Аноним 20/08/23 Вск 14:30:45 #279 №2812853 
>>2812847
ты тот самый сенька?
Аноним 20/08/23 Вск 14:42:38 #280 №2812856 
>>2812827
Вот этот анон прав >>2812831 . Все вопросы с коннекшенами закрывает PgBouncer.

По поводу
>записывать что нам нужно небольшим батчем
Я в свое время убил кучу часов на вычисление оптимального размера батча. Надо было раз в десять минут пидорить по 100к строк примерно, апсертом. Получилось что-то около 2к строк на транзакцию. Меньше и станет больше транзакций и все замедляется. Больше и транзакции дольше обрабатываются и все замедляется.
Ну и разумеется нужно убедиться что не вставляется в текстовое поле какая-нить "война и мир" чтобы в максимальный размер запроса влезать.
Аноним 21/08/23 Пнд 17:14:23 #281 №2813957 
image.png
Сап, аноны. Не знаю, где спросить, но есть одна экселевская задачка. Туплю и не могу понять решение, реквестирую советов.
Аноним 21/08/23 Пнд 17:30:37 #282 №2813978 
Пацаны, получил недавно ошибку:
<class 'asyncpg.exceptions.DiskFullError'>: could not extend file "base/16388/21415.2": No space left on device

Но ведь девопс говорил что там на кластере предостаточно места... втф? Где посмотреть общее потребление памяти диска постгрей?
Аноним 21/08/23 Пнд 18:41:38 #283 №2814115 
>>2813957
VLOOKUP
Аноним 21/08/23 Пнд 18:49:14 #284 №2814130 
>>2814115
ВПР
Аноним 25/08/23 Птн 12:20:06 #285 №2817992 
>>2701507 (OP)
Вкатываюсь в функции постгри, вроде тема помогает неплохо так сократить дублирование. Функции у меня создаются на старте моего приложения через CREATE OR REPLACE
Я поменял сигнатуру одной функции, но на startapp эта хуйня упала с мессагами:
DETAIL: Row type defined by OUT parameters is different.
HINT: Use DROP FUNCTION km_prep_func(character varying) first.

Нипонял, почему это я должен делать еще и DROP? У меня ж там CREATE OR REPLACE, а значит должен происходить REPLACE, это БАЗА бля
Аноним 25/08/23 Птн 13:43:38 #286 №2818048 
>>2817992
Код покажи.
Так на вскидку ты дропаешь функцию возвращающую один тип, а создаешь возвращающую другой. Если тип меняется, то нельзя сделать REPLACE, а можно только DROP + CREATE.
Аноним 26/08/23 Суб 12:20:12 #287 №2819008 
вопрос платиновый как делать межсерверные запросы из одного newsql окна? в гугле нет, я работаю с удалённого рабочего стола, в mssql где уже подключаюсь к серверам
есть два основных сервера black и white на них по 15 баз, между ними импорты экспорты настроены автоматам, так вот иногда они ломаются, работают через жопу
70% работы пишу запросы в черном к 1 базе, но случается что надо из белого достать данные тоже из 1 базы, и сверить прост посмотреть есть или нет там

так вот как быстро переключатся менять их? потому что открыл newsql или свои, то что написал, пук пук, надо из 2 что то достать, и начинается, надо от одного откл, закрыть окно с запросом, подключится, снова открыть окно, выбрать базу и весь этот дроч естественно лагает данные идут по пизде потому что их там тысячи естественно я не запоминаю их. даже простой селект 1 строки из двух серверов занимает по 5 минут клацания одного и тогоже

межбазовые я нагуглил, пишешь use такая то база? или полное имя и тп, вьюшки там еще какие то похуй, вот это надо редко, а меж серверные как? никакие плагины и прочее установить нельзя? названия то я помню, адреса тоже и было бы заебись писать use черный сервер и селект там
а с новой строчки уже, use белый сервер и селект там
Аноним 26/08/23 Суб 13:00:40 #288 №2819044 
Господа, что происходит когда я на бекенде (питоновский asyncpg + sqlalchemy например) в рамках 1 открытой сессии пуляю асинхронно несколько select запросов к базе постгреса и запускаю их всех разом через asyncio.gather (аналог Promise.all из js)?
У меня реально параллельно они отрабатывают или один хер последовательно т.к. я использую 1 сессию?
Аноним 26/08/23 Суб 16:03:13 #289 №2819275 
>>2809130
Мы вам перезвоним
Аноним 26/08/23 Суб 16:42:15 #290 №2819323 
Где вакуум вкатуну искать? В моей мухосрани 2 конторы и то с образованием нада.
Аноним 26/08/23 Суб 16:42:35 #291 №2819324 
>>2819323
Вакухи*
sage[mailto:sage] Аноним 26/08/23 Суб 16:49:08 #292 №2819328 
>>2819008
>межбазовые я нагуглил, пишешь use такая то база? или полное имя и тп, вьюшки там еще какие то похуй, вот это надо редко, а меж серверные как?

с курлом пробовал ебаться?
Аноним 26/08/23 Суб 17:23:35 #293 №2819364 
>>2819323

На ЖД станциях ищи цисцерны с жидким вакуумом
Аноним 26/08/23 Суб 17:38:29 #294 №2819378 
По какой причине рсубд на практике почти никогда не поднимают в контейнере / поде, а ставят для этого отдельный сервак? Каковы причины?
Аноним 26/08/23 Суб 17:39:52 #295 №2819380 
>>2819378
По причине того, что бд обычно админятся бумерами, а контейнеры придуманы зумерами
Аноним 26/08/23 Суб 18:14:27 #296 №2819406 
В РФ есть вакансии на разработчика баз данных? Мне как бекэндеру интересно, может перекатиться.
Аноним 26/08/23 Суб 18:44:36 #297 №2819433 
>>2819364
Не еби голову, моя прошлая спецуха физику и химию совмещала больше, чем ты думаешь.
Аноним 26/08/23 Суб 19:32:24 #298 №2819487 
datagrip.png
>>2819008
Звучит как говенный инструмент. Нахуя окна закрывать? Нахуя соединения отключать? У меня в шторме datagrip от idea и ни одной из твоих проблем там нет. Можно подключаться хоть к десяти базам, открывать сколько надо консолей и даже есть пикрелейтед тулза чтобы сравнивать результаты.
Аноним 26/08/23 Суб 21:24:37 #299 №2819630 
>>2819328
выглядит как гигантский костыль, но почитаю подробнее
>>2819487
>в шторме datagrip от idea
есть только mssql без всяких плагинов и тп, idea не купят
>хоть к десяти базам
серверам. надо к двум хотябы, в идеале к 4. баз там по 15шт на каждом и с этим проблем нет
Аноним 27/08/23 Вск 00:34:38 #300 №2819694 
>>2819378
> По какой причине рсубд на практике почти никогда не поднимают в контейнере / поде, а ставят для этого отдельный сервак? Каковы причины?
А какой смысл поднимать базу в контейнере? Чтобы что? У тебя что, 2,000 баз данных и ты пытаешься размножить их по всей планете? Классические БД типа MySQL исторически плохо масштабируются по горизонтали. Несколько очевидных минусов - БД будет общаться с файловой системой через драйвер докера, что медленнее чем прямой доступ. Второй минус - это невозможность тонкого тюнинга. Откуда ты знаешь на какую конкретно машину задеплоиться база данных, сколько у неё памяти, сколько кеша ставить в конфиге? И третий минус, можно нечаянно дропнуть данные. Некоторые персонажи утверждают что контейнеры нужны чтобы "заморозить" зависимости. Типа, вот если ты создал проект семь лет назад на mysql версии 5.7.42, то ты должен на неё молиться всю свою жизнь. Или ещё некоторые пишут, чтобы развёртывать было проще. Под базы данных и так уже куча средств автоматизации, миграции, бекапов и всего прочего.

Опять же, есть специально адаптированные БД под контейнеры - vitess, cockroachdb, percona, cassandra, tidb, и прочие. Если тебе прям очень хочется, можешь поднять vitess/tidb и поиграться с ними.
Аноним 27/08/23 Вск 00:36:47 #301 №2819697 
>>2819406
Конечно есть, гугли pl/sql разработчик либо просто sql
Аноним 27/08/23 Вск 00:38:46 #302 №2819699 
>>2819694
>А какой смысл поднимать базу в контейнере
Приложение поднято в контейнере? Чек
Система кеша в виде Редиса поднята в контейнере? Чек
Очередь реббита поднята в контейнере? Чек
Нгинкс поднят в контейнере? Чек
Так с чего бы и РСУБД не поднять в контейнере?
Аноним 27/08/23 Вск 01:31:40 #303 №2819708 
>>2819699
Ну а причём здесь приложение, redis, nginx, и проч? Ты перечислил сейчас stateless-приложения. Они ничего не сохраняют на диск. Их как удалили, так и перезапустили. Ничего не потерялось. А базы данных stateful. Это самый критический компонент в системе. Если данные стереть, всей компании может быть пизда.

Тем более, nginx, redis - это микроскопические сервисы. Они занимают может быть 2-5 мегабайт оперативной памяти. На одном сервере может спокойно 200 контейнеров с нжинксом/редисом висеть. Сравнил ебать редис который потребляет 3 мб ОЗУ с БД.

Удачи тебе такое провернуть с базой данных. Она мало того что требует минимум 1 гигабайт оперативки (а лучше 2 гигабайт), так ещё желательно быстрый диск (NVM SSD соединённый в RAID-массив). Конечно если тебе на IOPS похуй, ты можешь обычный HDD поставить и в контейнере деплоить.
Аноним 27/08/23 Вск 02:01:14 #304 №2819710 
>>2819708
БД стейтлфул, но СУБД такое же стейтлесс приложение. Запускаешь СУБД в контейнере, ему указываешь volume для хранения данных на реальном диске, и никуда эти данные не денутся после рестарта контейнера.
Аноним 27/08/23 Вск 02:26:01 #305 №2819727 
>>2819710
Нууу? А volume где будет? У тебя 10 серверов. На каком сервере будет volume? Или ты используешь шаред фс а-ля NFS или NAS? Допустим, ты используешь NFS, тогда у тебя будет риск потери данных. И как ты будешь своей оркестрацией выбирать кто мастер а кто slave? Если ты два мастера выберешь, у тебя опять будет порча данных.

И все эти мучения ради чего? Ну то есть подведём итоги - ты мучался с volume, с оркестрацией, с тюнингом, чтобы что? Чем "контейнеризованная бд" лучше чем неконтейнеризованная?

У тебя единственный аргумент "все так делают".

Писал выше, существуют оптимизированные под докер базы, но MySQL/PostreSQL это не тот случай
Аноним 27/08/23 Вск 02:28:32 #306 №2819731 
Screenshot 2023-08-27 021406.png
datalog.png
>>2819630
>idea не купят
Хуйня какая-то, это в рамках компании сумма микроскопическая. Я бы крепко задумался нахуя вообще работать на таких жопошников. Куда вообще можно вложить бабки более выгодно чем в разработку? Где твоя контора от этих жалких ста баксов больше прибыли получит?

>серверам.
Офк я имею ввиду именно сервера. Настраивай доступ хуярь свои запросы. Все будет кучеряво. Список недавних запросов, отдельные консоли для каждого источника данных. Дампы хуямпы в любом формате. Даже если ты консоль закрыл, то когда откроешь все запросы что там были сохранятся. Диаграммы сочные, с экспортом в разный формат.
Аноним 27/08/23 Вск 02:36:29 #307 №2819733 
>>2819727
>Нууу? А volume где будет? У тебя 10 серверов. На каком сервере будет volume?
На каждом офк.

>Или ты используешь шаред фс а-ля NFS или NAS? Допустим, ты используешь NFS, тогда у тебя будет риск потери данных.
Какие-то костыли, есть стандартные средства репликации.

>И как ты будешь своей оркестрацией выбирать кто мастер а кто slave? Если ты два мастера выберешь, у тебя опять будет порча данных.
Бля, а как ты выбираешь кто будет мастер на реальных серверах? Так же блядь как обычно и выбираешь.

>И все эти мучения ради чего? Ну то есть подведём итоги - ты мучался с volume, с оркестрацией, с тюнингом, чтобы что? Чем "контейнеризованная бд" лучше чем неконтейнеризованная?
Тем что это стандартный подход. Все работает в контейнерах и не надо ни для чего специально раздвигать булки.

Ты забываешь что если у тебя десять продакшен виртуалок, то у тебя еще пол сотни виртуалок тестовых, запасных, девелоперских итд. Клячить все это на голое железо нахуя? Работаешь в стандартном режиме и когда нужно стейдж для билда развернуть и когда новую реплику на проде поднимаешь и не ебешь мозги.
Аноним 27/08/23 Вск 03:42:21 #308 №2819741 
>>2819733
Зумеры не в курсе, что в постгресе можно создать несколько баз!
Аноним 27/08/23 Вск 04:23:04 #309 №2819753 
Да ну нахуй.mp4
>>2819741
А в базе несколько схем! Ебать, вот это ломающие новости! Вот это круто.
Вот это все меняет (нет), пошел нахуй.
Аноним 27/08/23 Вск 04:49:03 #310 №2819760 
>>2819753
Суть разговора как раз в том, что в реальности идешь нахуй ты, потому что бд в большинстве случаев настраивают олдскульным способом без зумерских контейнеров
Аноним 27/08/23 Вск 10:39:56 #311 №2819837 
>>2819731
>микроскопическая
там иб ебет и логируется каждый пук потому что банки и бабки, и два что бы понимал какие жмоты, в программе для автотестов и ручного юзают триальный период и каждый месяц его сбрасывают, да да скоро свалим с него, но уже 2 год пошел
>Где
в банке. но с деньгами не обижают и во всем прекрасно

>пик
бля как же красиво, я и забыл уже про него, в 2019 игрался. надо попробовать тоже и может себе установлю
спасиб за идею
Аноним 27/08/23 Вск 15:17:37 #312 №2820124 
>>2819760
>бд в большинстве случаев настраивают олдскульным способом без зумерских контейнеров
Бля, ебанько. Вот тебе пример из "реальности". На каждую ветку с фичей или ветку релиза нужно поднять нужную версию базы с нужной схемой. Как ты собрался это делать "олдскульным способом"? Где ты физически это все будешь делать "олдскульным способом"?

А так у тебя есть готовая виртуалка, настроенная как надо, со списком команд, которые нужно выполнить, сама применяющая миграции, с нужной версией базы. Ты эту виртуалку и разрабу новому можешь дать, и развертывание стейджей автоматизировать и на прод её же деплоить. И самое главное ХРАНИТЬ ЕЁ СУКА В VCS. Чтобы удобно было её менять и отслеживать изменения.
Аноним 27/08/23 Вск 18:14:49 #313 №2820245 
>>2820124
при чем здесь вообще шаблонизация раскатки и контейнеры. тем более ты сказал что у тебя одна виртуалка - одна база в докере. ну можно также хоть salt'ом, хоть ансиблом намутить автоматизацию раскатки. вместо артефактов в виде образов у тебя из репы тянутся какие-нибудь rpm-пакеты с определенной версией и все. контейнеры ещё раз какую задачу решают? я лично (я не тот анон которому ты отвечал) как бы понимаю что это будет работать, но вот например какое-нибудь профилирование с контейнерами усложняется. а зачем тогда закладывать себе палки в колеса ещё при старте?
Аноним 27/08/23 Вск 20:11:09 #314 №2820442 
>>2820245
Мелкобуквенный хуесос, КУДА ТЫ БУДЕШЬ РАСКАТЫВАТЬ СВОЮ ХУЙНЮ? Куда блядь. Надо десять независимых инстансов, куда ты их раскатаешь, ебанько?
Аноним 27/08/23 Вск 20:45:04 #315 №2820488 
>>2820442
или нахуй чорт ёбаный.
я не он
Аноним 28/08/23 Пнд 11:27:36 #316 №2820797 
>>2820442
всмысле куда. на 10 вм. а задача какая, 10 инстансов поднять на одной вм? я тебя не понимаю нихуя, ты же сам сказал выше, у тебя 10 вм, на каждой вм будет бд в докере со своим волюмом.
я предложил такой же вариант, только без докера.
Аноним 28/08/23 Пнд 17:20:39 #317 №2821164 
>>2820797
И нахуй ты влез в разговор, ебанько, если даже не понимаешь о чем речь шла?
Аноним 28/08/23 Пнд 17:37:59 #318 №2821183 
>>2821164
ладно, че ты...
Аноним 29/08/23 Втр 00:36:50 #319 №2821612 
Господа, как обычно работают с текстовыми null-полями?
Вот у меня есть колонка comment в таблице, она типа Text в постгрес, по дефолту что лучше ставить - null, либо сделать поле ненулабельным ставить по дефолту пустую строку - "" ?
Аноним 29/08/23 Втр 00:54:55 #320 №2821619 
>>2821612
Null это самое хуевое значение в базе. С ним по уебански работает сортировка и поиск. В идеале null'ов в базе вообще быть не должно.
Пустой текст по умолчанию "" это норм тема. Я видел как даже специальную пустую дату делали или пустой uuid. Лишь бы этих нулов ебучих небыло.
Аноним 29/08/23 Втр 00:56:24 #321 №2821620 
>>2821619
>В идеале null'ов в базе вообще быть не должно
Это где ты такую "мудрость" подчерпнул?
NULL полностью валидное значение и придумало было еще на заре РСУБД, наверно блять не просто так, да?
Аноним 29/08/23 Втр 01:31:04 #322 №2821624 
>>2821620
А кто говорит что оно не валидное? Без null так-то left join нельзя бы сделать было. Речь о том что ВНУТРИ таблицы Null очень сильно портит жизнь. Миллион статей на эту тему есть.

Банальный вопрос: при сортировке значения с Null будут где? В начале или в конце? Начинается пляска и тряска, кто-то забыл поставить NULLS FIRST и все пошло по пизде.

Или вот ты сравниваешь поля в рекурсивном запросе, а там Null нахуй. Что будет если норм поле с null сравнить? А если null с null? И кому спрашивается весь этот гемор нужен? Все время задним умом думать: а нет ли там null'ов, это ж надо запрос переписывать под них специально. При том что реальной необходимости держать null в таблице просто нет. Создаешь нормальное значение по умолчанию и пишешь обычные запросы без ебли.
Аноним 29/08/23 Втр 09:41:58 #323 №2821715 
>>2821624
>нормальное значение по умолчанию
Ну давай, ка же разрулишь вот эти ситуации с дефолтом:

- FK на соседнюю сущность. Этой сущности также может и не быть. Будешь дефолтную сущность для этого кейса создавать? Как стороннему юзеру об этом узнать?

- Закупочная цена не определена для данного айтема. Но знаешь ли "не определена" и "ноль" - разные вещи, а ты скорее всего предложишь нулями засрать ячейки? А может есть еще более гениальные идеи, типо ОТРИЦАТЕЛЬНУЮ цену туда ебануть? И как юзер сторонний это поймет?

- Номер телефона пользователя в таблице не указан, заменишь его пустой строкой? Вместо проверок на null теперь длину будешь проверять (ахуенно)?
Аноним 29/08/23 Втр 11:44:43 #324 №2821833 
>>2821715
>FK на соседнюю сущность. Этой сущности также может и не быть
Почитай что такое нормализация. Ты срешь избыточностью. Должна быть таблица связей с "соседней сущностью". Связь либо есть либо нет. Никаких null'ов тут не нужно.

>Закупочная цена не определена для данного айтема
То же самое. Есть таблица с ценами, цена в таблице либо есть, либо нет. Нулл нахуй не нужен.

>Номер телефона пользователя в таблице не указан, заменишь его пустой строкой? Вместо проверок на null теперь длину будешь проверять (ахуенно)?
Да какая нахуй разница как ты будешь че там проверять? Важно что пустая строка ведет себя как СТРОКА БЛЯДЬ.

Я не понимаю что ты пытаешься доказать. Ну нельзя везде заменить нулл на дефолтное значение. Ну и что с того? Кому от этого заебись стало? Я тебе объясняю что null это как дополнительный тип в нагрузку к заданному типу, который требует от тебя лишней ебли. С интеджерами поработал? А теперь изволь имаджинировать что там нуллы, которые не интеджеры нихуя, но с которыми надо поработать как с интеджерами. И поперли COALESCE IS NOT NULL NULLIF и прочая поебень.

Нуллы в sql это настолько старая и избитая тема что ну просто пиздец. Этот холивар старше самих реляционных баз. И спорили люди поумнее дебилов с двощей. Те деды самого кодда еще видали, и еще тогда говорили ему что он сука доиграется с нуллами своими блядь.
https://sigmodrecord.org/publications/sigmodRecord/0809/p23.grant.pdf
https://www.dcs.warwick.ac.uk/~hugh/TTM/Missing-info-without-nulls.pdf
Аноним 29/08/23 Втр 12:04:20 #325 №2821857 
>>2821833
>нормализация
Шиз, возвращайся в свою академ среду и не лезь к нормальным людям с реальными проблемами. Никто блять твою "6 нормальную форму" не делает в реальной БД

>Должна быть таблица связей
У тебя обыкновенный FK на другую запись, отдельная таблица тебе нахер не нужна если это не many-to-many

>Да какая нахуй разница как ты будешь че там проверять
Такая блять что это неинтуитивно и ты начинает изменять данные в угоду своим шизотеориям. Данные блять первичны. Их не надо менять потому что какой-то престарелый петух, не занимавшийся реальной разработкой лет 20, так решил, потом проблем не оберешься

>И спорили люди поумнее
Если у старого петуха есть PhD это еще не делает его "вумным" или пригодным для обсуждения реальных продуктовых проблем. Я не теоретик, я практик блять, мне бабки за это платят. Тьюринг разработал хорошую модель но он не прикладывал руки к конструкции и распайке ENIAC, потому что он в этом не шарил нихуя
Аноним 29/08/23 Втр 21:08:55 #326 №2822526 
>>2821857
>Шиз, возвращайся в свою академ среду и не лезь к нормальным людям с реальными проблемами. Никто блять твою "6 нормальную форму" не делает в реальной БД
Ебанько, ты даже первую не сделал. У тебя эксель ебаный от дурочки серетарши получился, а не реляционная база. Ты в натуре что-ли просто прочитал как таблички создавать?

>У тебя обыкновенный FK на другую запись, отдельная таблица тебе нахер не нужна если это не many-to-many
У тебя обыкновенная избыточность данных, потому что связей меньше, чем записей в таблице.

>Такая блять что это неинтуитивно
>Два типа в колонке вместо одного
>интуитивно
>один тип
>неинтуитивно
Ты тупой?

>Если у старого петуха есть PhD
Этот "петух", как ты выразился, придумал реляционные базы данных. Пиздец, Дейт это БАЗА, ОСНОВА блядь. Он блядь в шапке этого треда в рекомендованной литературе, чучело ты тупорылое.
sage[mailto:sage] Аноним 30/08/23 Срд 02:08:56 #327 №2822711 
>>2822526
Поддерживаю всё тобою вышесказанное.
Аноним 31/08/23 Чтв 13:57:33 #328 №2824559 
>>2701507 (OP)
После того как подключился к контейнеру с постгрей, какие операции там можно совершать? Внутри него даже psql не работает для коннекта с базой, что там вообще можно делать7 Где статы смотреть?
Аноним 31/08/23 Чтв 18:57:46 #329 №2825053 
>>2824559
>какие операции там можно совершать?
Те же операции что и везде. Докер контейнер это виртуальная ОС. Какая ОС такие и команды.

>Внутри него даже psql не работает
Внутри кого? Что за контейнер, что в нем установлено? Как настроен постгрес?
Аноним 31/08/23 Чтв 23:30:26 #330 №2825318 
>>2825053
Нет, это в корне неправильный подход. Докер-контейнер- это не виртуальная машина, это архив с бинарником и его зависимостями. Если у тебя туда что-то еще «установлено», значит ты делаешь все не так, жопой
Аноним 01/09/23 Птн 01:59:41 #331 №2825403 
>>2825318
Во первых. Я не спрашивал "что еще" там установлено. Я спросил что там установлено.

А во вторых. Текстовый редактор в твоем "правильном" контейнере установлен? Вот ебало то свое и завали.

Эти концептуальные правила касаются назначения контейнера, а не пересчета того что там в виртуальной системе установлено. У контейнера назначение быть базой данных, и способы доступа к этой базе и управления ею этого назначения не нарушают.
Аноним 01/09/23 Птн 04:42:42 #332 №2825430 
>>2825403
Нет, текстового редактора там не установлено, ты по прежнему делаешь все не так
Аноним 01/09/23 Птн 07:28:44 #333 №2825447 
>>2825430
То есть нет vi, vim или nano? Охуительные истории. Дай ссылку на свой контейнер в котором "так".
Аноним 01/09/23 Птн 08:22:31 #334 №2825459 
>>2825447
Ни в одном нормальном контейнере нет никаких редакторов, вообще никаких сторонних бинарников. Продакшен-контейнер - это контейнер FROM scratch.
Да, многие публичные контейнеры содержат редакторы и прочие базовые утилиты, чисто потому, что они основаны на базовых контейнерах из типовых дистрибутивов. Это исторически так сложилось (когда не было multi-stage builds) и это не значит, что они подразумевают редактирование чего-то внутри контейнера.
Аноним 01/09/23 Птн 09:17:34 #335 №2825498 
>>2825459
>Дай ссылку на свой контейнер в котором "так"
>пук
Аноним 01/09/23 Птн 09:22:17 #336 №2825502 
Слив засчитан.
Аноним 01/09/23 Птн 09:57:43 #337 №2825531 
>>2825498
Я написал тебе, в каком контейнере "так":
> FROM scratch
Но ты конечно можешь продолжать редактировать контейнеры, подключаясь к ним, как к виртуальной машине, долбоебом быть не запрещено.
Аноним 01/09/23 Птн 10:14:20 #338 №2825543 
>>2825531
>Дай ссылку на свой контейнер в котором "так"
>пук номер 2
Аноним 02/09/23 Суб 18:10:14 #339 №2826969 
>>2825053
>Докер контейнер это виртуальная ОС
Мгновенный ноухайр
Аноним 02/09/23 Суб 18:50:24 #340 №2826996 
>>2826969
тот кто пизданул про бинарник с зависимостяни не лучше
Аноним 03/09/23 Вск 20:01:52 #341 №2828016 
>>2826996
Не бомби так, дурачок, редактирующий контейнер
Аноним 04/09/23 Пнд 02:56:59 #342 №2828252 
>>2828016
Детектор чини, еблан
sage[mailto:sage] Аноним 04/09/23 Пнд 03:03:36 #343 №2828254 
Долбоёбы оба, идите нахуй отсюда со своим докером.
Аноним 04/09/23 Пнд 10:16:23 #344 №2828419 
>>2701507 (OP)
В постгре в таблице есть текстовое поле format_area_txt, там строка по типу "1200 кв.м." или "800 кв.м.", от клиента с фронта приходит запрос отсортировать данные по этой колонке, они сортируются по ORDER BY по как текстовые данные, а надо бы чтобы они сортировались как числовые... как это сделать? понимаю что выглядит как хуйня НО не я придумал делать колонку именно такую и не в моих силах сказать "давайте забьем хуй", бизнес просит именно так делать.
Аноним 04/09/23 Пнд 10:27:12 #345 №2828437 
>>2828419
Преобразовать в запросе текст в число и делать order by уже по нему. План запроса пойдёт назуй, но бизнес получит желаемое.
https://stackoverflow.com/questions/8502505/order-varchar-string-as-numeric
Аноним 04/09/23 Пнд 14:12:10 #346 №2828724 
>>2828419
То что тебе нужно называется natural sort.
В постгресе есть специальный способ задать правила сортировки: COLLATION.
https://www.postgresql.org/docs/10/collation.html

CREATE COLLATION numeric (provider = icu, locale = 'en@colNumeric=yes');
ALTER TABLE "your_table" ALTER COLUMN "format_area_txt" type TEXT COLLATE numeric;

После этого должно сортировать как числовое поле.
Аноним 04/09/23 Пнд 14:23:46 #347 №2828756 
>>2828724
Зачет
Аноним 06/09/23 Срд 15:26:54 #348 №2831065 
image.png
>>2828724
COLLATE действительно хорошо помог, стоило его навесить на таблицу НО возникла проблема что он не работает если данные вытащили из таблицы при помощи вьюхи/функции как на пикриле. Я подумал что раз моя функция возвращает TABLE то логично что на эту TABLE тоже можно повесит ькакие-либо constraint в том числе collate. Но как блэт? Эта table не именована by design, он ошибку кидает если пытаюсь ей имя дать, как на нее что-либо повесить?
Аноним 06/09/23 Срд 16:53:28 #349 №2831198 
Screenshot 2023-09-06 164818.png
>>2831065
Какой же там у вас бардак просто пиздец, я хуею. dto_date_str, store_nm, type_sm какие-то блядь вьюхи, функции возвращающие таблицы, просто пизда.

Задание COLLATE при создании таблицы нужно просто чтобы по сто раз не писать.
COLLATE это просто способ сказать что с этим значением нужно работать по вот таким правилам. Ты можешь COLLATE прилепить в любой части запроса, как на пикрелейтед например. Можно задать правила сравнения строк как чисел в WHERE:
WHERE col1 COLLATE numeric > col2 COLLATE numeric
Аноним 06/09/23 Срд 17:13:34 #350 №2831229 
>>2831198
>Какой же там у вас бардак просто пиздец, я хуею. dto_date_str, store_nm, type_sm
А че такого? Нормалек же

>вьюхи, функции возвращающие таблицы
Это база в общем-то, тут ничего зазорного нет

>Ты можешь COLLATE прилепить в любой части запроса
Ow damn, тогда пошед эксперементировать, проблемы лишь в динаимке это делать, но это уже частности
Аноним 06/09/23 Срд 17:50:08 #351 №2831299 
>>2831229
>А че такого? Нормалек же
Комментариев к полям я так понимаю ноль. Классика жанра. Куча таблиц с полями названными в стиле "абырвалг" и логика приложения, зашитая в процедуры. Документация в больной голове этот шизобред написавшего. Это примерно как зашифровать все данные компании, а ключ выбросить. "Нормалек".

>Это база в общем-то, тут ничего зазорного нет
А какого хуя таблицы не соответствуют запрашиваемым данным? Нахуя строить виртуальную базу поверх настоящей? Зачем?
Аноним 07/09/23 Чтв 14:16:26 #352 №2832212 
image.png
что я делаю не так?
Аноним 07/09/23 Чтв 14:44:25 #353 №2832246 
>>2832212
;
Аноним 07/09/23 Чтв 14:50:15 #354 №2832247 
image.png
>>2832246
оно удаляет ;, да пофиг я переписал уже на пикрил. Кстати, он же кеширует здесь получение списка элементов таблиц?
Аноним 07/09/23 Чтв 18:01:38 #355 №2832521 
>>2832212
1) Ты не показываешь с какой базой работаешь.
2) Mssql и oracle LIMIT не поддерживают, там нужно специальные конструкции писать для этого.
Аноним 07/09/23 Чтв 18:11:00 #356 №2832540 
Screenshot 2023-09-07 180458.png
>>2832247
>Кстати, он же кеширует здесь получение списка элементов таблиц?
Ебал её рука. Что такое вообще "список элементов таблиц"?

Научись пользоваться CTE, так будут запросы гораздо понятнее получаться. По шагам будешь двигаться к заданной цели. Сравни насколько нихуя не понятно в твоем запросе и насколько все становится понятно в запросе пикрелейтед.
Аноним 10/09/23 Вск 15:53:09 #357 №2835751 
Посоны, в Redis делать ZADD/ZRANK для миллионов записей одновременно- это заведомо плохая идея или шансы есть?
Аноним 10/09/23 Вск 16:18:43 #358 №2835773 
Вообще похуй.mp4
>>2835751
https://groups.google.com/g/redis-db/c/4TAItKMyUEE/m/C_cwqXs22SEJ
Аноним 12/09/23 Втр 19:45:44 #359 №2839011 
>>2825403
> А во вторых. Текстовый редактор в твоем "правильном" контейнере установлен? Вот ебало то свое и завали.

Это не повод не использовать контейнер.
Ты всегда можешь доставить нужные тулы в контейнер.
Хотя это слегка портит воспроизводимость, но лишь только слегка.
От текстового редактора точно не поплохеет
Аноним 12/09/23 Втр 22:23:58 #360 №2839129 
>>2839011
Куда ты звонишь? Ты ошибся номером, друг.
Аноним 12/09/23 Втр 22:33:49 #361 №2839137 
У меня в мухосранске открылась вакансия без опыта связанная с бд. Посоветуйте какие курсы можно посмотреть и как подготовиться к собесу. Из бд знаю только селект фром тейбл и дроп тейбл.

вакуха на постгресе
Аноним 13/09/23 Срд 11:25:31 #362 №2839456 
>>2839137
https://postgrespro.ru/education/courses/DEV1
Аноним 16/09/23 Суб 08:48:30 #363 №2843541 
Аноны, 1 месяц вкатывался в БД, второй месяц искал и таки нашёл работу. Буду сопровождать етл. Как же повезло, что вкатился минуя парашную тех.поддержку (которая по моему мнению нахуй не нужна в трудовой)

Пожелайте 25-летнему вкатышу-пердуну удачи. Встретимся на кофе-брейке с чизкейками, будем обсуждать тик ток и клаву коку.
Аноним 16/09/23 Суб 08:51:33 #364 №2843542 
>>2839137
Брат, нахуй эти курсы, меня на лайв-кодинге даже похвалили, что самовкатчик. За курсы отдашь хуеву тьму денег, в то время как сам за пару месяцев управишься. Я не ебу какого уровня вакансия, но задумайся, что если на изучение скл ищешь курсы, то нужно ли вообще это твоё ойти?
Аноним 16/09/23 Суб 09:34:04 #365 №2843572 
>>2828252
Пидоран, свколько там рубль уэе?
Аноним 17/09/23 Вск 21:28:08 #366 №2845872 
изображение.png
>>2701507 (OP)
Задали недавно один ахуительный вопрос на собесе:

У тебя есть 2 транзакции в БД (постгрес). Транзакция А транкейтит таблицу и ждет, в этот период начинается транзакция Б, которая добавляет в эту таблицу новую строчку и завершается, после этого транзакция А продолжает работу и записывает свою 1 строчку в таблицу, завершаясь после этого. Какие именно данные мы увидим в таблице после прохождения этих 2х транзакций на каждом из уровней изоляции?
Аноним 17/09/23 Вск 21:51:51 #367 №2845885 
>>2845872
На самом деле нормальный вопрос нормальный в плане что на него реально ответить, просто сложный. Я бы завалил потому что не помню. Но на хабре была норм статья по уровням изоляции и там инсерты делиты рассматриваются тоже
Аноним 17/09/23 Вск 21:54:16 #368 №2845887 
>>2845872
На какую зепу вопрос был кст
Аноним 18/09/23 Пнд 00:20:55 #369 №2846019 
>>2845887
320к
На бекенд а не на ДБА
Аноним 18/09/23 Пнд 00:21:18 #370 №2846020 
>>2845872
Ну это вопрос не >>2845885 "просто сложный", а вопрос с подъебкой.

1) Уровни изоляции транзакций влияют на ЧТЕНИЕ из базы. Мы что-то прочитали и пытаемся с этими данными что-то сделать. Отсюда и пляшем. Кто что может читать, перечитать перед вставкой итд.
2) Локи это то что влияет на возможность делать определенные действия с базой. Например "читать", лол.

Если ты правильно описал заданный тебе вопрос, то это звучит примерно так: крокодил больше зеленый или длинный?

Рассказываю.
Действие TRUNCATE ставит самый ебейше жесткий лок на таблицу AccessExclusiveLock https://postgres-locks.husseinnasser.com/?pgcommand=TRUNCATE . Это означает что делать во время этой транзакции нельзя нихуя, даже читать. Любая транзакция начатая во время TRUNCATE будет сидеть и ждать доступа к таблице.
А как сюда относятся уровни изоляции? А никак нахуй, все сидят и ждут, никакой конкуренции нет.
Аноним 18/09/23 Пнд 00:23:01 #371 №2846022 
>>2846020
А ну тем более тогда вот видите как приятно что на двач зашёл что-то новое узнал для себя
Аноним 18/09/23 Пнд 00:24:06 #372 №2846023 
>>2846020
>husseinnasser.com
У него канал на ютубе кстати крутой про бекенд-штуки
Аноним 18/09/23 Пнд 13:23:52 #373 №2846370 
Пацаны рассказывали что если нужно загрузить много (10-100 миллионов строчек в таблицу) строк из одного источника в другой (РСУБД и там и там) то не зашкварно это делать промежуточно через csv - select-им данным из базы A, сохраняем в csv на диск, чанками из csv insert-им в базу B. Это норм? Как вообще обычно такие проблемы решают?
Аноним 18/09/23 Пнд 13:45:42 #374 №2846398 
>>2846370
Фкшки должно быть залупно переносить, если таблиц много, не? Я теоретизирую интересно мнение опытных коллег тоже
Аноним 18/09/23 Пнд 15:20:46 #375 №2846543 
>>2846370
Варианты переноса по степени хуевости:
1) Самый лучший вариант использовать mysqldump или pg_dump. Если базы разные, то есть конверторы дампов.

2) SQL скрипт с инсертами. IDE от IntelliJ и их datagrip, например, такие дампы делать могут.

3) Не SQL формат. XML, JSON, YML.

4) Моча.

5) Говно.

6) CSV.

CSV самый хуевый вариант, потому что формат самый не строгий. На больших объемах гарантированно будут косяки. Лишние точки с запятой, переносы строк, потерянные кавычки и прочая дрисня. Все, что имеет хоть какие-то правила и структуру, будет лучше. SQL скрипт полностью сохраняет исходную структуру, типы итд. А дамп сохраняет полную структуру таблицы, секвенции, индексы и триггеры, самый надежный, так еще и самый быстрый вариант.
Аноним 18/09/23 Пнд 15:25:18 #376 №2846548 
>>2846543
>pg_dump
>mysqldump
А если я переносу из мускла в постгрес или наоборот? То есть сурс и таргет не совпадают?
Аноним 18/09/23 Пнд 16:05:18 #377 №2846611 
1400431726bukvar-1.jpg
>>2846548
>Если базы разные, то есть конверторы дампов.
Аноним 18/09/23 Пнд 16:16:21 #378 №2846634 
>>2846370
>Как вообще обычно такие проблемы решают
spark
Аноним 18/09/23 Пнд 21:40:43 #379 №2847239 
>>2701507 (OP)
Сап двач, есть способ заабъюзить sql-ex? Решил сам 65 задач, на 66 затупил и пошел погуглил ответ. В итоге забанили, вторые акки банят на раз-два. ТП говорит мол сам виноват долбоёб. А сертификат хочется, сталкивался кто-нибудь?
Аноним 18/09/23 Пнд 22:02:34 #380 №2847256 
>>2846370
>Как вообще обычно такие проблемы решают?
https://cloud.yandex.ru/services/data-transfer
Аноним 19/09/23 Втр 09:51:01 #381 №2847552 
>>2847239
аче всмысле
они типа новые вкладки в браузере отслеживают?
Аноним 19/09/23 Втр 10:11:47 #382 №2847570 
>>2847552
Даже не вкладки, а в другом браузере делал, с другими почтами. Судя по всему видят по апишнику и устройству
Аноним 20/09/23 Срд 06:50:55 #383 №2848551 
1695181853791.jpg
Анон, подскажи. В моей системе хочется сделать слив изображений на сервак. Почитал, понял, что базу с данными лучше делать отдельно (Postgres), а в ней хранится ссылка на картинку/бинарник. Блоб хуйня.

И как-то не могу нагуглить типовой нормальный инструмент, чтобы хоть какое-то сжатие было, эффективно использовался сервер, мб. хранение было с диффами. Как всякие сайтики пикчи хранят? Алсо, у меня Astra Linux, там новый перспективный двухнедельный фреймворк не поставишь.

Прикладного опыта в БД мало, но я теорию знаю + с чатжпт общаюсь, он в sql хорош
Аноним 20/09/23 Срд 08:44:29 #384 №2848631 
>>2848551
Файлы хранятся в облачном бакете, в бд лежит путь к файлу в бакете, бакет с остальным клиентским кодом работает через адаптер
Аноним 20/09/23 Срд 09:03:20 #385 №2848653 
>>2848551
>Блоб хуйня
Дело не конкретно в типе данных, просто из-за внутреннего устройства постгреса невозможно хранить файлы очень большого размера "как есть", он использует под капотом указатель в какое-то очко и там что-то я не помню что. Гугли TOAST если интересно
Аноним 20/09/23 Срд 10:15:31 #386 №2848756 
>>2848551
>базу с данными
>я теорию знаю
>с чатжпт общаюсь, он в sql хорош
Я хз смеяться или плакать.

>И как-то не могу нагуглить типовой нормальный инструмент, чтобы хоть какое-то сжатие было
gzip

>Алсо, у меня Astra Linux
Ты же сам мне позвонил. Все пока.
Аноним 20/09/23 Срд 13:44:35 #387 №2849013 
Записываю разом много строчек в таблицу постгри. Перед записью дропаю индексы и после - снова их создаю чтоб запись резче была. Это норм тема? Или хуйню делаю?
Аноним 20/09/23 Срд 14:16:11 #388 №2849063 
>>2849013
Давай я за тебя погуглю
https://stackoverflow.com/questions/13700575/is-a-good-practice-to-disable-indexes-before-insertion-of-many-records-on-sql-se
Аноним 20/09/23 Срд 14:42:17 #389 №2849098 
>>2849063
>погуглю
Бумер, плез. Гугл это прошлый век, сейчас все ГПТ-ИИ юзают
Аноним 20/09/23 Срд 20:29:17 #390 №2849562 
1695230955156.jpeg
>>2848756
Пукнул в воду. Я для сдачи не своих лаб по mysql вечер посидел с чатжп, вполне эффективно.

Гзип не решит проблему фрагментации, когда много маленьких файлов лежит. Хорошо самому доводить объем данных до например мегабайта и уже потом сжимать.

>>2848653
Да, я понимаю, что блоб то работает, но он немного не для того. И мне не нравится, что 90% массы базы будет состоять из пикч, которые толком не обязательны.

>>2848631
Не, система закрытая, без всяких облаков. Да и вопрос мой связан с внутренней архитектурой этих облаков.

Я не верю, что какой-нибудь Яндекс или гугл картинки держат тупо файлопомойкой на дисках. Можно искать схожие данные, особенно две одинаковых пикчи с разным сжатием (из сравнить легко по спектру), чтобы хранить только одну из них. Все ради экономии памяти.

Баз данных много, даже чересчур, а опенсорс инструментов по хранению тех же изображений как-то не очень
Аноним 20/09/23 Срд 20:58:18 #391 №2849595 
>>2849562
>вечер посидел
Звучит авторитетно, заваливаю ебало.

>Можно искать схожие данные, особенно две одинаковых пикчи с разным сжатием
Можно. А когда запрос на картинку пришел че делать? Разжать надо получается. А где? На своем проце или в браузере? Поэтому так ебутся со всякими форматами пикч webp, heif. Чтобы блядь расшифровкой занимался пользователь.

Архиватор делает все что тебе надо, хитрожеппо сжимает шакалов по умным алгоритмам. Так хули нет-то? Да потому что нужна ДОСТУПНОСТЬ. А железо для хранения уже лет десять как нихуя не стоит.

Винт на терабайт стоит дешевле, чем твое время потраченное на гуглинг несуществующей хуйни.
Буквально. Там выше писали про вакансию на 320к. Зп как раз под уровень подобной задачи в условном хуяндексе. 2к в час. Два часа = винт на терабайт. Сколько надо в хуяндексе народу на создания такого алгоритма/сервиса? Пол года и команда? Сколько железа можно на эти бабки купить? И на рэйды хватит с бекапами и на благотворительность останется.
Аноним 20/09/23 Срд 23:49:44 #392 №2849714 
>>2849562
> Баз данных много, даже чересчур, а опенсорс инструментов по хранению тех же изображений как-то не очень
Ты не понимаешь, что у крупных сервисов через одного такие инструменты. Это вовсе не уникальная задача, можно в интернете разные описания найти.

Если у тебя один запрос в час, то вообще нет смысла выбирать. Более очевидные факторы учитывай, вроде того, есть ли у клиентов доступ к системе мимо единственного соединения с базой данных, и того, как авторизация всего этого хозяйства должна быть устроена. Если запросов достаточно много, предполагается, что ты знаешь, какие циферки способен выдать тот или иной вариант сервера при правильной настройке, есть ли пики использования, узкие места в сети. Если объём данных таков, что стоимость инфраструктуры становится ограничивающим фактором, надо думать об удобстве масштабирования и взаимодействия с CDN, которые управляются не тобой.
Аноним 21/09/23 Чтв 10:04:18 #393 №2849911 
Нужна реляционная помоечная ДБ без консистентности, куда я буду срать терабайтами неизменяемых данных.
Что взять?
Аноним 21/09/23 Чтв 10:10:40 #394 №2849914 
>>2849911
Кликхаус мб
Аноним 21/09/23 Чтв 10:13:11 #395 №2849916 
>>2849911
Вообще в целом тебе нужна OLAP базёнка
Аноним 21/09/23 Чтв 11:12:56 #396 №2849963 
>>2849914
>>2849916
Основная нагрузка - поисковая с кучей строк, не агрегации + желательно быстро писать

Ch по обоим критериям не подходит
Аноним 21/09/23 Чтв 12:29:09 #397 №2850053 
>>2849963
Эластиксеч тогда мб
Аноним 21/09/23 Чтв 15:35:28 #398 №2850343 
>>2849963
>желательно быстро писать
Сри значит в Кафку или Эластик
Возможно все-таки тебе нужна колоночная база типо Кликхауза, так и не понял что у тебя за данные и как ты по ним будешь искать
Аноним 21/09/23 Чтв 16:40:14 #399 №2850442 
>>2849911
>Нужна реляционная помоечная ДБ без консистентности
Тебе не нужна реляционная дб.

>куда я буду срать терабайтами неизменяемых данных
Ты не будешь туда срать терабайтами данных.

>Основная нагрузка - поисковая с кучей строк, не агрегации + желательно быстро писать
>>2849916 >>2849914 >>2850053 >>2850343
Все тебе правильно написали. Любая олап хуйня от кликхауса, до эластика.

>Ch по обоим критериям не подходит
По обоим критериям подходит.
Аноним 22/09/23 Птн 11:47:26 #400 №2851275 
Сап. Какой самый простой способ настроить типа репликацию в оракле 19, если ты нюфаг? Раньше юзали 11 версию, там был параметр standby_archive, но в 19 он стал депрекейтед и нихуя не работает.
Оракл стримс это про это? Не обязательно прям на лету синкать базы, достаточно раз в несколько минут каким нибудь скриптом по архивным файлам или типа того... Хуй что нагуглишь блять по этому ораклу
Аноним 22/09/23 Птн 13:24:15 #401 №2851356 
Вопрос на миллион:
У меня в Постгресе в таблице существует индекс уникальности по колонке client_ident. Помогает ли этот индекс в поиске когда ищу по этому полю или же когда джойню с другими таблицами по client_ident? Или он просто для уникальности и никакого повышения производительности не дает?
Аноним 22/09/23 Птн 16:21:04 #402 №2851528 
>>2851356
Я нагулил твой вопрос и первой ссылкой в выдаче был стековерфлоу с ответом
Аноним 22/09/23 Птн 17:46:34 #403 №2851649 
Хлопцы, дивіться, яку річ зробив:

Кароч, у нас есть набор данных который возвращает некая вьюха в постгре gather_view, там джойны и вся херня, довольно тяжелый запрос на самом деле который около 600 мс исполняется. Мне надо по каждому из колонок этой вьюхи (их около 10 штук) сделать distinct и вернуть эти значения на фронт. Короче значения для фильтра. Собственно я чтобы всех переиграть перед запросами distinct рефрешу заранее созданный materialized view:

CREATE MATERIALIZED VIEW mat_gather_view AS SELECT * FROM gather_view
REFRESH MATERIALIZED VIEW mat_gather_view

И кидаю distinct запросы в него

Нормас? Или какая-то херня?
Аноним 22/09/23 Птн 18:20:03 #404 №2851680 
>>2851649
>Мне надо по каждому из колонок этой вьюхи (их около 10 штук) сделать distinct
А нахуя туда кладутся дублирующие записи? Тут определенно кто-то занимается хуйней.

>Собственно я чтобы всех переиграть перед запросами distinct рефрешу заранее созданный materialized view
"Лучше день потерять, потом за пять минут долететь"
Тебе зачем вьюха вообще нужна? Если чтобы было быстро, то ты все равно по сути выполняешь каждый раз её создание с нуля. Плюс с верху время на запросы к вьюхе. Сам себя наебал получается.

Короче. Судя по рассказу происходит какая-то хуйня. Непонятно зачем вьюха вообще. Непонятно почему она именно такая. Если хочешь реальной помощи, то показывай запрос. На создание, на выборку.
Аноним 22/09/23 Птн 18:32:51 #405 №2851690 
>>2851649
Может реально проще отдистинктить запрос сам (т.е. нематериализованную вьюху)
Аноним 22/09/23 Птн 21:20:50 #406 №2851888 
>>2851680
>А нахуя туда кладутся дублирующие записи
Чаво?
У меня таблица (view но сути это не меняет) с данными. Нужен distinct по каждой колонке чтобы эти данные передать на фронт, потому что как юзеру иначе узнать, по какому параметру он может фильтроваться а по какому нет?

>Непонятно зачем вьюха вообще
Потому что у меня есть 2 запроса которые по сути используют эту же вьюху и также запрос на фильтры с distinct про который говорил выше. Мне на каждый такой запрос заново с нуля всю эту хрень писать? Чтоб потом что-то где-то забылось и данные не консистентными на фронт пришли? Или может все-таки лучше заранее создать сурс с данными который будет переиспользоваться?
Аноним 22/09/23 Птн 22:06:16 #407 №2851934 
>>2851888
>Чаво?
Кто засунул в твою view такие данные, что по ним нужно делать distinct? И, главное, зачем?

>Мне на каждый такой запрос заново с нуля всю эту хрень писать?
Телепатов тут нет. Показывай запрос.
Аноним 22/09/23 Птн 22:17:09 #408 №2851951 
>>2851934
>Кто засунул в твою view такие данные, что по ним нужно делать distinct
Блэт, еще раз объясняю: фронтэнд получает некую таблицу - массив строчек. По каждой колонке из этой таблицы он должен иметь возможность фильтроваться - выбирает галочки напротив значений которые нужно включить в запрос. Как же это сделать? Очевидно что в другом запросе фронт должен получить значения для фильтров в каждой колонке. Как это сделать на бекенде?.. Думаю ответ напрашивается сам собой
Аноним 22/09/23 Птн 22:22:38 #409 №2851953 
>>2851951
Пчел. Ты ходишь по кругу. Это ведь ты формируешь содержимое вьюхи. Зачем ты сформировал его так, что тебе нужно делать distinct? Это значит что во вьюхе есть дубли и избыточные данные. Зачем самому себе генерить из воздуха избыточные данные?
Аноним 23/09/23 Суб 21:52:00 #410 №2852831 
sup g
посоветуйте для новичков че-нибудь по sql на русском почитать или посмотреть, основы так скзть
Аноним 23/09/23 Суб 22:57:37 #411 №2852884 
>>2852831
Любой первый попвшийся туториад, который гуглится типа "SQL основы".
Аноним 24/09/23 Вск 10:22:13 #412 №2853170 
94bb56e182091fe14ec51f59b20e39ec.jpg
Крик помощи.

Как зарегаться на сайте оркала на Хуйлостане Пынебабве?
Аноним 24/09/23 Вск 10:25:39 #413 №2853175 
>>2853170
Через VPN.
Аноним 24/09/23 Вск 10:36:46 #414 №2853189 
>>2853175
Пытался через ТОР не получается.
Аноним 24/09/23 Вск 16:20:52 #415 №2853485 
>>2853356
Пошёл нахуй, порашный опущенец-недочеловек. Ты тупой, никчёмный неудачник. Зарепортил.
Аноним 24/09/23 Вск 16:23:19 #416 №2853490 
Вот это огонь
Аноним 24/09/23 Вск 17:16:53 #417 №2853548 
>>2853485
А чо там было? Опять солевой деняк просит?
Аноним 24/09/23 Вск 19:59:33 #418 №2853829 
>>2853170
Зачем? Оракл юзают 50iq мальчики. Тебе то он зачем?
Аноним 28/09/23 Чтв 15:31:41 #419 №2858670 
>>2701507 (OP)
Guyz, идет обычный запрос на UPDATE в постгре в конкретной таблице, апдейтиться каждый аз будет разное произвольное число строк (из-за условия WHERE), в результате этой операции надо узнать сколько строк было заафекчино и соответственно изменилось. Как это с помощью sql сделать?
Есть очевидный подход где я сначала делаю SELECT и посчитаю сколько там таких строк лежит, затем уже UPDATE. Но эт какая-то хуйня
Аноним 28/09/23 Чтв 16:33:53 #420 №2858748 
>>2858670
Почему хуйня? Если делать SELECT FOR UPDATE, вообще фича.
Аноним 28/09/23 Чтв 17:28:27 #421 №2858820 
Надо в postgres создать пользака который может только select-ить данные откуда угодно и фсе. То есть никаких DDL операций и даже никаких update/insert/delete. Как это реализовать?
Аноним 28/09/23 Чтв 17:53:49 #422 №2858867 
>>2858820
GRANT
Аноним 28/09/23 Чтв 19:29:01 #423 №2859006 
>>2858670
RETURNING
Аноним 29/09/23 Птн 12:44:17 #424 №2859634 
>>2859006
Вернет например айдишники всех заафекченных строк, но не РЕАЛЬНО обновленных строк. Это разные вещи
Аноним 29/09/23 Птн 14:07:58 #425 №2859776 
>>2859634
>сколько строк было заафекчино и соответственно изменилось
>айдишники всех заафекченных строк, но не РЕАЛЬНО обновленных строк
Ты еблан?
Аноним 29/09/23 Птн 15:28:46 #426 №2859901 
>>2859776
Ну ней бей, насяльника
Аноним 29/09/23 Птн 15:51:13 #427 №2859912 
шо вы, головы?
Аноним 01/10/23 Вск 08:07:31 #428 №2861751 
>>2848551
В постгре есть Large Objects для этого
https://www.postgresql.org/docs/current/largeobjects.html
Аноним 01/10/23 Вск 13:05:44 #429 №2861980 
>>2861751
Large Objects совершенно точно не для для этого.

Постгрес понятия не имеет что это просто картинка, и делает с данными кучу картинкам нахуй не нужной хуйни. А тебе потом еще и полученные из базы данные обратно в файл перегонять.

Хранить изображения просто в папке на диске гораздо менее затратно, чем таким макаром в базе.
Аноним 02/10/23 Пнд 01:40:21 #430 №2862839 
image.png
Есть одна задачка, не могу догнать решение, реквестирую помощи.
Аноним 02/10/23 Пнд 05:59:20 #431 №2862880 
>>2862839
Сгруппируй по дате, посчитай по кол-ву названий и условие поставь больше 5
Аноним 02/10/23 Пнд 06:00:08 #432 №2862882 
>>2862880
А, бля, там ещё легче. Пиздуй перечитывать теорию тогда.
Аноним 02/10/23 Пнд 06:16:17 #433 №2862886 
>>2862882
Да я уже решил, лол, но и на том спасибо.
Аноним 02/10/23 Пнд 15:45:48 #434 №2863479 
Приветствую уважаемые аноны!
Подскажите пожалуйста, хочу поднять сервак БД в дибью через постгрис, смог сделать локальную бд, но хочу пойти дальше и сделать общедоступным, подскажите куда топать и что почитать, т.к. инфы особо нарыть не смог, либо смог, но объяснение старенькое и половины инструментов тупо нет
Заранее спасибо за ответы!
Аноним 02/10/23 Пнд 15:48:04 #435 №2863486 
>>2863479
1) Ты можешь купить сервак и купить у своего провайдера белый статический ip-адрес, чтобы можно было к твоему домашнему компуперу хоть из сети
2) Ты можешь купить хостинг
Второй вариант очевидно лучше. Потом разматываешь там свою БД
Аноним 02/10/23 Пнд 15:52:37 #436 №2863497 
>>2863486
Попробую пойти по первому варианту, позже отпишусь об успехах
спасибо
капчаневалидна
Аноним 02/10/23 Пнд 17:10:22 #437 №2863598 
изображение.png
изображение.png
изображение.png
Почему не пашет? Всё же правильно делаю, по синтаксису, нужный столбец title обозначен как VARCHAR с максимум 255.
Аноним 02/10/23 Пнд 17:17:27 #438 №2863608 
>>2863598
Возможно названия полей не нужно заключать в кавычки
Аноним 02/10/23 Пнд 17:23:13 #439 №2863614 
>>2863608
Пробовал, всё равно ту же ошибку выдаёт. Использую OpenServer, норм софт? Емнип, кавычки не играют в sql критической роли, как в других ЯП.
Аноним 02/10/23 Пнд 17:25:58 #440 №2863618 
image.png
>>2863598
1 секунда в гугле и уже видно что у тебя синтаксис кальный
Аноним 02/10/23 Пнд 17:41:15 #441 №2863654 
изображение.png
изображение.png
>>2863618
Что так, что сяк не пашет, я не троль, просто удача не на моей стороне. С начала пытался как все белые люди через докер и pgAdmin делать БД, но она банально не заводиться, чтобы ты не писал в config.env и как бы не настраивал контейнер.
Аноним 02/10/23 Пнд 18:08:38 #442 №2863686 
>>2863598
https://stackoverflow.com/questions/1992314/what-is-the-difference-between-single-and-double-quotes-in-sql
Читай всё, затем читай документацию конкретно к своей БД.

Надеюсь, база у тебя создана и доступ пользователя есть.
Аноним 02/10/23 Пнд 18:12:02 #443 №2863689 
>>2863686
А дк внатуре. ` это ", а должно быть '
Аноним 02/10/23 Пнд 18:19:44 #444 №2863693 
изображение.png
изображение.png
>>2863689
>>2863686
Благодарю за ваши ответы. Мне это помогло.
Аноним 02/10/23 Пнд 18:20:50 #445 №2863694 
И ещё, вот эти `ковычки` пишет сама система, поэтому я думал, что правильнее использовать их, а вот оно как на самом деле оказалось.
Аноним 03/10/23 Втр 14:14:51 #446 №2864573 
>>2863694
Кажется, проблема в том, что ты начал с интерфейса со свистелками и перделками, в который ты вбиваешь магические слова, не понимая, что они значат, что должно происходить, и что не так.

Возьми локально запусти и в голой консоли голым текстом вбивай запросики, смотри, что происходит, если ты в чём-то ошибаешься, и так далее.
Аноним 04/10/23 Срд 14:56:35 #447 №2865726 
Пагни, не могу найти ответ - можно ли делать в Транзакт SQL Alter table с переменными без использования динамики?
Задача проста - пишу скрипт типа
Declare @NewC Varchar='QWERTY';
ALTER TABLE [test]
ADD
@NewC VARCHAR(255);
Естественно выдает ошибку.
Гугление нихера не выдаёт.
Аноним 04/10/23 Срд 17:11:41 #448 №2865913 
>>2865726
Ты можешь внятно изъясняться?
Что такое "Транзакт"? Что значит "с переменными без использования динамики"?

Чем тебе не нравится стандартный подход с выполнением строки? https://dbfiddle.uk/SlCM4724
Аноним 04/10/23 Срд 19:31:32 #449 №2866125 
>>2865913
Протыки микрософтовские так свой вариант процедурного серверного sql в MS SQL Server так называют.
Аноним 04/10/23 Срд 21:05:08 #450 №2866259 
Пацаны.
Есть запрос примерно такого вида

insert into table1(
num1,
num2,
secret_num3.
name,
typeId
)
values(
(SELECT min(t1.num1) FROM (((SELECT num1 from table1) union (SELECT 1 as num1)) as t1 JOIN table1 as t2 on t2.num1 = t1.num1 + 1 WHERE t2.num1 = null and t1.num1 > 2),
(SELECT min(t1.num2) FROM (((SELECT num2 from table1) union (SELECT 256 as num2)) as t1 JOIN table1 as t2 on t2.num2 = t1.num2 + 1 WHERE t2.num2 = null and t1.num2 > 257),
(SELECT min(t1.secret_num3) FROM (((SELECT secret_num3 from table1) union (SELECT 1024 as secret_num3)) as t1 JOIN table1 as t2 on t2.secret_num3= t1.secret_num3+1 WHER t1.secret_num3 > 1025),
'Ivan',
(SELECT id from types where name = "Admin" LIMIT 1)
)

Так вот. С ним есть пара проблем.

1. Он выполняется медленно. Даже на не самой большой базе. Всего 100к записей - уже секунду выполняется.
2. Я не представляю как его можно распаралелить, чтобы можно было сразу из нескольких потоков эту бяку делать.

Как ускорить вот это вот, если индексы уже есть и судя по плану - в них вроде как БД лезет.
Аноним 04/10/23 Срд 21:58:11 #451 №2866329 
image.png
>>2866259
В чём смысл юнионить хуйню с t2.num2=256, если ты потом делаешь WHERE t2.num2 = null? У тебя эти 256 сбреются
Аноним 04/10/23 Срд 22:06:07 #452 №2866336 
>>2866329
Я хуйню написал там алаяс на t1. Но он сбреется тоже так как WHERE > 257. Короче как будто хуйню там реально написал видно же. Подробностей не будет я пивка ёбнул лень думать
Аноним 04/10/23 Срд 22:07:06 #453 №2866338 
>>2866259
Ещё ты должен знать что индексы тебе тут не помогут. Индексы наоборот ЗАМЕДЛЯЮТ инсерты
Аноним 04/10/23 Срд 22:12:53 #454 №2866349 
>>2866259
Короче. Судя по тому что я увидел все юнионы из вложенных таблиц которые ты собираешь надо тупо удалить. Они ни для чего. Это во-первых
Во-вторых самое медленное в данном запросе это абсолютно точно JOIN. Ты джойнишь таблицу саму на себя по +1. Я бы на твоём месте заюзал LAG() если или аналог для твоего языка. В целом видно что запрос какой-то ебанутый но реально мне очень лень думать сейчас
Аноним 04/10/23 Срд 22:14:13 #455 №2866350 
В-третьих оптимизатор явно сам разобрался но тебе всё-таки лучше вынести хуйню которая LIMIT 1 в конце в WITH
Аноним 04/10/23 Срд 22:16:29 #456 №2866353 
>>2866259
WHERE t2.num = null тоже долбоёбизм кстати. У тебя там INNER JOIN, значит уже не может быть t2.num = null никак, это лишнее. И вообще я думаю ты меня сейчас затралил этим запросом потому что я щя посижу и ещё найду до чего доебаться
Аноним 04/10/23 Срд 23:30:10 #457 №2866444 
>>2866259
Бля, какая же дрисня. Это мускуль что-ли? Пиздец без CTE живется хуево.

>on t2.num1 = t1.num1 + 1
>WHERE t2.num1 = null
t2.num1 равно null только если t1.num1 равно null, потому что только null + 1 равно null. Нахуя для такого результат вообще джойнить вопрос риторический.
Признавайся, ты ебалом по клавиатуре катался, а потом притащил эту дрисню сюда?
Аноним 04/10/23 Срд 23:40:44 #458 №2866479 
>>2866444
в mysql есть CTE.

читать чужие запросы я, конечно, не буду.
Аноним 04/10/23 Срд 23:44:32 #459 №2866491 
>>2866479
Это в восьмой версии. Только её никто не использует. Предпочитают старый, проверенный кал.
Аноним 04/10/23 Срд 23:48:46 #460 №2866499 
>>2866491
пошол вон изучать что там в dockerhub под меткой latest
Аноним 05/10/23 Чтв 06:18:37 #461 №2866672 
>>2866329
>>2866349
1. Смысл юниона в том, что таблица может быть изначально пустая, а делать отдельный запрос для случая если таблица пустая - не хочется.
2. Джоин на самого себя + 1 - нужен чтобы найти пропуск.

Т.е. вот имеем записи

(1,256, 1024, "Petya", 2)
(3,258, 1026, "Kolya", 2)

А этой вот ебаниной - должны получить
(2, 257, 1025, "Ivan", 1)


>>2866353
Тут уже я проебался. Там лефт джоин должен быть.

>>2866444
Я по памяти восстановил запрос который вызывает у меня попоболь своей медленностью.
Аноним 05/10/23 Чтв 11:35:44 #462 №2866851 
>>2866672
>Я по памяти восстановил запрос который вызывает у меня попоболь своей медленностью
Ладно. Предположим что CTE у тебя нет, запроса у тебя нет, ты еблан и нихуя не понимаешь что происходит.

1) Мудень, почитай в чем разница между UNION и UNION ALL. UNION сканирует и сортирует всю таблицу, потому что ищет дубли с добавляемыми строками.

2) LEFT JOIN делает x2 к размеру твоей таблицы в памяти. Было 100к, стало 200к.

3) Вся вышеперечисленная херня происходит НЕСКОЛЬКО РАЗ.

Что можно сделать.
0) Переписать эту дрисню на нормальный SQL. С CTE и оконными функциями. Сейчас не дветыщиседьмой.

1) Избавиться от LEFT JOIN. Там у тебя конкретная ебанина написана. Как эффективно искать пропуски гуглится за три секунды.

2) Объединить все группировки в один подзапрос. А там группировки ага. Если написал только аггрегирующую функцию, но не написал GROUP BY группировка все равно есть.

3) Написать процедуру, которая будет работать не со всей таблицей, а с небольшой пачкой. И дергать её сколько надо раз.
Аноним 05/10/23 Чтв 16:07:58 #463 №2867303 
А есть у кого под рукой видео или статья, где по простому объясняется, как работать с джоинами? Нихуя не понимаю из тех материалов , что в топе гугла
Аноним 05/10/23 Чтв 16:16:37 #464 №2867323 
>>2867303
Ты параллельно пока материалы смотришь сам потыкайся. С практикой сильно понятнее
Аноним 05/10/23 Чтв 17:04:10 #465 №2867398 
bc0c8ba4d12051502a68bade9bba4bc5.png
>>2867303
>Нихуя не понимаю
На завод не предлагаю, там надо понимать.
Пиздуй лук в пятерочке раскладывать.
Аноним 05/10/23 Чтв 18:53:14 #466 №2867514 
>>2867303
В 98% случаев юзаются только inner join (он же просто join) и left join. Тыкай в первую очередь их.
Аноним 06/10/23 Птн 17:08:08 #467 №2868537 
Подскажите как найти работу чтобы писать и оптимизировать хранимки всякие.
Есть 3 года опыта на MSSQL с хранимками ебанутыми, понимание блокировок, уровней изоляции транзакций, реляционного исчисления, умею оптимизировать всякую хуйню вроде неплохо, но можно было бы получше подготовиться.
1) Как называется эта профессия?
2) К чему готовиться на собесах?
Аноним 06/10/23 Птн 18:11:38 #468 №2868679 
image.png
>>2863598
Лучше писать как на пикриле, будет понятнее что происходит и меньше ошибок, плюс можно легко комментировать строки или подцепить вниз ещё одну запись через UNION ALL.
Аноним 10/10/23 Втр 16:17:20 #469 №2873307 
>>2867398
> На завод не предлагаю
Я с завода только....
Аноним 10/10/23 Втр 23:34:00 #470 №2874040 
Сап, двачик, помоги советом, пытаюсь ли натянуть сову на глобус или нужно продолжать копать?

Есть таблица, в ней id записи, название сервиса и время создания записи
Нужно делить записи на утро и вечер, группировать по названию сервиса и возвращать на фронт
Подскажи, как делить на утро и вечер?
Аноним 10/10/23 Втр 23:49:12 #471 №2874046 
>>2874040
Во многих СУБД есть функции для работы с датами и временем и условные выражения через CASE WHEN. В зависимости от того, что конкретно тебе нужно, можешь написать выражение с проверкой вхождения времени в диапазоны, принимаемые за утро или вечер.
Аноним 10/10/23 Втр 23:49:34 #472 №2874047 
>>2874040
Кейсом?
Аноним 11/10/23 Срд 00:33:47 #473 №2874077 
>>2874040
>Нужно делить записи на утро и вечер
Тут важный что ты имеешь ввиду под "делить".

1) Если нужно просто обозначить какая запись утро, а какая вечер, то какого хуя это должно делаться в SQl вообще? Они там на фронте сами не могут решить какое время утро, а какое нет? Зачем для этого логику в базу тащить?

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

О том как это непосредственно сделать пацаны все объяснили >>2874046 получаешь из таймстампа часы extract(hour from field) и потом с помощью CASE WHEN решаешь что этот час означает. Но повторюсь, это логика приложения в базе. С какого хуя хранилище данных должно вообще знать который час утро, а какой не утро? В него либо приходит время сразу с указанием что это утро, либо выходит время, а утро ли это вы уже сами интерпретируйте.
Аноним 11/10/23 Срд 11:40:00 #474 №2874349 
>>2874077
>>2874047
>>2874046
Спасибо!! Все-таки сову на глобус натягиваю
Аноним 11/10/23 Срд 16:14:21 #475 №2874798 
>>2874077
Но внезапно селект вхере тайм офдэй = утро таки будет быстрее чем селект с вытаскиванием и сравнением часа (сохраняться таймофдэй естественно должен приложением при инсерте)
Курсач Саня 12/10/23 Чтв 14:20:50 #476 №2876144 
Здравствуй, двач, мне задали курсач: сделать сайт, прикрутить БД и донаты. Подскажите, пожалуйста, чем лучше воспользоваться, какую БД выбрать, какой хостинг, можно ли опубликовать тупо в gitHub? Какие гайды стоит посмотреть?


Всем ответившим спасибо.
Аноним 12/10/23 Чтв 14:48:14 #477 №2876195 
>>2876144
> какую БД выбрать
Для курсача без разницы, хоть Sqlite бери. Дефолтное решение - постгрес.
> какой хостинг
Локалхост.
> можно ли опубликовать тупо в gitHub
Нет, там только статика
> Какие гайды стоит посмотреть
Любой, который тебе будет понятен.
Аноним 12/10/23 Чтв 15:50:32 #478 №2876252 
>>2876195
Спасибо, анон, попробую так сделать
Аноним 12/10/23 Чтв 15:54:13 #479 №2876261 
>>2876144
>Курсач
>Какие гайды стоит посмотреть?
Бля, а в шараге в которую этот курсач надо сдать, совсем с гайдами тухло? Я слышал есть такие "гайды" парами называются, это в 2к23 не модно уже?
Аноним 12/10/23 Чтв 16:20:03 #480 №2876308 
>>2876261
Это никогда не было модно, сычуш, вспомни, ты же один ходил на эти гайды и потом курсачи всем делал
Аноним 12/10/23 Чтв 17:02:23 #481 №2876388 
>>2876308
Я еще помню, там на парах всегда сидит такой невзрачный хуй. Это тот самый хуй, который потом будет оценивать твой курсач.

Так вот, если немного пробздется от солей, пивандепалы, дотки или чего ты там вместо пар употребляешь. То можно догадаться что этот, на первый взгляд совершенно бесполезный хуеплет, гораздо лучше каких-то рандомов с двачей знает как должен быть сделан курсач, где он должен хоститься, что и как кнему должно быть прикручено и какая бд должна там использоваться.

Пиздец просто, ты бы блядь еще пришел сюда спрашивать какая у твоего курсача тема.
Аноним 12/10/23 Чтв 18:48:35 #482 №2876505 
>>2876388
Во, у сычуши флешбеки пошли, вспомнил значит и не будет больше нести хуйню про моду
Аноним 15/10/23 Вск 00:44:01 #483 №2879307 
Тут такое дело, я вообще бэкенд осваиваю и столкнулся с проблемой:
-- Установил PostgreSQL последний стабильный
-- Установил pgAdmin последний
-- В pgAdmin создал сервер, подключаюсь к нему, приложение с ним взаимодействует, всё хорошо
-- Мне нужно создать ещё один сервер на другом порту, создаю, при попытке к нему подключиться - connection timeout expired

В чём дело может быть? Всё работает на localhost, свободные порты проверял, в конфиге аж две переменные port сделал, не работает
Аноним 15/10/23 Вск 02:01:53 #484 №2879336 
>>2879307
Ты просто запутался в терминах.
1) Сервер с базой = пк на котором установлен и запущен постгрес. Собственно ты это сделал со своим пк. Поэтому ты можешь обратиться к своему постгрес серверу через localhost.

2) В пгадмине создаются не "сервера", а "подключения к серверам". Так что когда ты выбираешь "create server" ты на самом деле просто пытаешься подключиться к какому-то уже существующему серверу используя вбитые данные. Очевидно, что если ты новый сервер (пк из первого пункта) не создавал, никуда оно не подключится.

С этим надеюсь понятно. Теперь к тому что ты на самом деле пытаешься сделать и нужны ли тебе вообще несколько серверов.
1) Если тебе просто нужно две независимые базы, то просто создай две базы на одном сервере и два подключения к ним в пгадмине. В настройках подключения ты прописываешь название базы.

2) Если тебе действительно нужно несколько баз с разными портами, то используй виртуальные машины. В частности докер. Там можно за пару минут поднять хоть десять контейнеров с постгресами на нужных портах.
Аноним 18/10/23 Срд 00:31:23 #485 №2883116 
>>2701507 (OP)
Как методами только postgres и pl/sql сделать динамический sql следующего вида:

У меня запрос по типу SELECT name FROM customers WHERE email = %s

email в виде строки подставляется извне, в некоторых случаях он может быть null, в таком случае условие WHERE игнорирутеся и совершается поиск по всей таблице customers
Аноним 18/10/23 Срд 01:28:49 #486 №2883129 
>>2883116
Если у вас там вместо параметризованных запросов васянская конкатенация строк, как у говнокодеров на PHP из нулевых, надо будет городить что-то типа такого: https://stackoverflow.com/a/29617481
Аноним 18/10/23 Срд 02:11:58 #487 №2883151 
>>2883116
Обычная хранимая функция, которая принимает строку с мылом https://dbfiddle.uk/0sviVzxJ .

>>2883129 Тут не нужно никакой конкатенации.
И кстати для базы ЛЮБОЙ sql не из хранимки это просто "строчка", которую еще надо распарсить и понять что это на самом деле.
Аноним 18/10/23 Срд 08:47:38 #488 №2883226 
image.png
>>2883151
Ну у меня как бы и так функция, но есть нюанс:
если name это null то мы НЕ используем условие WHERE

Я намутил следующую оптимизацию, в WHERE у меня не проверка равенства идет в LIKE. В случае null мы в начале превращаем его в '%' следовательно условие LIKE везде будет TRUE (колонка не нулабельна)
Аноним 18/10/23 Срд 09:57:00 #489 №2883286 
>>2883226
>проверка равенства идет в LIKE
LIKE медленная параша, не используй без крайней необходимости.
Гораздо проще свести выражение к тавтологии с помощью COALESCE. column = COALESCE(parameter, column) , то есть если параметр равен NULL, то сравнить колонку с собой https://dbfiddle.uk/yR14AVU7 . Оптимизатор такие простые тавтологии знает и сам условие отбросит.

Однако то что ты пытаешься сделать это очень плохая идея. Возвращать всю таблицу это самое хуевое что можно придумать.
В идеале вообще запретить использовать null https://dbfiddle.uk/S1E8YUHI .
Или пометить функцию как STRICT https://dbfiddle.uk/58c4F8rh тогда она с NULL просто выполняться не будет. Как по мне вариант с явным запретом лучше.

В крайнем случае можно возвращать не таблицу, а курсор https://dbfiddle.uk/qe9cXGgi , чтобы потом фетчить помаленьку. Гарантировано никто не попытается прочитать условный миллион пользователей и положить нам базу.
Аноним 18/10/23 Срд 10:34:38 #490 №2883318 
>>2883286
Во, спс, как раз то что искал. Забыл пр оcoalesce
Аноним 18/10/23 Срд 10:38:33 #491 №2883321 
>>2883286
Вообще про одну таблицу я сказал для упрощения, чтоб вам было легче меня понять
У меня в реале не таблица, а pl/sql функция которая возвращает результат query запроса с несколькими джойнами и условиями where. Так сложилось исторически, поэтому просто выпилить эту функцию не особо получается, надо было реворкать

А фронт получает данные через пагинацию все равно
Аноним 19/10/23 Чтв 17:01:46 #492 №2885152 
Мужички, подскажите как бы выглядел код функции SUM() написанный на самом pgplsql.
Пытался найти это в гитхабе постгреса думая что сами агрегатные функции написаны на нем же, а не на си.
Аноним 19/10/23 Чтв 20:01:14 #493 №2885581 
>>2885152
См. документацию по CREATE AGGREGATE.
Аноним 19/10/23 Чтв 20:08:04 #494 №2885601 
>>2885152

Код SQL-Сервера может быть написан как угодно с совершенно зубодробительными оптимизациями.

Например, так https://github.com/ClickHouse/ClickHouse/blob/8b13b85ea0e059bc5356981c9b675549855dc1b2/src/Storages/MergeTree/MergeTreeData.cpp#L720
Аноним 19/10/23 Чтв 22:01:02 #495 №2885846 
Мальчики, а в постгре когда юзать хеш, когда би-три этот ваш? Все понять не могу
Аноним 19/10/23 Чтв 22:45:08 #496 №2885923 
>>2885846
Как ты вообще прошел алгоритмическое собеседование?
Аноним 19/10/23 Чтв 22:48:38 #497 №2885927 
>>2885846
вообще, лучшена mysql переходи. ведь там нет других индексов кроме btree, тк они по сути и не нужны в OLTP.
Ну да, есть hash, но поддерживается только для движка memory.
Аноним 19/10/23 Чтв 23:20:15 #498 №2885968 
>>2885923
Да как минимум я рядовой бекенд разработчик, а не архитектор бд
Аноним 19/10/23 Чтв 23:50:27 #499 №2886012 
>>2885846
От хэшиндексов больше проблем, чем пользы. Практически всегда нужно юзать B-tree. С хешами ты пососёшь в order by, в сложных условиях фильтров where и при поиске по неселективным значениям. Польза будет разве что в индексе на столбец с рандомными UUID-ами или подобным, и то спорно.
Аноним 19/10/23 Чтв 23:50:51 #500 №2886013 
>>2885927
>mysql
Как там в 2008?
Аноним 20/10/23 Птн 08:34:38 #501 №2886123 
>>2886013
Как там в 1970 с постгресом, ты хотел спросить?
Аноним 20/10/23 Птн 09:50:04 #502 №2886181 
>>2886123
Свинья пытается в перефорс, вы только поглядите!
Аноним 20/10/23 Птн 12:28:56 #503 №2886413 
>>2886181
Не трясись ты так, дыши глубже, любимое пердольное говно у тебя никто не отнимает
Аноним 20/10/23 Птн 14:42:38 #504 №2886632 
image.png
>>2883116
Я тут на досуге придумал более продвинутую концепцию
У нас будет не динамический sql и не функции/процедуры а ДИНАМИЧЕСКИЕ ФУНКЦИИ, то есть тело функции будет определяться в рантайме в зависимости от условий, питон это сделает
Уверен мало кто до меня до такого додумывался
Аноним 20/10/23 Птн 14:58:30 #505 №2886657 
>>2886632
Перед каждым запросом вызывать CREATE OR REPLACE FUNCTION?
Аноним 20/10/23 Птн 15:04:34 #506 №2886666 
>>2886413
>пердольное
Сказала чмоня, контейнер для чьего говна без пердолинга и не накатывается, тем более на архитектуру arm
Аноним 20/10/23 Птн 15:10:41 #507 №2886684 
>>2886657
Нет. Надо делать DROP FUNCTION, тогда и сигнатура может быть динамической
Не благодари
Аноним 20/10/23 Птн 16:40:46 #508 №2886898 
image.png
Братцы, хелпаните с мусклом, вижу у вас тут дискуссии как раз на этот счет.
Поднял себе контейнер мускла, т.к. на проекте у них именно он. Чтобы работало на Убунте пришлось поебаться, вольюмы поменять, вроде завелся, в логах вот такой вот херня как на скрине. Какие-то незнакомые базы гоняют какие-то апгрейды "from version X to version Y" - это шо вообще такое?
sage[mailto:sage] Аноним OP 22/10/23 Вск 23:07:49 #509 №2890447 
ПЕРЕКАТ >>2890446 (OP)
ПЕРЕКАТ >>2890446 (OP)
ПЕРЕКАТ >>2890446 (OP)
ПЕРЕКАТ >>2890446 (OP)
ПЕРЕКАТ >>2890446 (OP)
Аноним 23/10/23 Пнд 07:40:51 #510 №2890693 
>>2886898
Наверное ты поднял не просто "контейнер", а кластер с настроенной репликацией? Это системные базы реплицируются у тебя
Аноним 11/11/23 Суб 23:02:03 #511 №2918303 
Есть тут bi аналитики которых можно помучить глупыми вопросами? На связи тян 24 годика, пытаюсь вкатиться.
@Annellissa
Аноним 26/11/23 Вск 13:49:49 #512 №2937789 
>>2801577
Попробовал
select (n).n1 from (SELECT (SELECT n FROM (VALUES (1, 2)) AS n(n1, n2)))t
и словил ошибку record type has not been registered
чядн?
Аноним 14/12/23 Чтв 13:18:16 #513 №2962954 
изображение.png
Как это исправить в MS SQL?
comments powered by Disqus

Отзывы и предложения