Главная Юзердоски Каталог Трекер NSFW Настройки

Программирование

Ответить в тред Ответить в тред
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 510 60 200
Универсальный баз данных тред #6 /sql/ Аноним 03/08/22 Срд 23:47:36 2424142 1
изображение.png 950Кб, 1351x885
1351x885
изображение.png 2793Кб, 1951x2560
1951x2560
Прошлый >>2336742 (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/watch?v=EHvzvwAv7RU&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/
- MongoDB: https://metanit.com/nosql/mongodb/


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

Q: Что лучше, SQL или NoSQL?
A: По задачам.

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

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

Поехали!
Аноним 04/08/22 Чтв 00:10:34 2424156 2
Аноним 04/08/22 Чтв 02:41:31 2424206 3
Аноним 04/08/22 Чтв 16:12:33 2424689 4
>>2424156
не у всех постгрес где есть generate_series для дат

Аноним 04/08/22 Чтв 17:16:21 2424731 5
>>2424689
Но в этом playground можно все потестить же
Аноним 04/08/22 Чтв 18:39:56 2424799 6
Screenshot 2022[...].png 220Кб, 452x362
452x362
>>2424156
Бананы, ну что, даже подсказки не будет?
Ебаанииии рёЁт, с кем я на одной борде...
Аноним 04/08/22 Чтв 18:49:20 2424805 7
>>2424799
Это нетипичная задачка для скл, надо быть ебать знатком, чтобы через жопу извернуться.
Если бы это был какой-то цсв, то решается в десять строчек и можно быстро молотить гигабайты, а тут хуй знает.
Аноним 04/08/22 Чтв 18:50:25 2424808 8
>>2424805
Можешь молотить построчно из базы, но это хуевое решение, канеш.
Аноним 05/08/22 Птн 08:48:50 2425004 9
Аноним 05/08/22 Птн 15:25:44 2425296 10
image.png 30Кб, 598x239
598x239
Есть такая сущность как Location - она объеденяет в себе коды вот этих 3х таблиц. Как это лучше всего представлять в Базе? Как View?
Это не самостоятельная сущность - полностью зависит от этих трех
Аноним 05/08/22 Птн 15:55:15 2425345 11
Аноним 05/08/22 Птн 21:37:03 2425812 12
>>2425345
select case when ... then ... else ... end from yourtable
Аноним 05/08/22 Птн 21:46:02 2425821 13
Пацаны, помогите долбоебу, не вдупляю, как это правильно решить.
У меня есть таблица с некими периодами со значениями, они могут накладываться друг на друга.
Нужно в итоге посчитать суммы этих значений во времени.
Ну типа
А-C - 1
B-D - 2
Результат
A-B - 1
B-C - 3
C-D - 2

Я короч придумал как это решить https://www.db-fiddle.com/f/8DoGuaWbJC8yeLwNxUadHg/0
но меня терзают смутные сомнения, что сделал это по-уебански совсем, и очень неэффективно.
Как сделать это правильно?

---

Моё решение такое, я подумал что логично будет сначала просто разбить всё множество периодов на отрезки.

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

Ну а имея отрезки уже можно было джойнуть их с периодами и уже агрегацией посчитать суммы, изи.
Аноним 05/08/22 Птн 22:40:26 2425864 14
>>2425821
join по периодам + пропорциональный расчёт занчений на пересечении
Аноним 05/08/22 Птн 22:50:54 2425868 15
>>2425864
Не понял. Что значит пропорциональный расчет? Можешь кодом?
Аноним 06/08/22 Суб 00:38:48 2425943 16
>>2425868
нет, кодом только за деньги
ну смотри если у тебя разные отрезки времени, тебе же надо будет порезать по ним. Например первый 14:00-14:30 второй 14:10-14:20, соответственно пересечение 20 минут, а не 30. Делаешь джоин потом при помощи iif считаешь begin/end
Аноним 06/08/22 Суб 01:23:29 2425963 17
Насколько оптимальное (и безопасно) предпочесть raw SQL запросы методам ORM интефрейса (django ORM)?
Аноним 06/08/22 Суб 02:43:00 2425980 18
>>2425963
С ORM надо в деталях знать механизм его работы вплоть до чтения его исходников, читать книги на тысячи страниц, знать про проблемы типа N+1, очень внимательно и осторожно описывать конфиг ORM и все сущности, очень хорошо знать SQL, чтобы смотреть сгенерированные запросы и мочь при их неоптимальности переписать на нативный SQL (примерно в половине случаев).
Вообще, хуй знает, для кого придумали ORM, они не решают проблем, которые на них возложены. Работа с базами данных только усложнилась.
Аноним 06/08/22 Суб 06:53:26 2426027 19
>>2425963
Если нравиться быть обсосанным на кодревью, иметь проблемы с миграцией и фейлить тесты безопасности, смело бери raw sql
Аноним 06/08/22 Суб 09:32:34 2426059 20
>>2426027
Как тебе ORM с миграциями помогает? Таблицу с айдишниками запросиков, проверяемую на старте, ты можешь и без ORM сделать. А в экранизацию значений можешь даже самый паршивый драйвер/адаптер на %языкнейм%.
Аноним 06/08/22 Суб 14:23:45 2426227 21
>>2426059
Это как вебмакакаи, которые выучили модный фреймворкнейм и не знают, как без него что-то сделать.
Аноним 06/08/22 Суб 15:00:29 2426247 22
>>2426227
Кабану интересно только чтобы сделать с или без, а как ты сделал интересно только твоей мамке.
Аноним 06/08/22 Суб 15:05:54 2426251 23
>>2426247
Долбоёб, к чему ты это высрал? Тут обсуждение технологий, а с кабанами съеби в МВП-тред.
Аноним 06/08/22 Суб 15:27:46 2426273 24
>>2426251
А ты в технологиях разбираешься? ORM технологичне, миграции не нужны с ORM, так они на лету генерятся из Entity обычно. ORM не запрещает raw запросы строчить, когда реально нужно.
Аноним 06/08/22 Суб 16:17:05 2426308 25
>>2425943
А, типа прям империативно кодом. Не, эт читерство, так можно вообще всё вытянуть в приложение и уже нормальным ЯПом посчитать мб даже эффективнее всего будет, чтобы базу не нагружать кстати. я хочу прям sql'ем, декларативно.
Аноним 06/08/22 Суб 16:40:20 2426324 26
>>2425963
Значится, это очень холиварный вопрос.
Концептуально нам как программистам не хочется писать plain sql в бизнес-логике, потому что во первых эта логика засирается всякой sql-специфичной херней (ну там вместо одного логического upsert иногда приходится делать if !select then insert else update), а во вторых, иногда приходится захуяривать всякие промежуточные рантайм кеши и прочую особую логику и когда у тебя sql уже расползся по всему коду, то как-то задекорировать это дело становистя нереально.
Короч, хочется, чтобы бизнес-логика содержала просто действия вида "найди", "укради", "роди", а вся базоспецифичная хуйня тусила отдельно.

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

Но некоторые пошли дальше и сказали, что типа а давайте вообще запросы никакие не писать, у нас будет одна универсальная либа, в которой мы будем описывать сущности и связи между ними и что мы хотим найти, а эта либа сама будет нам всё находить, сама за нас понимать, какие запросы сделать и всё такое.
И вот это всё звучит хорошо, но довольно быстро превращается в пиздец, потому что эта ORM просто становится ещё одним промежуточным языком и если раньше ты должен был знать только твой ЯП и SQL, то теперь приходится знать ЯП->ORM->SQL. А все базы, заразы такие, очень специфичны, и для эффективной работы требуют кучи всяких рюшечек, да и просто поддерживать все фишки всех бд ни одна орм нормально не может, в итоге поддерживая только какую-то общую базу, в результате чего, какую бы бд ты ни выбрал, тебе всё равно придется писать на generic sql, используя уникальные возможности бд на 20%.
Ну и про эффективную работу, тебе придётся досконально знать то, как работает твоя ORM, чтобы заставлять её каждый раз генерировать эффективный код для базы.
В итоге ты ебешься со всеми этими сложностями и такой думаешь "нахуй мне вообще этот комбайн, просто напишу плейн запросы и норм будет".
Но это тоже не вся правда, потому что в итоге тебе придется велосипедить и колхозить многие вещи, которые в орм уже сделаны и так или иначе продуманы.

В-общем, орм'ки хороши для формошлепства и всяких несложных запросов, CRUD'ов и тому подобного, а все сложные вещи лучше всего всё же писать руками в отдельном слое.

А, и да, Hibernate это какое-то монструозное говно, на которое без ужаса смотреть нельзя, если что, то бывают орм попроще и посимпатичнее.
Аноним 06/08/22 Суб 17:30:38 2426353 27
>>2426308
причём тут приложение? SQL умет в if.
Просто после джоина у тебя будут отрезки и надо найти их пересечение в рамках строки, это делается через if
если конкретно в постгре нет имплементации можно тоже самое через case сделать
Аноним 06/08/22 Суб 19:31:20 2426440 28
>>2425004
Ну ты и пчел.. Какую-то хуйню сделал))
Аноним 06/08/22 Суб 19:33:11 2426441 29
>>2425821
Почти как у меня выше
Аноним 06/08/22 Суб 19:39:20 2426448 30
>>2425943
> кодом только за деньги
> предлагает неправильное решение
ммм
Аноним 06/08/22 Суб 20:50:35 2426532 31
>>2426059
Ну разве орм мне не поможет, если я во время миграции поменяю имя колонки в табличке? Ели рав-скл, то мне придется во всех запросах менять имя колонки.
Или удалю колонку.
Аноним 06/08/22 Суб 20:55:01 2426537 32
>>2426532
С raw SQL у тебя есть такое достижение языков программирования, как повторное использование кода. Ты пишешь репозиторий, который знает, как работать с этой таблицей, а во всех остальных местах тупо этот репозиторий используешь, инкапсулировав уровень доступа к базе данных, и если захотел переименовать/удалить столбец, то только в этом репозитории и переименовываешь/удаляешь.
Аноним 06/08/22 Суб 21:05:47 2426545 33
изображение.png[...].png 82Кб, 225x225
225x225
>>2426448
кабан кабаныч, а никто и не обещал что будет правильно
Аноним 06/08/22 Суб 21:14:21 2426553 34
>>2426440
Да, действительно, не учёл что может быть больше 1 отрезка подряд, тогда использовать row_number() вместо lead, и в конец ещё подсчёт суммы.
Аноним 06/08/22 Суб 21:18:42 2426560 35
>>2426537
Ну да. Но с орм мне придется поменять только модельку и написать чендж сет, а с рав-скл минимум поменять половину методов в репошке.
А если у меня есть методы, делающие селекты из нескольких табличек, то и в других репошках тоже придется менять поля в рав-скл запросах.
Мы так то билдером запросов пользуемся(жук) с генерацией модельки, который попроще орм(хибера), но все таки не совсем рав скл. И вместо переписывания скл-скриптов надо перегенерить модельку, а иде уже сама подчеркнет, где нужно поменять репошку. Но есть вопросы о хранениии сгенеренного кода. И еще пару мелочей, уже не помню каких.
Аноним 06/08/22 Суб 21:44:24 2426585 36
>>2426553
>>2426545
Решение уже нашли, постить не буду, но то что вы описываете - не ок
Аноним 06/08/22 Суб 22:16:16 2426622 37
Как защитить Бд от взлома,базовые правила
Аноним 06/08/22 Суб 22:22:26 2426625 38
Аноним 06/08/22 Суб 22:29:44 2426630 39
>>2426622
- Параметры всех запросов экранировать, т.е. вместо конкатенации строк везде использовать SqlCommand.Prepare(), PreparedStatement и подобное.
- Включить шифрование соединения с БД.
- Если приложение и логика у тебя в БД, и пользователи подключаются к ней напрямую, то создавать для каждого юзера по схеме, создавать публичные синонимы для хранимых процедур, выдавать гранты, пермишены, настраивать ACL.
- На случай, если уж взломали, строить архитектуру так, чтобы ущерб был минимальным. Пароли хешировать, не хранить все данные в одном месте, вынося данные в другие системы и т.д.
Аноним 06/08/22 Суб 22:31:18 2426632 40
>>2426630
>пользователи подключаются к ней напрямую,
это как без сервера-прокладки?
Аноним 06/08/22 Суб 22:36:35 2426640 41
>>2426632
Да, это называется двухзвенная архитектура. Было популярно в двеяностых-начале нулевых, когда языки для серверной разработки были в зачаточном состоянии, масштабные энтерпрайзные проекты не тянули, так что удобнее всего было вести разработку бизнес-логики прямо в базе данных. Тогда и клиенты были в основном десктопными. Сейчас в основном легаси.
Аноним 06/08/22 Суб 23:42:26 2426704 42
Аноним 06/08/22 Суб 23:44:01 2426705 43
20160205100222f[...].jpg 65Кб, 604x468
604x468
>>2426622
Пользоваться ORM, а не raw sql
Аноним 06/08/22 Суб 23:46:28 2426707 44
Аноним 07/08/22 Вск 01:03:45 2426747 45
Аноним 07/08/22 Вск 10:32:41 2426892 46
Аноним 07/08/22 Вск 15:38:51 2427072 47
>>2426892
Это когда пишешь SQL-запросы сам вместо того, чтобы за тебя это делал волшебный зумерский фреймворк.
Аноним 07/08/22 Вск 19:19:23 2427452 48
>>2427072
Ты еще расскажи ему про разные типы outer джойнов.
Аноним 07/08/22 Вск 20:37:47 2427531 49
>>2427452
> джойнов
Хуйня без задач, есть WHERE table1.id = table2.table1_id.
Аноним 07/08/22 Вск 20:40:48 2427534 50
>>2427531
тян_прыскающая_газировкой.jpg
Аноним 07/08/22 Вск 21:28:30 2427621 51
>>2427534
Не пользуюсь джойнами, всё через where, код намного понятнее, чем ебля с FULL OUTER RIGHT INNER CROSS JOIN, но брат умер.
Аноним 07/08/22 Вск 21:47:16 2427645 52
>>2427621
Как ты блядь не пользуешься джоинами а только вэрэ? Ты не пользуешься ногами, а только ботинками? Как ты соединишь таблицы без джоина? Соединение таблиц это и есть джоин. Даже если пишешь from a, b where a.id = b.a_id
Аноним 07/08/22 Вск 22:04:54 2427670 53
>>2427645
Не использую синтаксис джойнов, значит, не пользуюсь джойнами. Меня не ебёт, что СУБД у себя внутри построит почти одинаковый план запроса, что и с джойном, и будет выполнять его через один и тот же механизм. Я же не говорю, что пользуюсь регистрами и прерываниями, хотя внутри тоже через них всё работает. Потому что важна только семантика языка запросов.
Аноним 07/08/22 Вск 22:15:06 2427682 54
Аноним 08/08/22 Пнд 08:17:34 2427829 55
в чём различие между window и подзапросами? Зачем нужны эти окна, если есть подзапросы?
Аноним 08/08/22 Пнд 08:21:38 2427830 56
>>2427829
Меньше кода писать в некоторых случаях.
Аноним 08/08/22 Пнд 08:34:20 2427833 57
>>2427682
Дядя Петя, ты дурак?
Аноним 08/08/22 Пнд 08:40:24 2427835 58
>>2427830
и всё? Значит могу на них забить?
Аноним 08/08/22 Пнд 08:43:33 2427836 59
>>2427835
Можешь, но однажды ты наткнёшься на какой-нибудь сломавшийся отчёт, написанный кем-то другим с активным использованием оконных функций, и тогда придётся учить. Да там и учить почти нечего.
Аноним 08/08/22 Пнд 16:01:54 2428187 60
Есть целый набор условий (6 штук), в некой таблице A мы заполняем поле mode исходя из выполнения этих условий (от 0 до 5 соответственно). Это как делать? Через CASE? Там каждое условие ппц объемное и включает в себя подзапросы к другим таблицам121734
Аноним 08/08/22 Пнд 16:03:00 2428191 61
>>2428187
Не говоря уже о том, что после выполнения первого же условия мы должны забить хуй на остальные и заполнить поле mode нужной цифрой, CASE это обеспечивает? Или он всегда исполняет все ветки условий?
Аноним 08/08/22 Пнд 17:35:35 2428284 62
>>2428191
---CASE это обеспечивает?---
Должен.

---Или он всегда исполняет все ветки условий?---
Но зачем спрашивать про специфику работы какой-то языковой конструкции на двачах, ищи в документации по СУБД
Аноним 09/08/22 Втр 12:51:59 2428784 63
Пацаны, вытаскиваю из таблица строку - список параметров, надо в следующем query сделать проверку по типу:

SELECT name FROM table WHERE mode NOT IN (alpha, beta, zeta)

Строку "alpha, beta, zeta" я как раз и вытащил, но бля, если я просто вставлю ее через питоновское форматирование строк в мое следующее query то может быть потенциальная инъекция (и тулза bandit не даст гитлаб пайплайну пройти), но если я буду пытаться вставить ее через обычные параметры и ? то постгря неправильно меня поймет - она будет видеть одну строку, но на самом-то деле это не единая строка и 3 разных параметра
Аноним 09/08/22 Втр 13:51:28 2428818 64
>>2428784
поищи в документации, можно ли вставлять массивы через твою тулзу и как это делать
Аноним 09/08/22 Втр 16:43:17 2429039 65
>>2424142 (OP)
Есть ли способ обновить строчки в таблице по GROUP BY?
Вот мы сгруппировали строки по 2м колонкам: GROUP BY item, address - как внутри каждой такой группы обновить поле start_date, установив максимальную среди всей группы? Чет вроде должно быть просто, select запрос и так ясно как писать, но как из него сделать update блэт?
Аноним 09/08/22 Втр 17:12:01 2429068 66
>>2429039
тебе надо найти записи с максимальным start_date и заапдейтить их?
Аноним 09/08/22 Втр 18:00:21 2429102 67
1608621683364.jpg 16Кб, 479x222
479x222
Аноним 10/08/22 Срд 10:17:39 2429522 68
Парни, вопрос.
Работаю в open panel server, запускаю локальный сервак
При работе с формой поиска бд выдает parse error, смотрю логи апача, а там обычная 408.
Вы уже наверное поняли про что идет речь лол. Буквально месяц назад форма работала. В чем блядь проблема? В какую сторону копать?
Аноним 10/08/22 Срд 14:26:55 2429680 69
Уважаемые sql-господа, есть ли какой-то быстрый способ немного изменить все значения в столбце? Например, там лежали значения: qwerty, Asdf, lk; надо получить: [qwerty], [Asdf], [lk].
Аноним 10/08/22 Срд 14:35:00 2429685 70
>>2429680
update table set value='['||value||']'
Аноним 10/08/22 Срд 14:45:28 2429690 71
Аноним 10/08/22 Срд 15:58:03 2429740 72
Часто вижу что говорят "создать выборку Т из джойнов бла-бла" а потом с этой выборкой Т провести какие-то манипуляции, например сджойнить ее с чем-нибудь еще и отсортировать, как это в рамках sql решается?
Аноним 10/08/22 Срд 16:53:12 2429788 73
>>2429740
Подзапрос? Или ты мудово формулируешь задачу.
Аноним 10/08/22 Срд 17:36:18 2429808 74
>>2429788
Вообще подзапрос, но он может несколько раз переиспользоваться.
Аноним 10/08/22 Срд 17:48:20 2429822 75
>>2429522
Помогите пожалуйста бляди..
Аноним 10/08/22 Срд 17:49:45 2429824 76
Аноним 10/08/22 Срд 17:53:10 2429826 77
>>2429824
И бочку делаю тоже.
Аноним 10/08/22 Срд 17:56:58 2429829 78
>>2429808
Так хранимая процедура же?
Аноним 10/08/22 Срд 18:04:44 2429838 79
>>2429808
Вроде по русски это называется представление, with гугли.
Аноним 10/08/22 Срд 18:16:40 2429850 80
>>2429522
Копать в сторону пхп-треда.
Аноним 10/08/22 Срд 18:48:03 2429878 81
>>2429740
табличные выражения
Аноним 10/08/22 Срд 20:59:02 2430018 82
>>2429850
Типа дело не в базе данных? Спасибо за ответ в любом случае, братишка.
Аноним 10/08/22 Срд 21:34:50 2430055 83
>>2430018
Может и в базе данных, но там сложно получить непонятные ошибки, СУБД либо работает, либо нет. Скорее что-то не так с конфигурацией твоего open panel server, про это здесь никто не подскажет, это проблемы, специфичные для языков программирования, на которых работает приложение, использующее БД,
Аноним 10/08/22 Срд 23:53:12 2430151 84
>>2430055
Да в том и прикол, что на сайте все работало, а потом раз и все, я просто уже не понимаю, где копать, потому что сайт не мой, движок не определить из за клаудфаер защиты, это точно не настройка open panel, это словно магическим образом вываливающаяся ошибка, я настолько нуб что даже не знаю как прогнать форму на ошибки, тупо как посмотреть где она, есть какие то логи апача, но это не то все, мб это специальная ошибка создателей, как ковырять, в каком месте хз. Ну вот допустим как прогнать конкретно форму сайта на ошибки?
Аноним 11/08/22 Чтв 16:14:53 2430592 85
Есть некая "промежуточная" таблица в которой временно храню данные, совершаю над ними манипуляции а потом стираю ее (TRUNCATE).
Проблема в том что после стирания последовательность для айдишников продолжает идти, то есть когда пишем в чистую таблицу новые данные, у нас id начинается не с 1 а с того числа, на котором закончилось. Как это фиксить?
Аноним 11/08/22 Чтв 16:41:53 2430618 86
>>2430592
id берутся из sequence? Какая база, какой тип поля, кто заполняет id?
Аноним 11/08/22 Чтв 17:08:01 2430655 87
Аноним 11/08/22 Чтв 17:47:07 2430702 88
>>2430618
Да из sequence, обыкновенный integer из постгри
Аноним 11/08/22 Чтв 18:04:11 2430726 89
>>2430702
значит секъюенс тоже апдейть
Аноним 12/08/22 Птн 22:46:06 2432171 90
>>2430592
>Как это фиксить?
Прочитать доку к truncate.
Аноним 12/08/22 Птн 22:53:58 2432175 91
>>2430592
После транкейта:
ALTER SEQUENCE tvoy_sekjuens RESTART WITH 1;
Аноним 12/08/22 Птн 22:54:48 2432176 92
>>2432175
Это можно в самом трункейте указать.
Аноним 12/08/22 Птн 22:56:57 2432178 93
>>2432176
Ну допустим.
TRUNCATE promejutochnaya_tablitsa RESTART IDENTITY CASCADE;

Гуглится за 10 секунд блять, хз, зачем он вообще задаёт вопрос и ждёт ответа несколько дней.
Аноним 14/08/22 Вск 20:34:25 2434069 94
16580812830621.jpg 38Кб, 511x367
511x367
Посоветуйте, пожалуйста, книгу про MS SQL где подробно объясняются индексы и уровни изоляции.
Аноним 14/08/22 Вск 21:50:58 2434169 95
А есть книга которая объясняет проще чем дейт введение в системы баз данных?
Мимо нуб
Аноним 14/08/22 Вск 22:09:35 2434188 96
1576483302556.jpg 26Кб, 300x400
300x400
Аноним 15/08/22 Пнд 12:30:44 2434697 97
Как UNION под капотом работает? Просто склеивает результаты разных запросов вместе? Запросы по-прежнему отдельно отправляются?

В одном месте мы селектили данные из таблицы на основании пар колонок item и type а потом отдельно обрабатывали каждую такую группу данных (штук 30-40 таких групп обычно). Подумал что можно выполнить 1 sql запрос и объединить все с помощью Union. Но на локальных тестах не увидел какого-то подъема в производительности. union бесполезен для таких кейсов что ли?
Аноним 15/08/22 Пнд 12:31:23 2434698 98
Аноним 15/08/22 Пнд 12:50:24 2434714 99
>>2434697
он склеивает только результаты с одинаковым типом и количеством колонок.
Т.е. должны быть селекты с одинаковым типом результата
Аноним 15/08/22 Пнд 12:58:20 2434720 100
>>2434714
Ну да, они с одинаковым, ничего не упало. Просто какого-то прироста не заметил. Можно будет еще проверить на тестовой базе 10 миллиона строк но походу результат будет тот же
Аноним 15/08/22 Пнд 13:06:08 2434730 101
>>2434697
Вообще мы тут с пацанами пытались оптимизировать питоновский celery pipeline, там внутри селери-тасков дергается постгря. Думали если уж union не помогает ускориться то можно не каждый раз вытягивать данные из таблицы а 1 раз целиком заселектить всю таблицу и передать эти данные в каждый из тасков, чтобы там уже данные отфильтровать. Но случился нежданчик с брокером - Реббитом:

"PRECONDITION_FAILED - message size 2253095235 is larger than configured max size 134217728"

То есть мы попытались 2 Гига засунуть в 1 месседж Реббита. И я вот думаю - даже если разобьем этот месседж на чанки по 100 Мб скажем, тут же все равно больно дохера памяти используется, не? Кто работал с Реббитом глубоко? Это вообще норм идея передавать столько данных по нему или это хуйня ебаная и так никто не делает?
Аноним 15/08/22 Пнд 13:42:34 2434761 102
>>2434730
Оверхед на сериализацию/десериализацию, не?
Аноним 15/08/22 Пнд 14:07:09 2434802 103
Есть задачка. Три таблицы 1.Students (1.id 2.Студент 3.курс) 2. Subjects (1.id 2. Предмет 3. Курс, на котором доступен предмет) 3. Exams (1.id 2.Students.id 3.Subjects id 4. Оценка) Нужно выяснить кто из студентов сдал все экзамены на своём факультете (положительная оценка 3 и выше). С джоинами понятно, условием оценки 3+ тоже, а как отсеять тех, кто сдал не все предметы?
В общем помогите плез кто чем может)
Аноним 15/08/22 Пнд 14:37:15 2434843 104
>>2434802
сколько заплатишь?
Аноним 15/08/22 Пнд 16:28:25 2434960 105
>>2434843
Сколько стоит твое очко?
Аноним 16/08/22 Втр 03:14:23 2435418 106
>>2424142 (OP)

Есть ли какая-то IDE для MySQL с урезанным функционалом для новичков чтобы могла наглядно строить таблички или все эти связи между табличками как Воркбенч? Может есть какой-то хидден гем в вашей области для новичков?
Аноним 16/08/22 Втр 07:33:56 2435475 107
>>2434802
Найди студентов которые не завалили ни одного предмета.
Аноним 16/08/22 Втр 07:36:18 2435476 108
>>2435418
dbeaver умеет рисовать таблички со связями
Аноним 16/08/22 Втр 11:28:33 2435619 109
Немного не понимаю, а проверить пока никак:

Вот у меня есть sqlite3 таблица, я добавляю туда строку через INSERT INTO и закрываю действие через .commit()
Но сейчас мне надо добавить строку, и сразу же ее обновить через UPDATE. Нужно ли делать коммит после первого действия?
Аноним 16/08/22 Втр 12:10:45 2435669 110
>>2435619
> добавить строку, и сразу же ее обновить через UPDATE.
почему сразу нельзя записать то что нужно, шиз
Аноним 16/08/22 Втр 12:20:20 2435682 111
Почему во время UPDATE постгря удалеят строку а потом делает INSERT вне зависимости от обновляемых полей? Они ебанутые што ле?
Аноним 16/08/22 Втр 12:58:04 2435714 112
>>2435682
Сделано это для обеспечения изоляции параллельных транзакций. К примеру, когда ты обновляешь строку в своей транзакции, другие транзакции так же могут работать с ней. И для них как раз и нужно сохранить старую версию. И да, строка во время обновления со страницы физически не удаляется. Это произойдет позже, во время автоочистки.
Аноним 16/08/22 Втр 13:37:31 2435763 113
Есть subquery из которого нужно сделать update. Проблема в том что в этом subquery могут дублировать данные из-за большого количества join-ов а у меня должна быть только 1 строка с выбранной парой ключей item - type

Небось скажете индексы юзать? А вот хрен, у нас в этой таблице много вставок и изменений, строк несколько десятков лямов, так что от индексов решили отказаться.

Как же быть?
Аноним 16/08/22 Втр 14:57:14 2435868 114
>>2430592
Тут обоссанцы одни, ничего не шарят. Папка поможет:

TRUNCATE TABLE table_name RESTART IDENTITY
Аноним 16/08/22 Втр 17:19:54 2436119 115
>>2435763
юзай ровнумбер ебана, ты чо как хлебушек
Аноним 17/08/22 Срд 12:50:55 2436915 116
Поясните по компрессии в монге. Почему в моих тестах включение snappy на стороне клиента локально ухудшает скорость чтения на 7%, а с удаленным сервером никак
не влияет на ситуацию. Уменьшение объема передаваемых по сети данных должно ведь ускорять RPS, неужели распаковка съедает весь выигрыш?

Как тогда у этого чувака https://www.mongodb.com/developer/products/mongodb/mongodb-network-compression/ получился прирост на 33%?

Коллекция пожата в snappy, ~100k записей, клиент pymongo, тесты гонял по десятку итераций с усреднением результата.
Аноним 17/08/22 Срд 13:20:48 2436946 117
Чтобы было меньше нагрузки на insert/update т.к. у нас часто идут эти операции и в таблицах от миллиона до нескольких десятков миллионов строк мы решили избавиться от Foreign Key везде в нашей Постгре. Насколько это здраво? Там будет какое-то значимое улучшение в производительности?
Аноним 17/08/22 Срд 13:25:31 2436951 118
>>2436946
в любом случае надо начать с замеров и мониторинга. Сделать копию базы, убрать там форенкеи, и посмотреть на мониторинг, что изменится
Аноним 17/08/22 Срд 13:42:03 2436974 119
Здароу. Щас понял что на собесах по бекенду много контор дрочит по БДшкам. Как будто блять кто-то до сих пор не хуярит своё говно через ORM. Ну да ладно. В общем, видимо пришло и моё время уже наконец по нормальному изучить эту хуйню. Кто что посоветует почитать? В частности чтобы там было за профилировку запросов, планы выполнения, индексы, нормальные формы - и всю хуйню что чаще всего спрашивают
Аноним 17/08/22 Срд 13:46:47 2436986 120
>>2436974
> Как будто блять кто-то до сих пор не хуярит своё говно через ORM.
Толсто.
Аноним 17/08/22 Срд 13:50:43 2436989 121
>>2436986
На своих проектах довольно редко юзаем чистоганом. Только если какаято специфичная хуйня, которую ОРМ осилить не может. Как правило это если он генерит какуюто медленную поеботу, или же какой нибудь долбоеб решил динамические свойства объектов реализовывать через добавление колоночек на лету
Аноним 17/08/22 Срд 13:57:58 2437009 122
image.png 214Кб, 1561x1071
1561x1071
>>2436974
>Как будто блять кто-то до сих пор не хуярит своё говно через ORM
Посмотрел бы на тебя как ты бы вот это по маняОРМке писал

да, вверху еще кондишны в форматировании, строк на 40
Аноним 17/08/22 Срд 14:04:44 2437020 123
Аноним 17/08/22 Срд 14:08:14 2437026 124
Аноним 17/08/22 Срд 14:11:55 2437032 125
image.png 182Кб, 1801x832
1801x832
Аноним 17/08/22 Срд 14:15:35 2437037 126
>>2437009
>>2437032
Можно переписать с SQL на обычный язык, чтобы всё тормозило, и делать за СУБД её работу.
Аноним 17/08/22 Срд 16:01:32 2437196 127
Я человек простой, в закрепе мне сказали спросить здесь, я спрашиваю.

Ораклоебы здеся?
Поясните почему with select не возвращается через dbms return?
Че за наебалого?
Так не работает:

DECLARE
rc SYS_REFCURSOR;
BEGIN
OPEN rc FOR WITH q AS (SELECT 2 FROM dual) SELECT 1 FROM q;
dbms_sql.return_result(rc);
END;

а так типа норм:

DECLARE
rc SYS_REFCURSOR;
BEGIN
OPEN rc SELECT 2 FROM dual;
dbms_sql.return_result(rc);
END;

вижу в этом проявление глубокой несправедливости
Аноним 17/08/22 Срд 16:03:32 2437202 128
>>2436974
ОРМы нужны для простой вещи - загрузить строку в виде объедка.
Те кто пытается надрочить там обжект квери языки, это долбоёбы с патерном головного мозга.
Аноним 17/08/22 Срд 16:09:46 2437216 129
>>2436989
ОРМ генерит говно процентов в 50% случаев. Чтобы сдать работу заказчику - хватает. А вот что начинается потом - это другой разговор
Аноним 17/08/22 Срд 16:27:12 2437256 130
distinctus.png 163Кб, 2675x1838
2675x1838
Чет не въехал, а как именно DISTINCT определяет уникальные значения? Вот я во всеми известном ресурсе сделал select с distinct на 2 поля - страна и город, но там все равно попадают одинаковые страны и города. как оно работает?

https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_no_distinct
Аноним 17/08/22 Срд 16:29:31 2437260 131
dist.png 139Кб, 2045x1589
2045x1589
>>2437256
Бля, скрин проебался
Аноним 17/08/22 Срд 16:33:19 2437268 132
>>2437256
Вся строка - ключ.
А иначе подумой, что бы ты получил, если бы остались только уникальные страны и уникальные города? Это были бы записи, не имеющие отношения к исходным данным в бд.
Аноним 17/08/22 Срд 16:44:14 2437287 133
>>2436974
>Как будто блять кто-то до сих пор не хуярит своё говно через ORM.
Если шлепаешь CRUDы, то да. Как только логика чуть сложнее, то пиздец ты под эту ебучую орм начинаешь подгонять необходимый sql запрос, в конечном итоге тебе нужно одновременно знать и sql и как при помощи orm накостылить этот запрос. Что в рельсах, что в ларавеле бесило этой хуйней заниматься, а писать чистый запрос не по феншую.
Уже давно пишу чистые запросы и это вообще кайф, особенно когда поднимешь локальную базу и настроишь всё в ide там почти все автокомплитом высекается. И можно уже по необходимости для каждого запроса свои структуры накидать, используя только нужные столбцы
Аноним 17/08/22 Срд 16:46:53 2437289 134
Как же неохота работать. Как себя наградить, чтобы часочек сегодня пописать код? Я уже и подрочил и вкусненькое поел.
Если не поработаю завтра будет стремно перед пмом отчитываться. Хотя тасочка до пятницы. Но хочется сказать ему, что там немного осталось, когда уже все давно готово.
Аноним 18/08/22 Чтв 07:26:09 2437924 135
Новиков Б.А. - Основы технологий баз данных - Издательство "ДМК Пресс" - 2019 - 240с. - ISBN: 978-5-94074-820-5 - Текст электронный // ЭБС ЛАНЬ

SQL — язык реляционных баз данных: Учебное пособие / Кара-Ушанов В.Ю., - 2-е изд., стер. - М.:Флинта, Изд-во Урал. ун-та, 2017.

Полякова Л.Н. Основы SQL : учебное пособие / Полякова Л.Н.. — Москва : Интернет-Университет Информационных Технологий (ИНТУИТ), Ай Пи Ар Медиа, 2020.

Астахова И.Ф., Мельников В.М., Толстобров А.П. - СУБД: язык SQL в примерах и задачах - Издательство "Физматлит" - 2009 - 168с. - ISBN: 978-5-9221-0816-4

Фиайли К. - SQL - Издательство "ДМК Пресс" - 2008 - 451с. - ISBN: 5-94074-233-5

Грабер Мартин. Понимание SQL – Издательство "Лори" - 2014

Кто-нибудь читал что-то из этого?
Аноним 18/08/22 Чтв 07:32:53 2437930 136
>>2437924
Грубер это классека, была такая ещё совковая методичка из ранних 90-х, лол. Но там sql89, или это какое-то обновленное издание?
Местечковых хуев не знаю.
Аноним 18/08/22 Чтв 08:00:53 2437945 137
Аноним 18/08/22 Чтв 08:55:20 2437959 138
>>2437924
Новикова читал. Вполне неплохо. Для того, чтобы втянуться самое то. В отличие от других пособий, кроме того как пользоваться, объясняет ещё почему так сделано и как оно работает. Упор в книге идёт на постгрю. Но нужно искать второе издание. В первом только, так сказать, ознакомительная часть. Во втором же, появилась часть с деталями. Единственное, это все же учебное пособие и требует какой-никакой базы. К примеру, главу с формализацией аномалий конкурентного доступа и уровней изоляции транзакций без мат. базы читать и осознавать будет тяженько.
Аноним 18/08/22 Чтв 11:04:01 2438009 139
Есть таблицы на постгресе:
https://dbfiddle.uk/?rdbms=postgres_13&fiddle=5f43cee06b406a523b5280a6523d21d4
Как вставлять случайное число строк в таблицу, подразумевая, что все колонки в ней необязательны? generate_sequence() похоже на то, но как его использовать в инсерте, игнорируя его значение?
При вставке в test_1 должна пройти такая процедурка:
- Вставить n число строк в test_1
- Вставить такое же число строк в test_2
- Добавить их связь в test_refs через индекс вставки. То есть первый новый вставленный test_1 будет связан с первым новым вставленным test_2, пятидесятый новый test_1 с пятидесятым новым test_2 и т.д. Гуглить это пиздец конечно, так как index в моём кейсе это что-то типа индекса массива, а не индекс таблицы.
Аноним 18/08/22 Чтв 11:06:29 2438013 140
>>2438009
1. Используешь питон
2. Генерируешь строку с рандомным числом VALUES
3. Вставляешь
Аноним 18/08/22 Чтв 11:25:15 2438025 141
>>2438013
Мне нужна SQL-онли генерация, для примера на фидле.
Аноним 18/08/22 Чтв 11:27:29 2438026 142
Аноним 18/08/22 Чтв 12:29:41 2438079 143
>>2438026
Посмотри блять на ссылку и скажи, куда ты там собрался устанавливать вот это:
> To install the dbms_random package, you need to run 4 scripts when connected as the user SYS or INTERNAL

В постгресе есть бюлтины для этого, вот только все инструкции или на уровне хэлловорлдов с простыми селектами, или вставляют значение в таблицу.
Аноним 19/08/22 Птн 05:19:26 2439073 144
>>2434188
>>2437959

Я правильно понял, что одной этой книги хватит чтобы стать крепким джуном?
Аноним 19/08/22 Птн 06:29:29 2439093 145
Аноним 19/08/22 Птн 11:09:44 2439272 146
>>2439093
А как вялого джуна довести до эрегированного состояния?
Аноним 19/08/22 Птн 16:58:59 2439705 147
Как в запросе сделать проверку на наличие двух и более записей с идущими подряд датами?
Типа 2022-08-15, 2022-08-16, 2022-08-21 - берём все, а 2022-08-15, 2022-08-17, 2022-08-19 - нахуй.
Можно ли так вообще или надо в коде проверять это?
Аноним 19/08/22 Птн 17:25:56 2439739 148
>>2439705
Я бы сделал lead, datediff и посмотрел есть ли где отличные от 1
Аноним 19/08/22 Птн 21:47:39 2440107 149
Двач, поясни за Consistency. Я читал все эти примеры про согласованность данных, но нахуя эта буква в аббривеатуре ACID, если согласованность прямо вытекает из бизнес логики приложения и атомарности транзакций? Как так получается, что в каждом учебнике пишут, что ACID - набор требований к транзакциям, но согласованность данных это во-первых зависит от бизнес логики, а во-вторых вытекает из Atomicity?
Аноним 19/08/22 Птн 22:08:50 2440122 150
>>2439272
Дать ему пошурудить в твоей дырявой базе данных, проникнуть в его оконную функцию. Пошалить с его табличным выражением. Изолировать свою транзакцию на 3/4 в его сессии.
Аноним 19/08/22 Птн 22:12:34 2440127 151
>>2440107
не вытекает.
Представь что серверов несколько или ты в любой момент выдергиваешь шнур и выдавливаешь стекло компьютера.
Аноним 19/08/22 Птн 22:18:57 2440132 152
>>2440127
> Представь что серверов несколько или ты в любой момент выдергиваешь шнур и выдавливаешь стекло компьютера.
И транзакция откатится в соответствии с atomicity, придя, как следствие, к consistency.
Аноним 22/08/22 Пнд 13:32:43 2442741 153
Блэ, в ТЗ которое читаю указано:
"Выполнить поиск по соответствию полей (merge): S.item = P.item; S.start = P.start"

Только вот это постгрес и никакого merge (в версии 13) тут нет. Что блэт такое "поиск по соответствию полей"? Нихрена не гуглится
Аноним 23/08/22 Втр 20:07:55 2443993 154
Аноним 24/08/22 Срд 19:17:10 2444706 155
Саламалейкум

Делаю в постгресе такой запрос

SELECT *
FROM mytable
WHERE mycolumn = ANY('{JOPA, HUI, PIZDA}'::text[])

Соответственно он возвращает мне строки где mycolumn какое-то из значений в массиве. Если например нашел только HUI и PIZDA то вернет 2 записи.
Вопрос - можно ли сделать так, чтобы если значение не находилось все равно бы возвращалась пустая или определенная запись?

Типа сейчас на такой селект ответ

mycolum mycolum2 mycolumn3
HUI ZZZ XXXX
PIZDA ZZZ2 XXXX2

а например хочется

mycolum mycolum2 mycolumn3
[NULL] (или JOPA) [NULL] [NULL]
HUI ZZZ XXXX
PIZDA ZZZ2 XXXX2

или вместо NULL что-то еще. Причем важно чтобы сохранялся порядок элементов в переданном массиве, то есть в этом случае 'JOPA' вошла первой, и ее ответ был бы первым
Аноним 24/08/22 Срд 21:26:18 2444766 156
223.png 83Кб, 554x355
554x355
Сап аноны, говнокодил на разных диалектах SQL, теперь надо перекатится на постгрес, он местами довольно сильно отличается, как быстро перекатится? Что почиткать\посмотреть, с учётом того, что все конструкции sql я знаю?
Аноним 24/08/22 Срд 21:28:04 2444768 157
>>2444766
Какими местами? DDL/DML учится за день, а если у тебя там хранимки, быстро никак не перекатишься.
Аноним 24/08/22 Срд 21:42:24 2444781 158
Аноним 25/08/22 Чтв 12:07:29 2445091 159
>>2443993
Тащемта upsert производится по конфликту constrain t. merge работает по другому, он глядит если строка не сметчилась то тогда ее вставляет. Тут надо отправлять 2 запроса - update from select (с inner join) и insert from select (с left join чтобы спалить строки которые не сджойнились)
Аноним 25/08/22 Чтв 18:00:44 2445356 160
изображение.png 104Кб, 1368x945
1368x945
>>2445091
Нет, сначала делается матч апдейта, если не прошёл инсерт.
Аноним 25/08/22 Чтв 18:03:28 2445360 161
>>2445356
Это что за диалект?
Аноним 25/08/22 Чтв 20:26:57 2445446 162
>>2445360
mssql, там нет insert ignore

а ваш этот мерж говно багованое
Аноним 26/08/22 Птн 10:27:13 2445760 163
>>2444706
Ты типа хочешь чтобы если в mycolum было что-то не из твоего массива поиска, то показывалась пустая строка? Захера?
Аноним 26/08/22 Птн 10:33:12 2445762 164
>>2439705
"2022-08-15, 2022-08-16, 2022-08-21 - берём все"
Имелось в виду "2022-08-15, 2022-08-16, 2022-08-17 - берём все"?
Иначе смысла не имеет.
Аноним 26/08/22 Птн 10:34:26 2445763 165
>>2445446
Ну а вверху постгрес так что твое решение интересно только с академической точки зрения
Аноним 26/08/22 Птн 21:59:14 2446523 166
>>2445763
Ну алгоритм тот же самый. Вопрос был про мерж, предложена мною конструкция повторяет мехнизм работы мержа, и может быть использована в постгрес. Конкретизирую мы не используем insert ignore или другую подобную конструкцию.
Аноним 27/08/22 Суб 16:10:36 2447211 167
41243220405e76b[...].jpg 9471Кб, 4641x3481
4641x3481
Котаны, подскажите хорошую современную книгу по теории БД. По работе я постоянно работаю с базами данных, и порой коллеги оперируют некоторыми терминали, которые я не понимаю: например такими как "нормальная форма", write-ahead logging и прочими. Приходится это всё гуглить по отдельности. Хочу получить системные знания. Желательно чтобы эта книга или курс лекций были не огромными и не содержали в себе слишком глубокого погружения в практические аспекты использования баз данных, как например изучение языка запросов, но содержали знания о разных типах БД: не только реляционных, но и о колончатых, графовых, time-series, распределенных и прочих.
Аноним 27/08/22 Суб 16:38:35 2447252 168
>>2447211
а хуй знает. пора бы привыкнуть что книг ориентированных точно на тебя нет.

работать продолжайц.

Дейта прочитал? Красную и вторую книги,я про "SQL и реляционная теория" ?
"Postgresql 14 изнутри" ?

вот еще что я хочу прочитать в ближайшие годы:
Daniel_Nichter_Efficient_MySQL_Performance_Best_Practices_and_Techniques.epub
"Database tuning principles 2002 .pdf" (старинная, конечно, но меня привлекают книги где чуваки толкают теорию, а не т.н. бросаенс)
Аноним 27/08/22 Суб 16:51:44 2447261 169
>>2447252
Спасибо за наводку на Дейта, погляжу. Честно говоря, не хочется слишком много внимания уделять реляционной модели. У нас на работе такие БД в меньшинстве.
Аноним 27/08/22 Суб 16:57:29 2447265 170
>>2447261
всмысли, наводку?
ты должен Дейта как просто по-дефолту. первую книгу, красную.
Но у него очень скучный язык.

Во всяком случае, вопросы о нормальных формах она закроет исчерпывающим образом.
Аноним 28/08/22 Вск 20:10:01 2448566 171
>>2424142 (OP)
Как научиться правильно выбирать уровень изоляции транзакции? Ну так, чтобы не наломать дров.
Аноним 28/08/22 Вск 20:32:09 2448592 172
>>2448566
ВСЕГДА использовать READ COMMITED, при необходимости с блокировками.
Аноним 28/08/22 Вск 20:39:14 2448599 173
>>2448592
Какие книги почитать по этой теме?
Аноним 29/08/22 Пнд 13:07:26 2449122 174
>>2424142 (OP)
Господа, с высоты вашего опыта подскажите литературу по MS Sql для сис админа. Решил слегка апнутся в знаниях, но даже не совсем понимаю, что требуется от админа в плане баз данных, кроме как бэкапить их. В общем нужна книга которая затронет большую часть функционала именно администрирования БД.
Аноним 30/08/22 Втр 00:24:05 2449807 175
>>2447211
Silberschatz - Database Systems Concepts
Аноним 30/08/22 Втр 07:19:35 2449858 176
Суп, двощ. У меня элементарный вопрос: хочу прочекать архив сообщений от ICQ хранящийся в формате qdb, но есть одна проблема - собственно, колонка, в которой находится непосредственно сообщение, заявлена с какого-то хуя то ли как CHAR то ли VARCHAR и, соответственно, обрезается на 255 сабжей. При этом, я точно помню, что в клиенте такой хуйни не было, т.е. дата в файле не должна быть проебана? Почему так и что можно поделать?
Сразу оговорюсь, что я ни разу не кодер и не оператор баз данных, а хуй простой; скл вчера впервые скачал в виде плагина для лисы и только знаю 3.5 команды для вывода и сортировки инфы.
Аноним 30/08/22 Втр 10:25:40 2449955 177
>>2449858
Потому-что неправильно задан тип данных. Чтоб новые данные не обрезались поставь тип данных text. Что обрезалось, уже проёбано.
Аноним 30/08/22 Втр 15:22:48 2450176 178
Сап. Есть желание вкатиться в биг дату, сколько нужно времени чтобы освоить базу с почти 0? по вашим ощущениям примерно
Аноним 30/08/22 Втр 16:09:28 2450235 179
>>2450176
Шо е бiг дата? Какой набор инструментов ты подразумеваешь? База SQL учится за 2 недели если сильно хуй не пинать и не быть дауном, если одно из двух то месяц, если оба то как повезёт.
Аноним 30/08/22 Втр 16:27:30 2450258 180
>>2450235
Ему ещё петухон с пандасом учить.
Аноним 30/08/22 Втр 16:29:24 2450262 181
>>2450235
зная только SQL можно ли найти РАБоту? Какой минимальный габор программ нужно знать? Просто везде пишут прям про вообще дохуя какое кол-во знаний, вплоть до бизнес процессов. Так ли это, действительно ли надо 2 года дрочить, чтоб стать дата сайнтистом (или кем нить там бля хотя б)?
Аноним 30/08/22 Втр 16:39:47 2450268 182
>>2450262
Ну смотри, я так сам устраивался и кореша своего устроил: учишь тупо SQL хотя бы чтобы left/right джоины нормально понимал ну и там группировки, оконные функции даже не обязательно и пиздуешь устраиваться в техподдержку Л2, не на телефон а инциденты разбирать, там платат по хуйне, но с годом опыта там уже можно качать права на аналитика 100к+ рекорд моего кореша за 6 месяцев на 140к, он он на двух разных техподдержках успел поработать перед тем как в аналитику укатиться. Предметная область это конечно плюс как и всякие UML/BPMN, но можно и без них, по сути найти чела который шарит и за финтех и при этом кнопки мыши не путает тяжело.
Аноним 30/08/22 Втр 16:54:50 2450279 183
>>2450268
Хммм, спасибо! Полезно было услышать
Аноним 30/08/22 Втр 19:24:15 2450406 184
>>2449955
А как тогда клиент читал эти данные, если они уже были заданы таким образом? Сам-то я ничего не менял.
Может ли такое быть, что тип данных поменялся от одного факта открытия базы в сторонней программе?
Аноним 30/08/22 Втр 22:13:33 2450536 185
>>2450406
Щас клиент так же может читать?
Аноним 30/08/22 Втр 23:01:05 2450569 186
>>2450536
Так щас клиент запустить нельзя уже. Там вход через авторизацию на серваке, который много лет назад закрыли и всю инфу потерли. Новый клиент старые учетки не поддерживает.
Аноним 31/08/22 Срд 01:50:43 2450614 187
Кто нибудь пользуется тарантулом?
Аноним 31/08/22 Срд 10:13:20 2450718 188
111.png 87Кб, 970x685
970x685
Это база.
Аноним 31/08/22 Срд 10:29:21 2450733 189
>>2450718
Есть какое-то странное соглашение, что М - 1, а Ж - 0. Но это для пола, гендер должен быть строкой, VARCHAR2, а лучше BLOB.
Аноним 31/08/22 Срд 11:06:52 2450744 190
>>2450733
Так о чем и речь, что сразу видно, что курс (и эту пдфку на скрине) писала женщина из универа возрастом в 40-45 лет. Современный поридж в своем курсе про М и Ж в bool уже вряд ли напишет.
Куда дальше развиваться? Аноним 31/08/22 Срд 11:47:26 2450766 191
Здравия /
Сейчас работаю на заводу со стеком Delphi + SQL. Создаю автоматические отчёты. Это моя первая работа.
Практически дочитал Книгу "Изучаем SQL. 2021. Алан Болье." одна глава осталась.
Собственно вопрос. Какие есть ветки прокачки? Куда дальше можно развиваться? Посмотрел объявление с своем городе есть позиции SQL разработчика и Разработчика БД. В основном нужны знания PostgreSQL. В книге упоминалась Big Data, тоже интересно. Есть ещё Аналитика данных, что вроде про SQL и нейронки. В общем, что думаешь анон?
Аноним 31/08/22 Срд 15:16:33 2450952 192
Аноним 31/08/22 Срд 17:28:53 2451047 193
>>2445760
Ну я например загрузил жсон с пачкой каких-то значений.
Для каждой надо попробовать найти запись по какому-то полю в базе, если нашлось сделать что-то одно, если нет что-то другое. Если по одной долго, если пачкой запрашивать, то непонятно по какому значению что-то нашлось а что-то нет. Конечно можно в коде джоинить или как я в итоге сделал - отправлять батч из n селектов, но интересно можно ли одним запросом как-то так запросить, и еще обязательно без хоронимок.
Аноним 31/08/22 Срд 19:11:07 2451140 194
Аноним 31/08/22 Срд 23:30:56 2451458 195
Здравствуйте. Помогите пожалуйста с выбором СУБД. Сейчас на начальном этапе обучения, поэтому встал выбор между Oracle и PostgreSQL. Хотелось бы, чтобы в дальнейшем одного знания СУБД хватило для поиска работы. То бишь базовый минимум, без особого требования.
Аноним 31/08/22 Срд 23:38:21 2451467 196
>>2451458
Для базового минимума хватит и mysql, но он нахуй никому не всрался в 2022.
Учи постгрес, это сейчас дефолтная СУБД, к тому же достаточно навороченная хоть для энтерпрайза. При необходимости пересесть на оракл легко переучишься.
Аноним 01/09/22 Чтв 07:25:30 2451588 197
>>2450744
знаешь различие между sex и gender?
Аноним 01/09/22 Чтв 10:20:30 2451672 198
Аноним 01/09/22 Чтв 17:48:32 2452102 199
Как в постгресе обновить большое количество строк в таблице если у каждой строки свое значение?

Вот обычный запрос на UPDATE:
UPDATE employee
SET occupation = %value%
WHERE age < 18

Обновляем все столбцы где age < 18 указанные значением. Но что если у нас куча разных строк в каждой из которых свое уникальное значение name которым надо обновить строку с конкретным айдишником? Шо делать?
Аноним 01/09/22 Чтв 17:52:10 2452107 200
>>2452102
Если через питон и алхимия например то решается обычным итеративным подходом:

data = [{'id': 108, name='Peter'}, {'id': 213, name='Mary}]
for row in data:
----await session.execute(f`UPDATE employee SET name = {row['name']} WHERE id = {row['id']}'`)

Но если высирать по 1 UPDATE на каждую строку это пиздец, что если таких строк 100к? А миллион? Они ж никогда не выполнятся.
Аноним 01/09/22 Чтв 18:04:08 2452121 201
>>2452102
insert on duplicate update и вставляешь дохуя столбцов за раз как при обычном большом инсерте.
Аноним 01/09/22 Чтв 18:07:30 2452126 202
Аноним 01/09/22 Чтв 18:09:51 2452131 203
IMG202209011802[...].jpg 51Кб, 707x623
707x623
Помогите с задачей
Нужно найти и вывести пропуски ровно в одно число с помощью джоина и фильтрации, решение при помощи оконной функции не подходит
Аноним 01/09/22 Чтв 20:04:34 2452245 204
>>2452121
Ещё из вариантов - создаёшь временную таблицу, инсертишт в нее, а потом:
UPDATE target_table
SET value1 = tmp.Value1, value2 = tmp.value2
FROM temp_table tmp
WHERE target_table.id = tmp.id;
Аноним 01/09/22 Чтв 20:38:07 2452280 205
>>2452131
select T1.t +1 from T T1 join T T2 on T1.t=T2.t-2 left join T T3 on T1.t=T3.t-1 where T3.t is null
Аноним 01/09/22 Чтв 22:38:55 2452347 206
а в чем проблема PostgreSQL, по факту ведь отличается от объемов проекта, если большой - MySQL, малый-средний - PostgreSQL?
Аноним 01/09/22 Чтв 22:59:41 2452360 207
>>2452347
Так толсто, что аж толсто...
Аноним 01/09/22 Чтв 23:05:11 2452362 208
>>2452347
Похуй, что толсто, но постгрес подходит для любых объёмов проекта, хоть пет с 5 таблицами, хоть энтерпрайзный легаси монолит с 3000 таблицами и миллионами записей.
Аноним 01/09/22 Чтв 23:22:19 2452367 209
Если мне нужно поле votes для модели, правильно ли будет сделать votes_up = int
votes_down = int

И реализовать интерфейс к ним интерфейс, который будет увеличивать их счетчик? Возвращать count по этим полям

{
"votes_up": 325,
"votes_down": 89
}
Аноним 01/09/22 Чтв 23:34:53 2452371 210
>>2452362
>>2452360
мне просто интересно, почему его хейтят.
на сколько известно, он мало чем отличается от MySQL
Аноним 02/09/22 Птн 00:48:44 2452397 211
>>2452371
Кто хейтит? Негатив в сторону постгреса слышно только от NoSQL-шизиков, но они ненавидят одинаково все РСУБД, что постгрес, что мускл, что оракл.
Аноним 02/09/22 Птн 00:51:19 2452398 212
Аноним 02/09/22 Птн 02:24:25 2452424 213
>>2452371
Его хейтят только всякие макаки-веб мастера, ибо сложна, вакуум какой непонятный тюнить надо. Да и другие настроечки тоже неплохо бы покрутить, чтоб производительность лучше была.
Аноним 02/09/22 Птн 11:07:51 2452561 214
>>2452367
Это смотря какие у голосовалки требования, но обычно такая логика реализуется дополнительными таблицами с внешними ключами.
Аноним 02/09/22 Птн 14:27:20 2452683 215
>>2452672
План запроса смотрел? Индексы на все столбцы, по которым идёт join есть?
Аноним 02/09/22 Птн 14:33:58 2452692 216
image.png 37Кб, 1519x300
1519x300
>>2452683
Это первое что я сделал. Индексы расставлены. Но эксплейн не о чем не сказал кроме 958 rows в связующей таблице. И у меня еще 5.7 мускул а там нет доп. инструментов для анализа как в 8
Аноним 02/09/22 Птн 14:37:36 2452697 217
>>2452245
Не нужны никакие временные таблицы если используешь subquery

UPDATE target_table
SET value1 = subquery.Value1, value2 = subquery.value2
FROM (SELECT id, value1, value2 FROM shitty_table) as subquery
WHERE target_table.id = subquery.id;
Аноним 02/09/22 Птн 14:52:24 2452709 218
>>2424142 (OP)

Помощи что-ли попросить?

Чой-та я застрял с Berkeley DB, но это наверное с сишном треде надо интересоваться. Да, точно, не буду вам ебать мозги с вопросами о программировании. Но раз уж зашёл сюда, то вот интересно - есть или нет аналог схемы в базах Berkeley DB? Думаю что нет, но может быть ошибаюсь?
Аноним 02/09/22 Птн 14:57:18 2452714 219
>>2452697
Ну так я писал про вариант, когда у тебя данные для обновления только на клиентской стороне есть. И их много. Вот в такой ситуации мы обычно создаём временную таблицу, заливаем ее через COPY FROM stdin и уже на стороне бд обновляем из нее через UPDATE FROM.
Аноним 02/09/22 Птн 21:44:31 2453069 220
Какие команды и что чаще всего вы используете для работы? Я сейчас видео смотрю и пока только самая база идёт, ну и не хотелось бы тратить время на запоминание вещей, который кроме как в теории не пригодятся.
Аноним 02/09/22 Птн 22:57:35 2453125 221
123.jpg 127Кб, 406x600
406x600
>>2453069
Чаще всего командую джуну работать за меня
Аноним 02/09/22 Птн 23:45:30 2453140 222
изображение.png 11Кб, 389x226
389x226
Почему не работает? Должно же работать. Вот тут работает, а у меня нет.
https://youtu.be/8h7JGr9loFo
Аноним 02/09/22 Птн 23:51:20 2453145 223
>>2453140
у тебя не та бд выбрана валенок либо скобки поставь
Аноним 03/09/22 Суб 00:16:16 2453153 224
Аноним 03/09/22 Суб 00:19:10 2453156 225
image.png 23Кб, 990x162
990x162
Что с sql-ex не так? Почему это incorrect? Почему большая часть решений которые возвращают тот результат, который должен быть - неправильные?
Аноним 03/09/22 Суб 00:24:07 2453158 226
>>2453140
Вроде кириллические названия таблиц надо в "кавычках" указывать.
>>2453156
Скорее всего ему уникальные значения нужны, добавь distinct.
Аноним 06/09/22 Втр 00:06:33 2456342 227
Возможно ли как-то динамически обновлять БД на основе входящих данных?
Сейчас я получаю данные из гугл таблиц, читаю и записываю в базу. Строки могут удаляться и добавлять.
Я пока додумался только до того, чтобы дропать таблицу каждый раз, когда приходят новые данные
Аноним 06/09/22 Втр 00:50:45 2456376 228
>>2456342
merge или его аналоги если ты о данных.
Динамический SQLне лезь дибил если ты о таблицах
Аноним 06/09/22 Втр 18:39:36 2457088 229
Хочу написать галерею с поддержкой тегов, как на бурах вроде yande.re Какую бд для этого дела выбрать?
Аноним 06/09/22 Втр 19:04:42 2457109 230
>>2457088
Любую задачу можно решить через постгрес.
Аноним 06/09/22 Втр 19:11:49 2457115 231
>>2457088
Любую, это схема one-to-many.
Аноним 06/09/22 Втр 22:48:17 2457280 232
Парни, нубский вопрос.

Понял как вычленять строки, в которых title начинается (например) с буквы "П" или заканчивается на букву "а", при помощи LIKE:

title LIKE "П%" OR title LIKE '%а' # Название начинается с буквы "П" или заканчивается на "а"

А как это же самое делать при помощи REGEXP?
Аноним 06/09/22 Втр 23:58:16 2457321 233
>>2456376
Я забил хуй и решил просто перезаписывать каждый раз таблицу
Аноним 07/09/22 Срд 00:33:54 2457345 234
>>2457280
> title LIKE "П%" OR title LIKE '%а'
title LIKE 'П%а'
> REGEXP
Для оракла: SELECT title FROM titles WHERE REGEXP_LIKE(title, '^П.*а$');
Аноним 07/09/22 Срд 00:52:42 2457353 235
>>2457345
Чел, ты неправильно понял, что он хочет. Ему надо "или", а ты сделал "и".
Аноним 07/09/22 Срд 01:06:08 2457364 236
>>2457353
Да, ты прав.
REGEXP_LIKE(title, '^П.⚹|.⚹а$')
Аноним 07/09/22 Срд 15:54:05 2457773 237
>>2457345
А для MySQL как делать REGEXP?
Аноним 08/09/22 Чтв 00:54:32 2458100 238
>>2457773
Гугл говорит, что в мускл есть функция REGEXP_LIKE(), аналогичная оракловой.
Аноним 13/09/22 Втр 01:31:28 2461616 239
Безымянный.png 4Кб, 681x125
681x125
Подключаюсь к mysql 8 из mysql workbench методом tcp/ip поверх ssh

mysql 8 стоит в контейнере докера что настраивает isp на отдельном порту. После половины дня консоли удалось понять что как работает и настроить воркбенч на синхронизацию и просмотр статистики, но ощущение, что часть функций не работает (скрин + другой порт в характеристиках подключения, 06 вместо 10), пытаться решить проблемы или может лучше подождать чистого сервера, настроенного без Lamp? Ну а может лучше попробовать какие-то другие редакторы, ибо этот крайне ограничен? Успел познакомиться с dbForge, но бюджет не выделят пока, да и модель в воркбенче, и так изучать пришлось. isp просит не удалять поставляемый с собой сервер марьи c устаревшей версией, так как по ней он конфигурирует контейнерный докер Mysql 8
Аноним 13/09/22 Втр 01:32:54 2461618 240
>>2461616
Дополнение: подключаюсь к руту, далее рут базы, иначе начинается канитель. Тестовый сервер
Аноним 13/09/22 Втр 11:18:36 2461713 241
>>2424142 (OP)
Есть очень жирный по памяти select-запрос. Жирный он потому что таблицу на ~ 400к данных мы джойним с самой собой, а затем сверху еще 2 джойна кидаем. При тестах вообще изи улетаем за оперативку, а на проде эта таблица жирнее раз в 8-10, то есть там точно пиздец прям даже если RAM накинуть.

Как быть? Есть идеи разбить 1 запрос на несколько с помощью LIMIT/OFFSET, это вообще поможет? Если нет, то какие варианты?
Аноним 13/09/22 Втр 11:25:48 2461715 242
>>2461713
Можете спросить "а нахуя такие большие таблицы между собой джойнить"? В задаче надо узнать, существует ли в этой таблице (items) другая запись с определенными условиями или же нет.
В зависимости от этого, проставить поле mode. Без self join такое хрен знает как сделать. Я мог бы постараться просто выгрузить эту таблицу целиком в питон и там уже искать есть ли совпадения по условиям, правда хз за сколько это все выполнится, есть подозрения что надо будет ждать несколько часов бля а то и дней.
Аноним 13/09/22 Втр 14:20:21 2461865 243
>>2461713
>Если нет, то какие варианты
400k подзапросов.
Аноним 13/09/22 Втр 17:38:21 2462013 244
Как из одной таблицы вывести строку соответствующую айди в другой?
Аноним 13/09/22 Втр 17:50:23 2462020 245
>>2461886
>Редис же 1поточный. Это ж большой крест, верно?
Тебе что бы выжрать всю однопоточность редиса в одном инстансе нужно очень постараться, для уберхуйлоайда у них кластер есть
Аноним 13/09/22 Втр 17:57:31 2462024 246
Пожалуйста, помогите. Очень нужно сделать эту хуйню.
Как блядь выделить две таблицы с одной хуйней?
http://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all
Нужно вывести все города(City) из Customersи Suppliers в алфавитном порядке. Я пробовал через Джойн, но походу на сайте из ссылки нельзя блядь это сделать - пишет ошибку. Помогите! Пожалуйста.
Аноним 13/09/22 Втр 18:16:19 2462034 247
>>2462024
Блядь, стоит только задать вопрос, как сам находишь решение? Что это за хуйня?
Три часа сидел блядь, и только задал вопрос на дваче, как через пять минут нашел решение.
SELECT City, Country FROM Customers
UNION
SELECT City, Country FROM Suppliers
WHERE NOT Country='Germany' AND NOT Country='France' AND NOT Country='UK'
Order by city;
ПИЗДЕЦ
Аноним 13/09/22 Втр 18:57:18 2462055 248
>>2462034
>>NOT Country
лучше сделать Country NOT IN ('Germany', 'France', 'UK')
Аноним 13/09/22 Втр 20:20:16 2462127 249
2022-09-1320-16[...].png 27Кб, 913x222
913x222
Помогите с решением. Пожалуйста
Аноним 13/09/22 Втр 20:33:52 2462138 250
>>2462127
SELECT MUSICIANS.GITHUN_NICKNAME FROM MUSICIANS, TRACKS WHERE TRACKS.MUSICIAN_ID = MUSICIANS.ID AND TRACKS.TRACK_NAME = 'Calm';
Подставь правильные названия столбцов, их на картинке не видно.
Аноним 13/09/22 Втр 22:00:19 2462232 251
>>2462138
Спасибо. Пусть у тебя все будет хорошо!
Аноним 13/09/22 Втр 22:10:36 2462241 252
>>2461713
Ставлю очко ОПа что это можно решить оконными функциями. Второй вариант вешать индекс, третий вариант писать процедуру и считать частями.
Аноним 13/09/22 Втр 22:54:13 2462268 253
>>2461713
Решение этого вопроса сильно зависит от того, как эта таблица используется. Вангую самоджоин делается исключительно для того, чтобы реализовать вложенные списки для серверного рендера.
Аноним 13/09/22 Втр 23:45:23 2462292 254
Есть три таблицы в постгресе: "коллекции_залуп", "залупы" и "связь_залуп_и_коллекций". Правила инициализации таковы:
1. Коллекция залуп:
- пустая, чтобы пользователь мог создать коллекцию и только потом складывать в неё залупы когда-нибуть потом.
- с рефами на существующие залупы, чтобы пользовать мог создать коллекцию из существующих залуп.
- с иницализаторами залуп, чтобы пользователь мог добавить новые залупы коллекцией.
2. Залупа:
- должна принадлежать как минимум одной коллекции, так что если в инициализаторе нет инфы о существущей коллекции, то нужно создать пустую и в неё сложить новую залупу. Чтобы пользователь мог добавить залупу и сразу же складывать/добавлять другие в схожую коллекцию.
- Если же есть инициализатор коллекции, то создать коллекцию с него по всем правилам инициализации коллекции и сложить в неё новую залупу поверх.

Всё это конечно должно происходить транзакционно. Сначала пробовал реализовать это на уровне приложения, но малость подохуел от бесконечных итераций по хэштаблицам/массивам их их трансформацией туда и обратно. Потом решил написать портянку из CTE на каждый инициализатор и сейчас так и работает. Проблема в том, что если я захочу, например, добавить таблицу с гондонами для залуп с примерно такой же логикой как иницализация залупы без референсов (т.е. новый гондон -> новая залупа -> новая коллекция залуп), то мне нужно повторять всю логику предыдущих запросов в новом, что не айс в плане поддержки кода. Это юзкейс для хранимых процедур?
Аноним 14/09/22 Срд 16:53:19 2462901 255
Пожалуйста, помогите решить задачу.
Я так понимаю тут нужно делать через JOIN?
Если да, то у меня нихуя не получается, если нет, подскажите пожалуйста через что.
Нужно вывести имена всех людейcustomers, которые покупали морепродукты categories
https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_join
Как блядь это сделать?
Аноним 14/09/22 Срд 21:11:03 2463091 256
>>2462901
можно просто джойнить все подряд, пока не дойдешь до нужной таблицы
SELECT c.CustomerName
from orders o
join customers c on o.CustomerId = o.CustomerID
join OrderDetails od on o.OrderID = od.OrderID
join Products p on od.ProductID = p.ProductID
join Categories cat on p.CategoryID = cat.CategoryID
where cat.CategoryName = 'Seafood'
Аноним 15/09/22 Чтв 09:46:20 2463315 257
Аноним 15/09/22 Чтв 09:53:24 2463317 258
sql2.JPG 102Кб, 1885x905
1885x905
Аноним 15/09/22 Чтв 10:06:17 2463321 259
>>2463317
В хроме заработало
Спасибо большое.
Аноним 15/09/22 Чтв 10:15:27 2463326 260
>>2463317
>>2463091
Ты не мог бы подсказать пожалуйста, почему 'c' и 'o' воспринимаются без оператора синтаксиса? AS?
Аноним 15/09/22 Чтв 11:05:18 2463361 261
Господа, насчет упражнений.
Вижу в шапке sql-ex и codewars.
Но нет ли более годных альтернатив?
sql-ex смущает тем, что древний как кал динозавра, мне кажется, что в sql уже дохуя было фич новых завезено, хотя могу ошибаться конечно.
codewars супер так-то, я там по питону всякое решал, но вот после питона раздел c sql выглядит заброшенным абсолютно.

Или не бухтеть и жрать что дают?

Мне хочется практики задач на относительно продвинутом уровне, в частности там оконные функции и такое прочее.
Аноним 15/09/22 Чтв 11:12:13 2463366 262
Аноним 15/09/22 Чтв 13:02:50 2463404 263
image.png 8Кб, 329x265
329x265
>>2463317
>>2463091
И еще один вопрос.
Почему 6000 записей ?
Там же столько нету во всех таблицах?
И как вывести рядом таблицу с морепродуктами, или типом категории?
Аноним 15/09/22 Чтв 18:05:39 2463663 264
Аноним 16/09/22 Птн 19:58:17 2464569 265
>>2457364
Охуеть.
Пытаюсь вкатиться, изучаю питон и понял, что передо мной стена одного питона, проанализировав рынок понял, что надо уметь бд и через них намного проще вкатиться.
Но вот это '^П.*а$'); просто пиздец синтаксис
Аноним 16/09/22 Птн 20:00:55 2464572 266
>>2464569
Регулярки за полчаса учатся, а на питон у меня ушло несколько месяцев.
Аноним 18/09/22 Вск 18:47:53 2466441 267
>>2424142 (OP)
Нах нужно S3 хранилище?
В смысле в чем его преимущество перед рсубд или nosql? У нас все спорят, нужно ли нам s3 для нашей биг даты (таблицы постгреса на проде весят под 90 гигов), а я помалкиваю т.к. не шарю а вопросы задавать ссыкую т.к. позиционировал себя как скилового миддла с 2.5 годами опыта (припиздел)
Аноним 18/09/22 Вск 18:58:40 2466453 268
>>2466441
Нужен только облакодебилам, которые не хотят поддерживать инфраструктуру самостоятельно и отдают всё на откуп вендорам.
Аноним 18/09/22 Вск 19:00:56 2466455 269
>>2466441
Чтобы хранить файлы. Причем тут БД я вообще не ебу.
Аноним 19/09/22 Пнд 10:33:52 2466970 270
Делаю 2 запроса - сначала UPDATE потом INSERT на основании парочки CTE которые написал до этого (смысл в том чтобы CTE выполнились только 1 раз, оказались закешированы и эти запросы получилось выполнить эффективнее), по типу:

WITH pre AS (SELECT FROM shit),
dt AS (SELECT
FROM fuck WHERE dick IS NOT NULL)

UPDATE bitch SET name=sub.nickname FROM (pre JOIN dt ON pre.dest = dt.dest) AS sub

INSERT INTO cunt (name, age, created) SELECT dt.name, dt.age, dt.created FROM dt JOIN network ON dt.loc = network.net

Но блять, постгрес постоянно кидает какие-то ошибки. То он говорит syntax error at or near "INSERT" если я не ставлю ; после UPDATE, а если ставлю то пишет relation "dt" does not exist

Втф? Как правильно выполнять несколько запросов разом через CTE?
Аноним 19/09/22 Пнд 10:50:25 2466976 271
>>2466970
В конце cte должен идти 1 запрос епта. Поэтому update тоже оборачивает в cte нах
Аноним 19/09/22 Пнд 14:12:07 2467155 272
image.png 87Кб, 1240x832
1240x832
Сап повелителям РБД. Помогите студентоте, с проектированием базы данных интернет магаза, одно дело писать запросы а другое дело их проектировать. Вот у меня есть такие вопросы

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

2. Насколько бд проста в масштабируемости по вашему? Ну то есть, если я захочу продавать кроме материнок с видюхами ещё и цпу, то мне остается просто добавить таблицу с цпу не меняя все отношения

3. Как хранить пароли юзверей? Тупа в таблице захешировав? Или есть более элегантный способ?

4. Насколько сильно нужна дрочилово с внешними ключами? Я вот ещё слабо понял в их концепциях да нихуя не понял если честно

5. Ну и по индексам такой же вопрос как и в 4-ом
Аноним 19/09/22 Пнд 14:24:02 2467159 273
image.png 19Кб, 747x68
747x68
>>2467155
:)
Что на пикче, твоя лабараторная? Какой курс?
Аноним 19/09/22 Пнд 14:28:15 2467162 274
>>2467159
Пиздец задеанонил себя, ну да похуй, не в /b хотя бы

>Какой курс?
2 курс анон

Ну так поможешь? :)
Аноним 19/09/22 Пнд 16:51:15 2467255 275
>>2467155
1 - просто путь, да.
2 -
Тут надо много больше табличек, чел.
Для начала корзина, там номер заказа и айди юзера, потом табличка с заказами, где номер заказа, номер продукта, количество.
В продуктах номер продукта, название, ску, описание и прочая залупа, которая есть у всех продуктов. Дальше табличка с типами продуктов и вспомогательная для связи продукта с типом. Дальше табличка с опциями типа сокет, объем памяти и т.д. и вспомогательная для связи продукта с этими опциями. Это навскидку.
3 - соленый хеш + рандомная соль отдельно на каждого юзера, это как сейчас делают, тебе для лабы достаточно просто хеша.
4 - Нужно, это несложный концепт, кури.
5 - Нужно, это более сложный концепт, кури.
Аноним 19/09/22 Пнд 16:52:59 2467258 276
Аноним 19/09/22 Пнд 17:25:03 2467285 277
>>2467258
>Карабах чей?
Бля чел мы не в /b сидим, дай хоть здесь от этого кала отдохнуть

а так я из казахстана
Аноним 19/09/22 Пнд 17:27:15 2467288 278
>>2467255

Спасибо за такой ценный совет, вот со вторым пунктом я точно проебался, спасибо что заметил, тонны чаю тебе
Аноним 24/09/22 Суб 13:48:49 2472490 279
Сап, я быдло!
В соседнем треде увидел упоминание NoSQL, гуглить лень, объясните в двух словах, нахуя оно нужно и чем оно лучше SQL.
Про реляционные бд знаю, про sql тоже.
Аноним 24/09/22 Суб 14:21:41 2472525 280
>>2472490
Ничем оно не лучше, у него задачи другие. Реляционные для OLTP (много маленьких транзакций, есть почти во всех приложениях), NoSQL для аналитических запросов, отчётов, временного хранения данных, кешей с быстрым доступом и т.д.
NoSQL - это не название какого-то языка запросов, а просто все СУБД, которые нельзя отнести к реляционным. У NoSQL неи стандартного языка запросов, в кажой такой СУБД свои союственные.
В реляционных БД у тебя таблицы с типизированными столбцами, первичные и внешние ключи, нормализация, джойны и всё сопутствующее. В NoSQL может быть что угодно, например, есть key-value (это можно сказать гигантская мапа, где ты под указанным ключём сохраняешь какой-нибудь объект) и есть документные (когда вместо таблиц у тебя коллекции объектов - "документов" произвольной структуры без схемы, можно думать как о хранилище жсонов).
Аноним 24/09/22 Суб 16:24:08 2472634 281
>>2472490
Это вопросы уровня "чем тойота лучше чем фольксваген?" или "чем go лучше чем typescript?". Nosql баз данных мильярды, есть любые прибамбасы, которые только душе угодны. Но я пользуюсь nosql из чисто прагматичных соображений, потому что ставить sql-базу западло, а за облачную nosql платишь 3 копейки в месяц, она не расходует память сервера. Мне не надо её настраивать, не нужно копаться в конфигах - я подключился и мне заебись.

В плане работы - другая идеология, вот и всё. В sql всё задрачивание идёт на построение запроса, а в nosql всё задрачивание идёт на организацию хранения данных. Соответственно, если ты любишь строить хитрожопые запросы - ты берёшь sql. А если ты любишь хитрожопо хранить данные - то берёшь nosql.

Скорость/масштабируемость у nosql замечательная. Ответ где-то в районе 8 миллисекунд. При чём не важно, сколько у тебя данных в базе, хоть 1 террабайт, хоть 1 мегабайт, по барабану вообще. На производительность не влияет никак.
Аноним 24/09/22 Суб 23:42:42 2473010 282
>>2424142 (OP)
Существует ли модель данных, которую невозможно представить в виде реляционной модели данных?
Аноним 24/09/22 Суб 23:59:44 2473020 283
>>2473010
Не существует. Сложности всегда только с эффективностью доступа и представлением в виде реляционной модели, например, иногда приходится строить поверх реляционной модели другую модель, где в конечном итоге всё равно все сводится к таблицам и ключам. Нереляционные СУБД берут не потому, что в реляционных невозможно что-то сделать, а потому что для каких-то моделей данных они работают эффективнее, чем реляционные.
Аноним 25/09/22 Вск 00:37:22 2473046 284
>>2473020
Я просто где-то слышал что некоторые сетевые или там графовые модели с рекурсией не могут быть представлены в виде реляционной модели. Поэтому и переспросил, какбэ.
Аноним 25/09/22 Вск 00:41:17 2473047 285
>>2473046
Да, вот ещё, чё-то вспомнилась мне неполнота по тьюрингу языка SQL: https://neerc.ifmo.ru/wiki/index.php?title=Тьюринг-полнота#SQL
и возможность костыльного дополнения с помощью каких-то неведомых расширений, этого языка до тьюринг-полной системы.
Почему тьюринг-полнота?
А потому что речь о представлении любых моделей данных, какбэ,
и если уж моделировать любую модель, то какбэ должна бы быть тьюринг-полнота.
Почему так? Да потому что сильный тезис Чёрча-Тьюринга-Дойча, вот почему: https://ru.wikipedia.org/wiki/Тезис_Чёрча_—_Тьюринга
Аноним 25/09/22 Вск 00:45:15 2473048 286
>>2473046
Могут, сеть - это тупо таблица свяхок, там никакой рекурсии нет.
>>2473047
Это уже не SQL, да и расширения относятся к логике обработки, а не к самой модели данных. Но отсутствие полноты по Тьюрингу не мешает хранить представление любых моделей данных.
Аноним 25/09/22 Вск 01:36:14 2473056 287
>>2473048
Дык а если в самой модели рекурсия? Скажем, описание программы с рекурсией - это ли не модель её?
Аноним 25/09/22 Вск 01:47:06 2473060 288
>>2473056
Ты относишь логику программы к модели данных?
Если не относишь, то рекурсия в программе отделена от реляционной модели, никакой связи между ними нет, значит, представить можно любую модель.
Если относишь, то в реляционной модели данных вообще невозможно представить никакую модель данных, там тупо нет понятия логики. Хранимые процедуры также не имеют отношения к реляционной модели. Логика относится к программе и может вообще ничего не знать о том, как данные хранятся, ей не важно, постгрес там или монга.

Это ты тот анон, который пытается впилить sqlite в наноборду?
Аноним 25/09/22 Вск 02:41:58 2473076 289
>>2473060
>Ты относишь логику программы к модели данных?
А, ну да, описание рекурсивной программы - это же не сам рекурсивный процесс её исполнения, это просто данные, ну там описание цикла бесконечного, или описание вызова функции из этой же функции...
Сам процесс выполненения программы - это уже работа с этими данными, то есть как-бы процесс обхода данных в базе данных, и если он бесконечен, как бесконечные циклы, то такой процесс невозможно смоделировать даже на машине тьюринга, исходя из того же сильного тезиса, в контексте непрерывности и бесконечности.
А если процесс исполнения конечен, то это тупо конечная последовательность выполнения элементарных операций, и она может быть представлена в виде таблицы в БД, как описание любого другого конечного процесса.

>Это ты тот анон, который пытается впилить sqlite в наноборду?
Да. Ой блядь, насчёт этой идеи. У меня тут, понимаешь ли, пришло время переустанавливать грёбанный шиндошс. Всё слетело нахуй, и я уже забыл чо хотел там.
Уебунту поставил, mono тоже сбилдил вроде, пароль от гитхаба схоронил...
А вот чо дальше со всей этой хуетой делать - хуй знает, нет чёткого плана, да и интереса как такового, в том числе и финансового - тоже нет, вообще.

Огрызки кода, недопиленные, ну вон они - в бранчах на гитхабе висят, в issues тоже есть некая инфа, я там пилил короче пира, раздающего хэш-таблицу, и отдельно - саму хэш-таблицу KeyValue на sqlite, с Mono.Sqlite.dll. Она и в шинде работает, и в уебунте, какбэ. Но всё это собрать вместе, не получилось, хотите сами въебенькайте, а то меня уже заебало.

Хотя постой. Я же вроде впилил уже сиквелайт где-то тут:
https://github.com/username1565/nanoboard/tree/nanodb-sqlite
вроде робит, и робит вроде норм.
Шо ещё надо?

А, да, хотел короче всю эту хуйню замкнуть на хэш-таблицу, вида:
|hash|ReplyToHash+PostMessage|
и короче приебенить handler в DbApiHandler.cs,
чтобы по хэшам отдавать исходники нанопостов, и так синхрить базу, между live-server'aми.
А потом вообще решил заебенить пира:
https://github.com/username1565/CSharpServers/tree/Peer
чтобы он в локалке находил других пиров мультикастом, и коннектился к ним, и чтобы короче децентрализованно синхрить хэш-таблицу эту, ебучую.
Когда полная децентрализация, то нет центров, а значит нихуя нельзя разбомбить ракетами, и поэтому короче наноборда неубиваемая будет.
А то тут, блядь, всякие над головой летают, всякие иранские дроні-камикадзе shaheed-136 и Mohajer-6, калибры, искандеры, сукка, сверхзвуковіе шеститонные советские ракеты X-22, которые напиздело у народа хуйло, спиздив ещё и ЯО СССР, перед тем как хуйло предало народ СССР.
Так что сливайте бекап наноборды и расшарьте короче всеобщее достояние это, няшное, а то так и будете на подмочухном мейлаче подхуйловском, обезьяне-маме пасскоды покупать, пока она вакабу шатает, образом - пиздец каким обратно-несовместимым.
Аноним 25/09/22 Вск 06:10:54 2473126 290
>>2473010
Это как бы на поверхности. Банально произвольную иерархию объектов уже проблематично отобразить в классических реляционных отношениях, если на не наложить определенные ограничения. Гугли object–relational impedance mismatch.
Аноним 25/09/22 Вск 12:13:01 2473228 291
>>2473126
Да ну, а как же бесконечно-ветвящееся дерево, в виде одной лишь таблицы: |id|parentID|object_content| ?
Аноним 25/09/22 Вск 12:14:56 2473231 292
>>2473126
Или ты имеешь в виду ещё и сами взаимосвязи, между свойствами описываемых объектов?
Аноним 25/09/22 Вск 12:18:22 2473238 293
>>2473231
Хотя опять же, описания объектов - это просто данные, а сами взаимосвязи между свойствами этих объектов, могут быть выражены в виде логики работы программы, а не в виде реляционных связей.
Аноним 25/09/22 Вск 13:08:50 2473289 294
>>2473228
Можно, конечно, использовать РСУБД для хранения данных в EAV ( https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model ) Но это уже не реляционная модель. Это просто способ хранения EAV модели. У почти все операции реляционной алгебры сразу нахуй идут. Плюс у тебя все ограничения целостности, которая данная модель предоставляет тоже проёбываются. Причём даже на уровне типов.
Реляционная модель это не про таблички, а про отношения и операции и связи между ними. Причём операции в это модели конкретные.
Ещё раз. В виде набора табличек, да, можно почти любую модель данных представить. Но если ты над ней не можешь выполнять операции реляционной алгебры - то это уже не реляционная модель.
Аноним 26/09/22 Пнд 16:44:52 2474616 295
image.png 45Кб, 887x528
887x528
Аноны объясните дебичу, как это называется.

У меня есть три таблички A, B, C. Когда я добавляю данные в таблицу A или B, у меня автоматом конкретно выбранные столбцы из этих таблиц попадают на новую строку в таблицу С
Аноним 26/09/22 Пнд 17:09:03 2474643 296
>>2474616
Вы там построчное резервирование изобрели, что ли?..
Аноним 26/09/22 Пнд 17:29:26 2474666 297
>>2474643
Анончик как это делается? И насколько разумно её пользоваться? Подскажи пожалуйста
Аноним 26/09/22 Пнд 18:19:31 2474729 298
>>2474616
Я перефразирую вопрос. Можно сделать так чтобы в один столбец могли писать несколько таблиц. Условно таблица №1 сделала запись, а когда таблица №2 будет делать запись то она запишет в следующую строку
Аноним 27/09/22 Втр 00:24:31 2475082 299
>>2474729
Триггеры там какие-то есть, вроде что-то подобное можно делать, сам не пользовался.
Аноним 27/09/22 Втр 11:17:07 2475356 300
>>2474729
>Я перефразирую вопрос. Можно сделать так чтобы в один столбец могли писать несколько таблиц.
Конечно можно, при инсерте создаёшь создаёшь строку в таблице, получаешь её уникальный идентификатор и передаёшь его в другую.
Аноним 27/09/22 Втр 11:19:04 2475357 301
>>2472634
>Ответ где-то в районе 8 миллисекунд.
А потом секунд 10 проверяешь целостность данных на уровне приложения.
Аноним 27/09/22 Втр 13:33:22 2475454 302
>>2475357
>А потом секунд 10 проверяешь целостность данных на уровне приложения.
Чё так проверять? Модель импортируешь и всё. Mongoose там какой-нибудь или dynamoose/dynamodb-onetable.
Аноним 27/09/22 Втр 15:08:09 2475553 303
Trigger.png 78Кб, 1551x857
1551x857
Backup.png 123Кб, 717x831
717x831
>>2474616 >>2474666 >>2474729
Это называется хранимая процедура или триггер (они могут быть довольно-таки страшненькими, вот посмотри на рисунок). Имеет смысл этим пользоваться в том случае, когда резервная копия базы данных создаётся не ночью раз в сутки, а прямо во время изменения данных в таблицах.

То есть, например, к каждой таблице добавляется таблица "history" с теми же столбиками и ещё несколькими (каким было действие, кто его выполнил и когда) и при каждом добавлении/изменении/удалении в таблицу "history" сбрасывается предыдущая версия строки из основной таблицы.

Или, например, создаётся вторая точно такая же база данных (на другом сервере) и при каждом добавлении/изменении/удалении строки в таблице в такую же таблицу в другой базе данных отсылается новая версия изменённой строки.

Это называется построчное резервирование, incremental backup и т.д. Подробности:
http://www.r-5.org/files/books/computers/languages/sql/nosql/Eric_Redmond_Jim_R_Wilson-Seven_Databases_in_Seven_Weeks-EN.pdf
Нажать Ctrl+F и поискать фразу:
Finally, we create our trigger to log changes after any row is updated.

А если твой вопрос был в том, чтобы добавить строку в одну таблицу, получить её первичный ключ "id" и затем добавлять строки в другие таблицы вместе с полученным ключом "id" (где он будет уже внешним ключом), то это называется get last insert id и есть в справочном руководстве по любому языку погромирования.

И никак нельзя пройти мимо книги "Изучаем SQL" (Алан Бьюли), это самая скачиваемая книга с сайта и когда-то мне её очень недоставало!

Как же орут в переговорке, пиздец просто
Аноним 27/09/22 Втр 15:13:07 2475561 304
>>2475553
Постгресс сильно отличается от майскл?
Аноним 27/09/22 Втр 15:15:52 2475567 305
>>2475561
На уровне запросов то же самое, а хранимки под неё пишутся на другом диалекте.
Аноним 27/09/22 Втр 16:11:57 2475645 306
>>2475454
Модель и проверяет 10 секунд.
Аноним 27/09/22 Втр 16:23:40 2475661 307
>>2475645
Охуительные истории итт. Одна история охуительней другой...
Аноним 28/09/22 Срд 10:38:50 2476268 308
нуб в треде.

Анончики, как мне сделать count всех таблиц что у меня есть и вывести это всё красивенько?
Аноним 28/09/22 Срд 11:58:35 2476335 309
>>2476268
Словарь данных. В каждой СУБД свои механизмы.
Аноним 28/09/22 Срд 17:57:25 2476699 310
>>2475661
Конечно, свидетели nosql любят заливать про БЕСКОНЕЧНЫЙ ГОРИЗОНТАЛЬНЫЙ РОСТ, ОХУЕННУЮ СКОРОСТЬ, ПРОСТОЙ, УДОБНЫЙ И ПОНЯТНЫЙ АПИ, а как копнёшь, то сразу всплывает анальный вендорлок, самопальный язык запросов и игнорирование ACID.
Аноним 28/09/22 Срд 18:16:10 2476718 311
Чёт я не понял, в постгресе есть способ передавать таблицы/набор строк аргументом к функциям?
Аноним 28/09/22 Срд 19:11:39 2476753 312
>>2476718
Стаковерфлов предлагает костыли ебаные: передавать массив, передавать название таблицы строкой, создавать AGGREGATE FUNCTION и подобное. Пиздец какой-то.
Аноним 29/09/22 Чтв 12:40:01 2477211 313
>>2424142 (OP)
Надо сджойнить таблицу на 200 млн строк саму с собой.
В постгрес мы просто улетаем за память и пиздец. Переработал и теперь хожу в цикле - джойню эту таблицу саму с собой но по чанкам - по 100к строк за раз - теперь это все по памяти терпит но выполняет сцуко долго

Подозреваю для такого лучше просто использовать нечто другое а не постгрес. Что и как юзать?
Аноним 30/09/22 Птн 23:07:12 2478829 314
>>2424142 (OP)
Вопрос от тупово вкатуна

Есть таблица тредов с какой то инфой внутри
Есть таблица с постами, в них хранится дата, ид треда и ещё какая то инфа

Нужен запрос написать который бы вернул треды отсортированные по датам последнего поста

или такое на чистом sql не пишут, а ручками треды сортируют?
Аноним 01/10/22 Суб 01:17:49 2478964 315
>>2463361
делаешь выборку [тред|дата последнего поста] с помощью группировки и агрегатных функций, добавляешь сортировку
Аноним 01/10/22 Суб 02:45:40 2478983 316
>>2478829
SELECT
thread.id AS thread_id,
thread.name AS thread_name,
last_post.date AS last_post_date
FROM threads as thread
JOIN
(
SELECT
post.thread_id AS thread_id,
MAX(post.created_at) AS date
FROM posts
GROUP BY posts.thread_id
) AS last_post ON last_post.thread_id = thread.id
ORDER BY last_post.date DESC;
Аноним 01/10/22 Суб 07:36:08 2479003 317
image.png 749Кб, 1117x261
1117x261
Бля пиздец ебаные деды, кто так запросы-то пишет? Ссаная каша в которой нихуя не поймешь, пока не приведешь к нормальному виду
Аноним 01/10/22 Суб 08:21:33 2479008 318
>>2478983
Спасибо,теперь понял как такое делать
Аноним 01/10/22 Суб 10:22:01 2479038 319
>>2479003
> кто так запросы-то пишет?
Успешные, здоровые люди, которые могут воспринять и распарсить у себя в голове абзац плотного текста. А ты - зумер с клиповым мышлением. Если в тексте больше трёх слов - теряешься, паникуешь.
Аноним 01/10/22 Суб 14:16:49 2479168 320
>>2479038
Дед, спок. Ты же понимаешь, что когда компания наймет несколько зумеров и они переработают твой говнокод, сделав его пригодным для рефакторинга любым человеком, то окажется, что твои знания на уровне нынешнего 2 курса нахуй не нужны и ты пойдешь на досрочную пенсию из компании?
Аноним 01/10/22 Суб 17:00:21 2479277 321
>>2479003
Всё понятно, просто форматирование хуёвое. Я иногда так пишу, когда нужно не забыть мысль и по-быстрому составить запрос, но потом всегда привожу к читаемому виду. Хуйня по сравнению с запросами на 500 строк для всяких отчётов.
Аноним 01/10/22 Суб 19:33:50 2479386 322
>>2479168
Я в той компании директор.
Аноним 01/10/22 Суб 19:40:20 2479387 323
>>2479386
Что за ИП, где директор делает работу за специалистов? Ларёк на рынке?
Аноним 01/10/22 Суб 19:49:08 2479395 324
>>2479387
Работу делаешь ты. А я тебе зарплату плачу. Если хорошо работаешь, офк.
Аноним 03/10/22 Пнд 15:38:44 2480781 325
>>2479386
Дайте премию еще 10к плес, мне на аквариум не хватает
Аноним 06/10/22 Чтв 10:19:03 2482695 326
Куда кидать AdventureWorks2012.bak?
Аноним 07/10/22 Птн 11:53:01 2483480 327
В каком-то из тредов была ссылка на годный курс по SQL на степике.
Есть у кого она?
Аноним 07/10/22 Птн 18:04:26 2483871 328
>>2440122
Отвечаю на этот пуст спустя 2 месяца кажись (?).

>>2450718 этот скрин тоже я оставлял. Он как раз из пдф-ки курса Дальневосточного универа, который мне повезло проходить бесплатно за счет того что я безработный сыч (по бумагам, фриланс наше государство не учитывает).

Короче. Оконные функции у нас как раз одна из последних тем. Табличные выражения и всякие вложенные запросы тоже проходили. Всякие методы для работы с временем, всякие IF и CASE тоже прошли. Все эти лефт, райт, кросс джойны и прочее, групповая выборка, корректировка данных (создание новых таблиц на основе старых, изменение содержимого таблиц, удаление строк, связывание таблиц через внешние ключи и прочее).

Вот блин а где почитать про "изолирование транзакций"? И вообще накидайте редких тем, которые можно/надо подучить на джуна чтобы знать какие примерно каверзные вопросы могут спросить на собесе.

Всем спасибо заранее.
Аноним 07/10/22 Птн 21:28:35 2484051 329
Аноним 08/10/22 Суб 02:02:46 2484177 330
>>2427670
Приведи пример запроса с
>WHERE table1.id = table2.table1_id
без джоинов.
Аноним 08/10/22 Суб 02:28:13 2484185 331
>>2484177
Привожу:
WHERE table1.id = table2.table1_id
Аноним 11/10/22 Втр 09:02:23 2485996 332
Пытаюсь динамические запросы раскурить в mssql, чето разобраться не могу, может кто из ананасов сталкивался. Хочу файл прочитать, но чтобы путь к нему можно было через переменную передавать:

Declare @JSON varchar(max)
Declare @QUERY varchar(max)
Declare @PATH varchar(260) = 'D:\MY_JSON.json';

set @QUERY = 'SELECT @JSON=BulkColumn FROM OPENROWSET(BULK ''' + @PATH + ''', SINGLE_CLOB) AS [Json];'
exec @QUERY

Пишет - Необходимо объявить скалярную переменную "@JSON"
Шо, я же её в самом начале объявил. Что ему ещё надо?
Аноним 11/10/22 Втр 13:27:46 2486152 333
изображение.png 7Кб, 365x162
365x162
изображение.png 19Кб, 445x317
445x317
Почему не работает? Это SQL server, если что.
Аноним 12/10/22 Срд 14:10:44 2486766 334
изображение.png 29Кб, 604x166
604x166
Как вот такое реализовывать? Тут CHECK хватит?
Аноним 12/10/22 Срд 14:19:14 2486770 335
>>2486766
Не надо блядский CHECK использовать. В базе данных никакой логики быть не должно, только данные
Аноним 12/10/22 Срд 15:21:35 2486792 336
>>2486770
Это когда ты в одно рыло пишешь весь код, Анончик...
Аноним 12/10/22 Срд 16:54:29 2486830 337
>>2486792
В одно рыло - это когда знаешь, что за неочевидная логика скрывается в очередном триггере или в констреинте на столбец. И исходник просто так хуй посмотришь, всё хранится в базе. Как только на проекте появляется хотя бы ещё один разраб, поддержка превращается в ад.
Аноним 13/10/22 Чтв 16:37:16 2487677 338
image.png 33Кб, 1012x620
1012x620
Первокур вкатун с тупым вопросом:

Предметная область оценки по предметам в университете, у меня получается так, что учебная дисциплина может быть разной, в зависимости от семестра. То есть в бд, матан за 3 семестр и 4 семестр должны отличаться.
Но как это по человечески сделать не знаю. На ум приходят только отдельную таблицу с семестрами хранить, которая будет хранить год + булеан, второй это семестр или первый.
Выглядит как то костыльно, но лучше ничего на ум не приходит
Аноним 13/10/22 Чтв 18:07:45 2487817 339
>>2485996
Так в динамическом запросе ты ее не объявлял, он же выполнять будет только то, что в строку ты вписал
Аноним 13/10/22 Чтв 20:55:07 2487967 340
>>2487677
А семестров сколько? 2? Ну и сделай тоже через INT - 1 и 2, первый и второй семестр. Булеан тут логически не очень подходит.
Аноним 13/10/22 Чтв 21:07:20 2487975 341
>>2487967
ну в каждом году по 2 семестра
годов много то есть 2022, 2021, 2020 и так далее
Аноним 14/10/22 Птн 00:02:28 2488069 342
>>2487975
Тогда можно вообще забить на такую вещь как семестры. Просто в табличку Task добавить строчки Date куда будешь в стандартном формате даты заносить время получения и сдачи-выполнения задачи. И потом уже из этих временных отметок можно будет и год и семестр и прочее извлекать.
Аноним 14/10/22 Птн 06:30:24 2488114 343
>>2424142 (OP)
Где найти норм гайды по OrangoDB? Ни книг, ни ресурсов, ничего... Одни жиденькие доки
Аноним 14/10/22 Птн 15:24:18 2488558 344
>>2488114
Первый раз про эту штуку слышу
Аноним 14/10/22 Птн 17:33:51 2488792 345
Я мб в глаза ебусь, но что-то на sql-ex не нашел упражнения на оконные функции, они там есть вообще?
Аноним 14/10/22 Птн 17:50:02 2488809 346
>>2488792
А все, нашел какие-то
Аноним 15/10/22 Суб 18:21:44 2489448 347
Салам, военнообязанные
Кто-то в курсе чем отличается знак <> от обычного != в postgresql? есть какие-топ подводные при использовании одного и другого?
Аноним 15/10/22 Суб 19:24:33 2489501 348
>>2489448
Одно и то же. Просто <> есть в стандарте SQL, а != нет.
Аноним 16/10/22 Вск 14:48:14 2489914 349
Сенсеи, волей судьбы оказался на проекте в качестве дата инженера. Хотел кежуали писать пайплайны, но стоит задача мигрировать с одной схемы на другую. Входные данные: схема в RDS c MySQL под капотом, в которой 2 таблички, но одна из них содержит текстовое поле с джейсоном, который как водится семистракчеред и от записи к записи содержит разную инфу. Помимо этого есть еще табличка (или что там у них) в DynamoDB, в которой, что интересно бля, все более менее реляционно. Выходные данные - реляционная схема, предположительно на постгресе, но в том же RDS, без NoSQL. Вопрос: Как спланировать и осуществить миграцию, чтобы все прошло гладко? Как именно осуществить выгрузку\загрузку? Мб есть для таких дел тулы в амазоне или можно в лоб скриптом на питоне? Или не в лоб и на всякий случай со сквозной записью в С3? В общем никогда подобным не занимался и не представляю как такие вещи делаются
Аноним 16/10/22 Вск 18:39:15 2490053 350
>>2489914
> Как именно осуществить выгрузку\загрузку?
database migration service погугли. есть большая вероятность, что это ван стоп шоп для твоих нужд
Аноним 16/10/22 Вск 18:45:15 2490056 351
>>2490053
про динаму не скажу, но с RDS MySQL в RDS Postgres должно быть относительно прямолинейно перекатить с помощю DMS
Аноним 17/10/22 Пнд 10:07:25 2490343 352
ZeroDowntime1.gif 67Кб, 1000x479
1000x479
>>2489914
>Как спланировать и осуществить миграцию, чтобы все прошло гладко?
Блин, чувак, это есть в доках амазона.
https://aws.amazon.com/ru/blogs/big-data/near-zero-downtime-migration-from-mysql-to-dynamodb/

Там есть инструмент называется database migration service. Он замороченный, поднимает дополнительный инстанс и делает репликацию в реальном времени. Нужно только написать правильный маппинг. Единственный геморрой что там много надо пердолить настройки - vpc поднять, роли создать, source/target создать, migration инстанс поднять, целая история короче.

Либо второй вариант -> делать дамп в S3 и помощью AWS EMR делать конвертацию. Но это на порядок сложнее.

>>2489914
>есть еще табличка (или что там у них) в DynamoDB, в которой, что интересно бля, все более менее реляционно
Как понять "реляционно"? DynamoDB базу надо уметь грамотно проектировать, чтобы выхлоп получить. У неё принципы работы другие совершенно, не такие как у MySQL.
Аноним 17/10/22 Пнд 10:09:42 2490344 353
Какая БД профитна если у нас много операций вставки и обновления?
Аноним 17/10/22 Пнд 19:23:48 2490721 354
Подскажите, пожалуйста, где можно навернуть про индексы, хочется хорошо понять, когда есть их резон юзать, когда нет, как работают.

И может еще что-то такое оптимизаторское.
Аноним 17/10/22 Пнд 20:07:21 2490761 355
>>2490752
> engine = blackhole
Ахахах, а в постгресе есть подобное?
Аноним 17/10/22 Пнд 20:41:44 2490806 356
>>2424142 (OP)
Что будет с редисом если в него запихать больше данных чем оперативка?
Будет ли он их складывать на диск?
Аноним 17/10/22 Пнд 20:43:23 2490810 357
>>2424142 (OP)
У меня есть 200ТБ данных KV которые мне надо чтобы пользователи оперативно получали. Я бы хотел их кое как шардировать какую базу выбрать для того чтобы было это поудобнее делать, монго имхо оверкил слишком сложна.
Можно попробовать потсгрес с хэш индекасами и\или каойнибудь динамодб или левел дб есть у кого опыт?
Аноним 17/10/22 Пнд 21:13:56 2490830 358
>>2490806
Гугли про виртуальную память.
Будет то же, что при попытке юзануть в своей программе больше ОЗУ, чем имеется: начнёт юзаться своп на диске (если он настроен), а вместе с этим начнутся дикие тормоза. Ну а потом свалится из-за нехватки памяти.
Аноним 17/10/22 Пнд 22:01:18 2490854 359
Аноним 17/10/22 Пнд 22:06:15 2490857 360
>>2490854
По задачам. Редис для кешей, очередей или временных данных, а не полноценная key-value СУБД.
Аноним 17/10/22 Пнд 22:13:52 2490865 361
>>2490857
Просто хотелось какой то silverbullet
Аноним 17/10/22 Пнд 22:31:23 2490884 362
>>2490865
Был бы silver bullet, никто бы не юзал другие СУБД.
Аноним 17/10/22 Пнд 23:07:13 2490911 363
Аноним 17/10/22 Пнд 23:48:10 2490928 364
image.png 171Кб, 1030x789
1030x789
Блять нихуя не понял, это перевод на русский такой корявый или я тупой?
Аноним 18/10/22 Втр 00:23:02 2490936 365
Аноним 18/10/22 Втр 08:39:24 2491001 366
>>2487817
Точно, какой же я тупой, господи
Аноним 18/10/22 Втр 21:02:49 2491392 367
>>2424142 (OP)
Есть 2 запроса:

SELECT s.id, loc.id
FROM
sourcing AS s JOIN location AS loc
ON s.id = loc.id
WHERE loc.index = 1

И

SELECT s.id, loc.id
FROM
sourcing AS s JOIN (SELECT l.id FROM location AS l WHERE l.index = 1) AS loc
ON s.id = loc.id

Результаты одни и те же, но какой из этих запросов производительнее? Обычный или топ что через subquery? Допустим возьмем postgres как РСУБД
Аноним 18/10/22 Втр 21:12:52 2491405 368
>>2491392
Смотри планы запросов, но подзапросы лучше не юзать.
Аноним 18/10/22 Втр 21:29:01 2491413 369
>>2491405
А если во втором query вынесу этот подзапрос в CTE?
19/10/22 Срд 19:13:59 2492001 370
>>2479168
>наймет зумеров
После которых всегда приходится переписывать код?
>рефакторинг
Нахуя?
>знания на уровне нынешнего 2курса
В голос - современные выпускники вузов слабее птушников 20летней давности
Обезумевший от эффекта свининга-хрюкера поридж совсем ебанулся. Тебя в принципе даже к мс-офис нельзя подпускать.
Аноним 19/10/22 Срд 19:17:12 2492004 371
>зумеродебил не может прочитать две строчки легаси

>РРРЯЯЯ ДЕДЫ ТУПЫЕ

Пынинское образование. 20 лет. Итоги.
19/10/22 Срд 19:30:32 2492021 372
>>2479003
Ты же имбецил нахуй, имбецил клинический, буквальный, а не просто оскорбление, тебя либо твоя пидорашья мать в детстве йодом не кормила, либо что то другое органическое, у тебя же когнитивные способности как у собаки, тебе не то что с данными нельзя работать - ты бы охранником критические когнитивные ошибки выдавал и тебя выпиздовали бы нахуй на пенсию по инвалидности

Ой блядь. Просто пиздец. Мелкий орк ебаный. Поколение пынявого хуесоса - отличается от предыдущих даже биологически. Вас только в цирке уродов показывать.
Надо валить из этой страны нахуй, тут орочий союз скуфов-собяниномишустиных и йододефицитных пердежей нахуевертил уже столько в любой сфере жизни или общественном институте что точка неспасения пройдена. Системный отказ, раковая опухоль, и любое действие не важно с какими намерениями его теперь только ускорит.
Аноним 19/10/22 Срд 19:34:02 2492025 373
19/10/22 Срд 19:38:06 2492033 374
Ебаное мракобесие, антиинтеллектуализм, пикирующий профессионализм, деградация по всем фронтам. Господь, жги.
19/10/22 Срд 19:48:05 2492040 375
Failed state. А ведь могли бы быть норвегией, или на худой конец канадой...
Аноним 19/10/22 Срд 19:50:26 2492041 376
Хули ты поджегся, дегенерат.
Съеби из треда лучше, а не сри
Аноним 20/10/22 Чтв 13:49:04 2492669 377
Учу sql и играюсь с тестовой базой, там есть муз. треки, жанры и тд. (база chinook, но не суть). И решил я составить запрос, что бы получить название жанра и кол-во треков для жанра с наибольшим количеством треков (возможность того, что несколько жанров бутут иметь одинаковое кол-во треков игнорируем). Первая попытка в лоб:
SELECT g.Name, count()
FROM tracks t
JOIN genres g ON t.GenreId = g.GenreId
GROUP BY t.GenreId
ORDER BY count(
) DESC
LIMIT 1;
И оно работает, но потом я решил, что сортировка это обычно медленно (~O(nlogn)), а поиск минимума быстро (O(n)), сделал вторую попытку
SELECT g.Name, max(cnt)
FROM (
SELECT count(*) as cnt, t.GenreId as gid
FROM tracks t
GROUP BY t.GenreId
)
JOIN genres g ON g.GenreId = gid;
И возникла пара вопросов:
1.Гарантируется ли то, что вызове max() остальные столбцы будут принадлежать строке с max значением (ну т.е. максимальное cnt будет 100, а gid не возьмется из другой группы)
2.Есть варианты лучше?
Аноним 20/10/22 Чтв 14:01:37 2492688 378
image.png 63Кб, 1229x671
1229x671
Сап аноны! Призываю к треду архитекторов и опытнейших людей по РБД. Я сделал базу данных для интернет магазина книг (знаю что по такой теме вас заебали), оцените качество исполнения, чего не хватает, а чего в излишке. Ну и вопросов своих накидаю
1. Нужны ли триггеры в контексте моего проекта? Если да то каких? Если нет то почему?
2. Знаю jmeter и java+jdbc, думаю оценить работу БД под нагрузкой, хочу удостоверится что схема БД обеспечивает целостность данных. Скажите насколько обосновано мое решение?
3. Думаю для каждого товара давать шестизначный артикул в формате 123456. Но я хз как можно это в постгресе сделать, думаю код генерировать на стороне сервиса а в базе по минимуму держать логику. Насколько тоже это решение обосновано?

Так же прошу анончиков накидать советов.

Целую в пупочек за помощь
Аноним 20/10/22 Чтв 14:08:56 2492701 379
Аноним 20/10/22 Чтв 14:09:36 2492702 380
>>2492701
нихрена не понял чел
Аноним 22/10/22 Суб 23:24:58 2495902 381
Есть две таблицы в постгресе, связанные внешним ключом. Нужно фильтровать выборку из одной по одному полю из другой. Пробовал и через подзапрос и через джоин, и там и там получается по несколько секунд, если заполнить таблички по 100к записей.
Есть способ сделать это быстрее?
Аноним 22/10/22 Суб 23:49:22 2495914 382
>>2495902
Индексы для этого поля есть?
Аноним 23/10/22 Вск 00:17:22 2495929 383
>>2495914
Нет. Да и смысла в нем нету наверно. Там по сути енум с 5 возможными значениями.
Аноним 23/10/22 Вск 00:41:04 2495941 384
>>2495929
А индекс для внешнего ключа? И фильтруешь ты только по этому полю или ещё каким-то? Не запрашиваешь же ты все записи для одного возможного значения, их же десятки тысяч может быть. Если фильтруешь по другим полям, на них должен быть индекс из нескольких столбцов. Надо смотреть план запроса в EXPLAIN, там не должно быть seq scan по большим таблицам.
Аноним 23/10/22 Вск 01:06:05 2495949 385
>>2495941
Ну я делаю выборку через рекурсивный with. Получаю временную таблицу в которой есть айдишник другой таблицы. Из этой временной таблицы мне нужны сущности, которые определяются одним полем в другой таблице.
Даже если я на внешний ключ изначальной таблицы надену индекс, он никак не будет работать(насколько я понимаю) в выборке, выданной cte.
>Надо смотреть план запроса в EXPLAIN, там не должно быть seq scan по большим таблицам
Ну это понятно, не ясно как. Кстати explain analyze execution time вообще выдает мне 300 секунд.
Аноним 23/10/22 Вск 11:13:05 2496058 386
Помогите, пожалуйста.

Смотрите. Есть PostgreSQL

Есть примерно следующего вида таблица:
ID : int
SerialNumber: TEXT
AppID: int
Port: int
Address: int

Так вот. Что нужно
Нужно чтобы при INSERT'е - AppID, Address - брались из "дырок", либо следующий; а Port - так же из дырок, либо из переданного массива. И чтобы при этом - оно было потокобезопасным. Т.е. можно было сделать 100 инсертов из разных потоков, и оно вставилось.

И я не знаю как сделать чтобы это работало потокобезопасно. Сейчас - костыль на уровне приложения, который ебашит очередь и по этой очереди - добавляет. Но это пиздец как медленно. 1000 записей - добавляются почти минуту. Пиздец же.
Аноним 23/10/22 Вск 14:59:33 2496198 387
Аноним 23/10/22 Вск 16:27:36 2496292 388
Есть в постгресе тип вида:
create type entity_init AS (
id bigint,
items json
)
Где джейсон - массив объектов.
Как джейсон массив из этих типов размотать в набор записей этого вида:
(
id bigint
item json
)
То есть условный массив из 5 типов, в котором 5 сущностей должен превратиться в набор из 25 записей с сохранением референсов.
Аноним 23/10/22 Вск 18:35:26 2496639 389
>>2496198
Ну. Портов всего 65535... Нужно экономить...
Ну и Address с AppID - используются сторонними системами, а они не очень хорошо воспринимают дырки.
Аноним 24/10/22 Пнд 10:08:34 2497034 390
>>2496639
Ну так сделай таблицу на 65к строк и селектом выбирай близжайший свободный порт, а при ошибке вызывай реселект.
Аноним 24/10/22 Пнд 21:59:17 2497451 391
>>2492688
хз схема вроде норм выглядит
Аноним 25/10/22 Втр 13:38:30 2497716 392
>>2424142 (OP)
Есть запрос:

DELETE FROM store WHERE id IN (:IDS_STRING)

Вместо IDS_STRING подставляем строку айдишников - перечисление через запятую. В таблице store несколько десятков миллионов записей. Вопрос, дорогие знатоки: какие подводные если там будет 10.000 айдишников? миллион? 10 миллионов? Какова там будет сложность? Условный постгрес не пережрет все ресурсы по памяти и cpu?
Аноним 25/10/22 Втр 15:29:14 2497811 393
>>2497716
В некоторых СУБД максимальное число элементов в таких списках ограничено, тупо будет ошибка.
Аноним 26/10/22 Срд 07:24:25 2498301 394
>>2497716
Разве IN в постгресе не требует набор строк (которые не string, а row)? У тебя скорее приложуха обосрётся интерполировать строку с 10 миллионов записей, вместе с постгресом.
Аноним 26/10/22 Срд 11:01:42 2498369 395
>>2424142 (OP)
Подскажите какое-нибудь мнемоническое правило, которое позволит запомнить уровни изоляции транзакции и когда какой уровень выбирать при запросе к СУБД.
Аноним 26/10/22 Срд 11:07:17 2498377 396
>>2498369
Всегда выбирать READ COMMITTED.
Аноним 26/10/22 Срд 11:10:42 2498381 397
>>2498377
На собеседованиях постоянно спрашивают все уровни изоляции транзакции, различие между ними и когда какое выбирать, чтобы добиться консистентности и скорости выполнения запросов.
Аноним 26/10/22 Срд 13:55:54 2498467 398
>>2498381
Что еще спрашивают?
Аноним 28/10/22 Птн 23:56:33 2500618 399
Сап БДач. Подскажите аноны, столкнулся с такой проблемой, есть у меня запрос:

INSERT INTO table_name_1(column1, column2, …)
VALUES (value1, value2, …) RETURNING id;

Дальше мне нужно сделать ещё одну вставку, но уже в другую таблицу, взяв id того запроса который выполнил до этого.

BEGIN;

INSERT INTO table_name_1(column1, column2, …)
VALUES (value1, value2, …) RETURNING id;

INSERT INTO table_name_2(column1, column_id, …)
VALUES (value1, id, …);

COMMIT;

И вот как сука взять id с первого запроса чтобы можно было его вставлять в другой запрос?
Аноним 29/10/22 Суб 00:24:20 2500632 400
>>2500618
RETURNING id INTO переменная;
Переменную перед этим объявляешь.
Аноним 29/10/22 Суб 12:32:31 2500756 401
1656212521223.png 141Кб, 923x821
923x821
Урок Яндекс лицея по основам SQL.
Я правильно понимаю, что они обосрались с диаграммой?
Тут жанры должны быть родительской сущностью вместо фильмов. Да и вообще, там должна быть неопределённая связь между сущностями, т.к. множество фильмов может включать множество жанров, и наоборот. Тогда надо разрешать эту неопределённую связь третьей сущностью.
А сейчас там какой-то бред получается: ID фильма кочует в таблицу жанров, количество жанров очевидно меньше фильмов и когда жанры закончатся, таблица жанров начнёт заполняться NULL.
Аноним 29/10/22 Суб 18:26:25 2500930 402
>>2500756
Нет, всё там нарисовано правильно. Жанры ничего не знают о фильмах, а фильмы знают, к какому жанру они относятся, и ссылаются на запись в таблицу жанров через столбец genre с внешним ключом на genres.id. К слову, название столбца "genre" сбивает с толку, его лучше было назвать genre_id.
> Да и вообще, там должна быть неопределённая связь между сущностями, т.к. множество фильмов может включать множество жанров, и наоборот. Тогда надо разрешать эту неопределённую связь третьей сущностью.
Наверняка для примера упростили. Не будут же про связь "многие-ко-многим" писать в самом начале основ SQL.
Аноним 29/10/22 Суб 19:03:04 2500948 403
>>2500930
Да, чет я не подумал, что там ссылка идёт на genres.id. Но я бы всё же наверное стрелочку повернул, чтобы фильмы зависели от жанров. Тогда бы не нужно было создавать этот альтернативный ключ films.genre, он бы сразу шёл из внешним ключем из таблицы genre.
Аноним 29/10/22 Суб 19:23:11 2500963 404
>>2500948
Фильмы и так зависят от жанров, стрелка показывает на зависимость. Просто такое обозначение. Если бы в таблице genres был внешний ключ, в ней пришлось бы создавать кучу одинаковых записей с одними и теми же жанрами для разных фильмов, и о нормализации пришлось бы забыть.
Аноним 30/10/22 Вск 17:04:16 2501552 405
>>2500756
Да, чот мне на курсах дальневосточных лучше объясняли. Там сразу рассказывали про всякие внешние ключи и писали сразу genre_id, а не обычный id что немного с толку сбивает.
Аноним 30/10/22 Вск 20:08:16 2501656 406
пацаны, я немного отстал от жизни. А нахуя вообще нужно что либо кроме оракл?
Аноним 30/10/22 Вск 20:16:43 2501664 407
>>2501656
Постгрес нужен как оракл для бедных, sqlite как встраиваемое хранилище конфигов для десктопов и мобилок, остальное не нужно.
Аноним 01/11/22 Втр 12:09:42 2502869 408
>>2498301
Ты сейчас оухуеешь но строку можно сформировать тем же питоном:
IDS_STRING = ', '.join(ids_list)

а потом при помощи интерполяци строк подставить в итоговый query:
f'DELETE FROM store WHERE id IN ({IDS_STRING})'
Аноним 01/11/22 Втр 12:27:33 2502880 409
>>2501656
Напомни, в Oracle СУБД все еще нет никакой проверки лицензий?
Ну тогда ты прав,да.
Аноним 01/11/22 Втр 15:10:42 2503000 410
К нам на проект недавно пришел зумерок, который принялся визжать что мы "работаем неправильно" т.к. на таблицах нет нигде индексов. Довольный засрал все индексами но охуел, когда я показал ему планировщик и записи из каталога pg_stat_all_indexes которые говорили что ни один его индекс так и не был использован

И да, это был не джун. А мидол с заявками на сеньора
Аноним 01/11/22 Втр 16:58:35 2503150 411
>>2503091
Индекс - преждевременная оптимизация. Если у тебя меньше 20К строк в таблице то можно ставить анус что планировщик так и не задействует index scan.
Аноним 01/11/22 Втр 22:20:34 2503527 412
>>2503000
и таки шо, у вас и примари кеев тоже нет?
Аноним 01/11/22 Втр 22:37:40 2503552 413
>>2503527
Ещё, небось, и uuid вместо автоинкремента.
Аноним 01/11/22 Втр 22:39:27 2503555 414
>>2503150
>Если у тебя меньше 20К строк в таблице то можно ставить анус что планировщик так и не задействует index scan.
когда как.
Ну а ты в свою очередь поставил бы поставить анус, на то, что через год там будет все еще меньше 20k?
Аноним 02/11/22 Срд 04:35:07 2503651 415
>>2424142 (OP)
PostgreSQL
Хочу такую систему, что инсерт происходит в два этапа:
1. Сначала во временную таблицу, откуда их можно прочитать, показать пользователю, а потом спросить, будет он их коммитить или нет
2. Собственно, в основную таблицу из временной.

Можно ли рассчитывать на какую-то помощь от бд? Удобный импорт из временной таблицы в основную одной командой, если у них схемы совпадают, например? Или создать временную по образу постоянной?
Или придётся всё на фронте лепить, читать из временной, записывать в постоянную?

Инфы по этому поводу что-то не особо нашёл.
Речь не про two phase commits, если что.
Аноним 02/11/22 Срд 11:09:33 2503764 416
>>2503651
Никто так не делает. Все сначала загружают предзаполненную сущность с сервера, её поля показывают пользователью, а когда пользователь подтвердит, тогда и записывают.
Аноним 02/11/22 Срд 12:28:08 2503816 417
Аноним 02/11/22 Срд 12:29:33 2503818 418
>>2503651
>Сначала во временную таблицу, откуда их можно прочитать, показать пользователю, а потом спросить, будет он их коммитить или нет
Умные дяди придумали давно такую вещь как NoSQL
Аноним 02/11/22 Срд 13:06:40 2503846 419
>>2503818
При чём тут вообще тип базы данных?
Аноним 02/11/22 Срд 13:07:54 2503849 420
>>2503846
При том что ты хочешь возложить на постгрю те функции, для которых она не предназначена
Аноним 02/11/22 Срд 13:16:00 2503853 421
>>2503849
Ни одна СУБД для этого не предназначена.
Аноним 02/11/22 Срд 13:20:37 2503856 422
>>2503853
Ты не понял что ле? Сохраняешь в монге/редисе свои ебучие данные, после тог окак юзер нажмет подтверждение, пишешь их в постгрю и чистишь кеш
Аноним 02/11/22 Срд 13:21:44 2503857 423
>>2503816
это внутренний рофл для опытных программистов, листай дальше.
Аноним 02/11/22 Срд 13:23:48 2503859 424
Стикер 536Кб, 250x250
250x250
>>2503857
>для опытных программистов
Аноним 02/11/22 Срд 13:26:04 2503861 425
>>2503651
>. Сначала во временную таблицу, откуда их можно прочитать, показать пользователю
Какую-то хуйню придумал.
Но если ты все же сможешь в своем ПО изобразить длинную транзакцию, которая держится, пока пользователь просматривает диалог, то можешь использовать CREATE TEMPORABLE TABLE.
В чем проблем?

Эти все штуки просто задолго до расцвета веба возникли. Для обычного десктопного софта все, конечно,придумано.
Аноним 02/11/22 Срд 16:30:19 2504085 426
>>2503764
>Никто так не делает.

>Следующим предложением литералли описывает, что я хочу сделать.
>Все сначала загружают предзаполненную сущность с сервера, её поля показывают пользователью, а когда пользователь подтвердит, тогда и записывают.
чё
Аноним 02/11/22 Срд 16:52:12 2504106 427
>>2503856
Да, как раз думаю, что-то маловато в моём проекте софта для баз данных, надо ещё один добавить.
Ещё хорошо бы, чтобы у них семантика отличалась, чтобы на предворительной транзакции невозможно было проверить, сожрёт ли постгрес эти данные потом. Всё проверил всё тебе нравится, дорогой пользователь? Ах, погромист не предусмотрел это минимальное различие между постгресом и редисом, вот тебе полный рот ошибок, вместо подтверждения.
Аноним 02/11/22 Срд 16:54:22 2504109 428
>>2504106
Это делается на application layer, чел
или все твое "приложение" это хранимки в постгре?
Аноним 02/11/22 Срд 18:07:45 2504185 429
Уважаемый анон. Подскажи, пожалуйста, полнейшему нубу.
Пишу вот это:

CREATE TABLE delivery (
delivery_id serial PRIMARY KEY,
address_id int references address(address_id) not null,
time_range text[] NOT NULL,
staff_id int REFERENCES staff(staff_id) NOT null,
status del_status NOT NULL DEFAULT 'в обработке',
LAST_UPDATE timestamp,
CREATE_date timestamp DEFAULT now(),
deleted boolean NOT NULL DEFAULT FALSE
)

А в ответ получаю:
SQL Error [42830]: ERROR: there is no unique constraint matching given keys for referenced table "address"

Что не так?
Аноним 02/11/22 Срд 22:00:55 2504404 430
>>2504185
address.address_id должен быть первичным ключом или иметь уникальный констреинт. Судя по ошибке, у тебя нет ни того, ни другого.
Аноним 03/11/22 Чтв 02:28:53 2504490 431
>>2503861 >>2504109
Короче, понятно. Помощи от бд я в этом не дождусь, так что придётся лепить на фронте. Жаль.
Аноним 03/11/22 Чтв 02:48:29 2504492 432
>>2504490
А чего ты ожидал? Временные таблицы за тебя фронт что ли сделают?
Аноним 03/11/22 Чтв 05:45:40 2504517 433
>>2504492
>А чего ты ожидал?
В первом посте написал, чего ожидал.

>Временные таблицы за тебя фронт что ли сделают?
За меня никто не сделает, просто придётся весь алгоритм на фронте расписывать вместо:
- эй постгрес, эхо мне вот эти данные вот в эту табличку, но пока не коммить
- ага, всё норм, заливай/не не норм, дропай
Аноним 03/11/22 Чтв 12:17:21 2504627 434
>>2504517
Так прихуярь к ним флаг "записи не проверены", если всё ок - апдейтишь на "проверены", если не ок - делитом ебашь по этому полю.
Аноним 03/11/22 Чтв 13:36:19 2504709 435
>>2504492
Есть LocalStorage. Все прекрасно хранится в нем
Аноним 03/11/22 Чтв 17:14:40 2504873 436
>>2504627
Хмм.. Да, тоже нормальная идея. Хотя тогда ко всем существующим запросам придётся добавлять, чтобы только проверенные данные выдавали. И не хотелось бы, таблицу метадатой поллютить, но можно отдельную табличку с этим сделать. Подумаю над этим, спасибо.
Аноним 04/11/22 Птн 22:43:26 2505918 437
Дублирую вопрос из нюфаг треда. Как форсированно удалить строчку в таблице, к которой форенкеем привязана строчка в другой таблице? На стаковерфлоу рассказывают про каскадное удаление, но мне нужно ровно противоположное, чтоб привязанная строчка осталась, для воспроизведения бага.
Аноним 07/11/22 Пнд 01:51:00 2507672 438
>>2505918
попробуй SET DEFAULT или SET NULL
Аноним 08/11/22 Втр 00:20:59 2508410 439
i (2).jpeg 44Кб, 960x720
960x720
Вопрос к великим архитекторам от нуба.
Будет один бот на java, он каждый день будет чекать цены товара и записывать их в базу sqlite. Список проверяемых товаров может меняться. Нужна возможность делать выборку цен по дням.
Как спроектировать таблицы/свойства, что бы было меньше гемора с выборкой? На каждую дату отдельную таблицу? Или для каждого товара сделать свойство "дата". Как организуют такое по уму?
Пока в базе есть только общий список возможных товаров.
Аноним 08/11/22 Втр 00:46:42 2508428 440
>>2508410
Одна табличка с товарами, вторая товар-дата-прайс.
Аноним 08/11/22 Втр 17:19:41 2508944 441
Как на SQLite сделать так, что если нужный текстовый столбик, в нужной записи не равен '' - пустой строке, то значит мы удаляем из этой строки один символ. Если все таки равен пустой строке, то мы берем текстовый столбик из другой записи.

IIF('' <> SELECT value FROM settingsValueTable WHERE nameValue = 'newFrequency', UPDATE settingsValueTable SET value = SUBSTR(value, 1, LENGTH(value) - 1) WHERE nameValue = 'newFrequency' RETURNING , SELECT FROM settingsValueTable WHERE nameValue = 'frequency');

Чето не выходит
Аноним 10/11/22 Чтв 12:03:01 2510512 442
Привет всем, у меня вопрос по Elasticsearch. У меня есть большой индекс с кучей документов. У документов есть поле name, где хранится название на английском. Но мне нужно добавить поддержку других языков. У меня уже есть данные по именам документов на других языках, и мне сейчас интересно вот что:

Слышал что в эластике есть анализатор языка, и можно ли как то в доках создать доп. поля на других языках и используя анализатор языка elasticsearch дергать определенное, в зависимости от языка в запросе? Если есть такая возможность, дайте, будьте добры, ссылку. Я вроде бы что-то и ищу, но это походу не то что мне нужно. Спасибо.
Аноним 10/11/22 Чтв 17:15:48 2510738 443
>>2510512
эта ебалайка совершенно контркультурна к СУБД.
Изначально была просто либа на яве, потом из нее сделали продукт для безопасников, но субд она так и не стала.

Но да, ты можешь в Индексе создавать еще "поля".

Если плохо гуглится (А ты вообще гуглил?) тебе нужно просто потерпеть и адаптироваться к тому, что в гугле много информации о старом способе работы с индексом - через веб апи.
Но потом у них появилось что-то типа SQL. Сосредоточься на нем
Аноним 10/11/22 Чтв 17:52:33 2510773 444
>>2508944
Вот я сидел изучал, по идее должна работать эта строка, но она не работает
SELECT * FROM students WHERE id = CASE WHEN '' <> (SELECT name FROM students WHERE id = 1) THEN (UPDATE students SET name = SUBSTR(name, 1, LENGTH(name) - 1) WHERE id = 1 RETURNING id) ELSE 2 END;
Аноним 10/11/22 Чтв 17:54:10 2510774 445
image.png 61Кб, 2408x422
2408x422
image.png 9Кб, 1238x240
1238x240
>>2510773
На пиках результат работы
Аноним 10/11/22 Чтв 18:41:45 2510830 446
image.png 567Кб, 1280x563
1280x563
image.png 35Кб, 728x242
728x242
в принципе решил проблему, но как то не элегантно, пришлось добавить дополнительный столбик в который записывается значение для проверки, пытались ли удалить из столбика значение или нет
Аноним 10/11/22 Чтв 20:07:52 2510888 447
image.png 23Кб, 515x191
515x191
image.png 25Кб, 446x279
446x279
Аноны,как убрать такого рода дубликаты из правого столбца?
Надо что бы если было либо "NOT SELECTED" лмбо то значение что ввел юзер в БД.
То есть 113-115 строки заполнены нормально, т.к. там ничего не задано, а вот 83-85 дублируются.
БД - PostgreSQL
Таблица g-feature относится как O2M к g-value
Аноним 11/11/22 Птн 11:23:30 2511131 448
1.png 42Кб, 963x478
963x478
2.png 29Кб, 658x515
658x515
3.png 38Кб, 1507x235
1507x235
4.png 16Кб, 991x599
991x599
Сап, помогите плз, не придумал, как попроще описать, но надеюсь поймете. Мне не понятно как правильно сделать одну аггрегацию, которую я выделил на первом скрине.

В общем есть БД, схема на 4 скрине. В центре таблица пробитых чеков в магазинах. Мне нужно сделать выборку как на 3 скрине. То есть выводить показатели типа общая стоимость, наценка, маржа итд по каждой дате в каждом магазине для каждого товара. Это я сделал и вроде бы правильно.

Проблема в последнем столбце. В нем я должен выводить, какой процент от общего числа продаж в этом магазине за эту дату в этой группе товаров занимает каждый товар. То есть например всего за такое-то число в магазине номер 1 было продано БАДов на 10000 руб, а какого-нибудь там фуфломицина на 1000 руб, значит в последней графе будет 10%.
Трудность в чем: в процедуру может передаваться список необходимых групп товаров, и мне нужно выводить данные по этим группам. На втором скрине код, который разбивает полученную строку и помещает значения в таблицу-переменную.

И я никак не могу понять, как передать в подзапрос, считающий общее количество продаж, как бы текущую группу продаж, по которой сейчас идет основной запрос. На 3 скрине можете заметить, что у БАДов и у Косметических средств у меня одно и то же значение в последней графе. То есть он не берет в расчет группу товаров. (я знаю, что там должен быть процент, просто для упрощения я пока только сумму вывожу, потому что в ней проблема).

Ну вот. Подкиньте идею плз, если поняли, че я написал. Второй день уже ебусь.
Аноним 13/11/22 Вск 23:16:18 2513307 449
>>2503150
3 иерархические таблицы с one-to-many (самый просто случай) в среднем 1 к 10, и в верхней таблице достаточно 200 записей
>>2503651
Ты пытаешься дрочить БД бизнес-логикой, которая должна быть на уровне приложения. Добавь в свою таблицу published_at TIMESTAMPTZ и триггер, который проверяет нуловое значение этой колонки при апдейте, и не еби мозг.
Аноним 14/11/22 Пнд 12:57:59 2513586 450
Задача - проверять parquet файлы на валидность. Т.е. я прочитал схему pearquet, мне нужно сравнить ее с эталонным файлом - соответствие колонок и типов данных, одно из предложений - схема xsd. Где можно посмотреть примеры данной схемы и стоит ли использовать xsd, может есть другие варианты проверки?
Аноним 14/11/22 Пнд 14:37:04 2513641 451
>>2513586
Убедил коллег в удобстве yaml. Вопрос неактуален
Аноним 15/11/22 Втр 18:22:21 2514475 452
Привет, есть кто работал в Qliq Sense
Аноним 16/11/22 Срд 19:25:50 2515323 453
>>2424142 (OP)
Поясните по братски на сколько лучше доступ к таблице по кластерному индексу с низкой селективностью = низкая избирательность = остаётся много строк после наложения условия лучше доступа по обычному индексу?
Аноним 16/11/22 Срд 21:15:23 2515446 454
Почему Repeatable read переводят как повторяющееся чтение, а не воспроизводимое?
Аноним 16/11/22 Срд 22:08:44 2515497 455
>>2515446
Потому что один долбоёб когда-то так перевёл, не зная слова "повторимый", а остальные повторяют за ним как попугаи.
Аноним 17/11/22 Чтв 17:26:02 2516105 456
ogog15193322672[...].jpg 83Кб, 1200x464
1200x464
Аноним 18/11/22 Птн 11:58:48 2516540 457
Аноним 18/11/22 Птн 12:16:39 2516551 458
>>2515323
Я не мега-омега эксперт в оптимизации, но по мне так тут больше партиции помогут.
Аноним 18/11/22 Птн 14:39:51 2516634 459
Аноним 18/11/22 Птн 18:27:06 2516891 460
>>2515323
вмысли "насколько" ?
ну сгенери похожие на твои данные и померяй.

Тебе никто не отвечает потому что вопрос тупой.
Аноним 19/11/22 Суб 01:15:14 2517178 461
а че, есть прям вакансии БАЗАТОРОВ ДАННАТОРОВ? типа специальные должности для людей, чтоб они сидели и писали селектики целыми днями?
Аноним 19/11/22 Суб 01:38:48 2517191 462
>>2517178
Администраторы баз данных / DBA.
И разработчики на всяких PL/SQL, T-SQL, PL/pgSQL, которые пишут всю логику приложения на хранимых процедурах, в основном это легаси или специфичное типа OLAP.
Аноним 19/11/22 Суб 11:53:11 2517338 463
123.jpg 108Кб, 1220x600
1220x600
6.jpg 86Кб, 733x493
733x493
Решаю домашку, есть задача пикрил. И моё решение.
Меня терзают сомнения, а возможно ли сделать это без джойнов, одними селектами? Не вдупляю, как впихнуть селекты вместо полей, ну типа
>select pole, select()... from...
так что ли?
Аноним 19/11/22 Суб 12:45:45 2517362 464
>>2517338
>Меня терзают сомнения, а возможно ли сделать это без джойнов, одними селектами?
Тебе для сравнения данных с нескольких таблиц в любом случае придётся джоины делать, даже неявные.
Альтернатива - вложенные селекты по типу SELECT id, name AS department name FROM "Department" WHERE id IN ( SELECT ... ).
Аноним 19/11/22 Суб 13:07:56 2517374 465
>>2517338
Нормализация и джойны именно для такого и придуманы.
20/11/22 Вск 13:12:23 2518217 466
>>2517178
ETL Developer
DWH Developer
Data Engineering
20/11/22 Вск 13:15:06 2518219 467
>>2517178
Аналитик данных
BI Developer
Аноним 21/11/22 Пнд 21:34:54 2519823 468
image.png 12Кб, 423x219
423x219
Сап двощь. Помоги плес.
Вот вводные:
Есть две таблицы, для них нужно сгенерировать тестовые данные, только вот проблема для меня в том, что после вставки в таблицу #1 нужно взять его айдишник и вставить в таблицу #2. Для генерации я использую generate series(), для того чтобы брать айдишник и вставлять в следующую таблицу я использую CTE (конструкцию WITH AS). Только вот вариант на пикрил работает только если нужно вставить 1 строку (под определение генерации данных слабо подходит как по мне). И как реализовать такой запрос чтобы решить эту проблему? Помогай двощ, а то я с ума сойду((
Аноним 21/11/22 Пнд 21:45:56 2519840 469
>>2519823
или забить хуй и написать функцию в котором будет цикл? если что, нужно нагенерить данных не больше чем на сотню тысяч, о десятках миллионов речи не идет, а то ещё накинете йобаскрипт
Аноним 22/11/22 Втр 09:32:01 2520078 470
>>2519823
Какую блять строку, чё ты вообще несёшь?
Аноним 22/11/22 Втр 09:42:39 2520085 471
>>2520078
Column - столбец
Row - строка
Что тебя не устраивает дебич?
Аноним 22/11/22 Втр 18:34:14 2520666 472
Сап, назрел такой вопрос.
У меня есть ТАБЛЦА со списком ТАБЛИЦ. Как в подзапрос подставить имя таблицы в поле фром? Что-то вроде этого:

slect
TABENAME
,(
select count(GOVNO) as GO
from ZA.TABENAME
)

from ZALUPA as ZA
Аноним 22/11/22 Втр 18:37:36 2520678 473
image.png 24Кб, 561x343
561x343
image.png 28Кб, 662x356
662x356
Сап базач. Нуб итт.
Пикрил 1: простой первичный ключ в таблице Customers, внешний ключ в таблице Orders работает, возвращая в конце обновлённые данные.
Пикрил 2: составной первичный ключ в таблице Customers, внешний ключ в таблице Orders не работает, возвращая в конце старые данные.

Почему такое поведение с составными первичными ключами?
Аноним 22/11/22 Втр 18:53:33 2520699 474
>>2520666
Напрямую никак, надо какие-то переменные вводить и подобную хуйню.
Аноним 22/11/22 Втр 19:38:27 2520775 475
>>2520699
хуйня-с, придётся обратится к лунной призме
Аноним 24/11/22 Чтв 17:55:59 2522326 476
Есть вопрос. Кто-нибудь занимается с БД Firebird. Так случилось что мне приходиться тесно работать с ними, и это надолго. Отзовитесь. В каких проектах используете? Очень хочется знать что я не один такой на двощах

крик отчаяния
Аноним 24/11/22 Чтв 17:57:44 2522329 477
Аноним 24/11/22 Чтв 18:16:07 2522348 478
>>2522326
Делал на нём лабы в вузе много лет назад. Большое вообще ни от кого про него не слышал.
Аноним 25/11/22 Птн 16:33:40 2523040 479
Подскажите пожалуйста направление нахуй.
В общем сам я околоайти и у меня есть файл.sql весом 42 гига из которого мне нужно вытащить таблицу со столбцами userID, currency, balance, но как на деле они в этой БД названы я не знаю. Есть какой-то простой способ единожды извлечь эти данные?
Аноним 25/11/22 Птн 16:37:17 2523043 480
Аноним 25/11/22 Птн 18:32:20 2523166 481
>>2424142 (OP)
Антоны, не могу решить задачу. Гугл не помог разобраться.

Есть джве таблицы. Актуальная дата сегодняшняя.
1. Столбцы предмет, локация продажи, цена и дата, когда эта цена была актуальна. Для комбинации предмет/локация может быть несколько строк с ценами для разных дат.
2. Зона и локация в этой зоне.
Необходимо сделать выборку, в которой будут предмет, цена на ближайшую дату к текущей для зоны 1, цена на ближайшую дату для зоны 2, разницу между этими ценами. Всего 4 столбца.

Хз, как это сделать.
Аноним 25/11/22 Птн 19:38:31 2523233 482
>>2523043
Добра анонче. Действительно помогло
Аноним 25/11/22 Птн 21:47:50 2523317 483
>>2523166
находим цены из первого региона
находим из второго
джойним
в селекте цены вычитаем и обзываем разница
Аноним 25/11/22 Птн 23:25:12 2523380 484
>>2523040
должны быть справочники типа all_tab_columns
Аноним 28/11/22 Пнд 17:56:35 2525822 485
>>Задачи:
>>- https://www.codewars.com/?language=sql
Боже, какое же говно. Задачки как будто по ЯПу, а не по работе с базами данных. Замени букву в стройке, вычисли фибонначии... Где извлечение хитровебанных наборов данных из БД??? Регался там с надеждой на куче новых задачек, остался сильно разочарованным.
Аноним 28/11/22 Пнд 18:06:50 2525826 486
Аноним 28/11/22 Пнд 22:24:14 2526014 487
>>2424142 (OP)
аноны, тут есть те кто вкатывались к эксель? ищу сейчас работу, но хочу офисобыдлом быть, реально ли выучить за месяц впр гтр чето там сводные таблицы? формулки еще со школы умею делать, а вот sql очень тяжело идет, решил за неделю уже под 30 задач на sqlexe но все еще путаюсь в совсем стандартных вещах
ну и заодно может курс по экселю посоветуйте, чтоли
Аноним 28/11/22 Пнд 22:30:39 2526018 488
>>2526014
Эксель не имеет никакого отношения к sql, у мс есть аксес, это такой-сякой заменитель скулайта, хотя он очень сдулся в последние годы. Но сам эксель весьма нихуев, 95% его использования это тупые списки, но там можно наворотить дел при умелом использовании.
Аноним 28/11/22 Пнд 22:34:07 2526019 489
>>2526018
я про саму идею баз данных, просто даже для постгреса я тупенький, а вот с экселем вроде неплохо на огэ и егэ было
но в вуз не поступил, ищу работу сейчас
жаль что треда нет для него, спасибо за ответ
Аноним 28/11/22 Пнд 22:38:39 2526020 490
>>2526019
Он никак не связан с рсубд, не знаю, с чего ты это взял.
Твоё неплохо это средняя тётя срака с бухгалтерии.
Аноним 28/11/22 Пнд 22:46:48 2526024 491
>>2526020
это так( еще везде 1с требуют вместе с экселем, так что даже хз пока, посмотрю что нужно 1сникам знать
Аноним 28/11/22 Пнд 22:58:52 2526029 492
>>2526024
Тут суть именно в знании этой бухгалетрской хуйни, всё остальное это лишь инструменты. Надо решить - ты бугхалтер с знанием автоматизации или пограмист с знанием бухгалтерии.
Я вот лет десять зарабатываю на датамайнинге спортивных матчей, хотя про эти виды спорта я знаю чуть более чем нихуя. Но клиенты получают профит. Они довольны и я доволен.
Аноним 29/11/22 Втр 15:17:33 2526494 493
аноны, салям.

нужна помощь с методом решения моей задачи, запрос напишу сам, но объясните, какие именно операторы или методы помогут или могут помочь. т е куда копать, дальше сам.

есть таблица, упрощенно выглядящая так:

стА стБ

123 НЕТ
123 НЕТ
123 НЕТ
456 НЕТ
456 НЕТ
456 ДА
789 ДА
789 НЕТ
789 НЕТ
и т д

как мне достать все значения стА у которых стБ всегда НЕТ?

пасиба
Аноним 29/11/22 Втр 17:39:47 2526635 494
Аноним 29/11/22 Втр 19:58:21 2526774 495
>>2522326
Учился на ней, моя любимая
Аноним 29/11/22 Втр 22:02:33 2526836 496
Есть БД постгрес, в ней одна таблица json_table вида:
id | jsonb
----+---------------------------------------------------------------------
13 | {"Pop": 1, "city": "new york", "food": "apple", "state": "NY"}
14 | {"Pop": 2, "city": "los angeles", "food": "avocado", "state": "CA"}
15 | {"Pop": 3, "city": "buffalo", "food": "apple", "state": "NY"}

Мне надо извлечь из нее все строки, где "food": "apple" и "state": "NY", т.е. 13 и 15 (строки полностью, включая столбец id).
Каким запросом я могу это сделать?
Аноним 29/11/22 Втр 22:08:18 2526844 497
Аноним 29/11/22 Втр 22:10:12 2526846 498
>>2526836
Бля, не очень удачный пример, мне нужно чтобы 2 пары ключ-значение могли стоять где угодно в одной строке, т.е например state идет перед city, но выборка должна быть "state": "NY" и "food": "apple"
>>2526844
Спасибо, гений.
Аноним 29/11/22 Втр 22:28:19 2526858 499
Аноним 30/11/22 Срд 03:38:02 2526937 500
Аноним 30/11/22 Срд 05:17:14 2526945 501
Аноним 30/11/22 Срд 05:18:46 2526946 502
Аноним 30/11/22 Срд 07:08:39 2526966 503
>>2526946
о нифига как можно. спасибо анон за науку
Аноним 30/11/22 Срд 19:51:07 2527448 504
>>2517178
То ли дело набирать макак писать эндпоинты и проверять нулы целыми днями.
Аноним 04/12/22 Вск 02:23:54 2530165 505
Сильно не бейте, я новичок и если в своих рассуждениях не прав - поправьте.

Есть ли реальные преимущества у nosql для oltp баз данных?

Какие преимущества и в каких кейсах?
Только инмемори кей-велью для кешей для меня очевидны.

У клепмана читал преимущества графовых. Он там пугал, что обход графа в реляционках можно заменить рекурсивными сте. Но на деле в них ничего особо страшного не оказалось, для простых кейсов вполне норм. Ну конечно если сложные обходы сложных графов или поиск в них, то да. Еще я слышал, что у графовых проблемы с большими объемами.
Какие преимущества у монги перед jsonb вообще не ясно.

Для olap вот бд колоночные(аналитика) и временных рядов(метрики) намного лучше, чем реляционки.
И вообще анончики, расскажите плиз с какими nosql вы работали и для каких кейсов.
Аноним 04/12/22 Вск 06:08:46 2530213 506
>>2530165
Нет у них преимуществ для OLTP. Большинство предметных областей естественным образом предполагает таблицы, доказано тысячами кабанов, ведущих учёт в стопке экселек. При любых попытках юзануть NoSQL для OLTP очень скоро возникают проблемы из-за отсутствия транзакций, избыточных данных и слабоструктурированной схемы. Разве что могут немного ускорить разработку MVP-продукта, и то спорно.
Вот в специфичных задачах типа кешей и OLAP да, без NoSQL сложно обойтись.
04/12/22 Вск 06:18:39 2530222 507
Аноним 06/12/22 Втр 12:54:14 2532577 508
image.png 12Кб, 424x184
424x184
Есть таблица в Postgre, нужно удалить от туда все дубликаты, где одинаковый ticketdocument_id и couponnumber, оставив по одному значению, где object_id - самый максимальный.

Накидал пока что запрос на выборку всех дубликатов:

SELECT
tt1.ticketdocument_id,
tt1.couponnumber,
tt1.object_id
FROM
t_ticketcoupon tt1
WHERE
(
SELECT
COUNT(*)
FROM
t_ticketcoupon tt2
WHERE
tt1.ticketdocument_id = tt2.ticketdocument_id
AND tt1.couponnumber = tt2.couponnumber
)> 1

Результат на скрине. Теперь нужно удалить все дубли, в бд остались записи с максимальным objectId на каждый ticketdocument_id + couponNumber:

714051911281567336217140519112815673367
714051911281567336227140519112815673368
714051911281567336237140519112815673369
714051911281567336247140519112815673370

Подскажите плз, как это сделать?
Аноним 06/12/22 Втр 12:55:17 2532579 509
image.png 10Кб, 498x94
498x94
>>2532577
Проебался с разметкой, вот нужный результат:
помогите сделать диаграмму развертывания на тему почтовый клиент анжелла 06/12/22 Втр 13:56:35 2532632 510
не могу понять как сделать диаграмму развертывания для почтового клиента
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов