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

Ответить в тред Ответить в тред
Check this out!
Шардинговый реплицируемый баз данных тред v1.2 /sql/ Аноним # OP 01/06/21 Втр 20:19:19 20524081
image.png 3104Кб, 1951x2560
1951x2560
image.png 284Кб, 429x420
429x420
Предыдущий >>1964573 (OP)

Туториалы на русском для тех, кто не умеет гуглить, не может в английский и вообще готов жрать что угодно:
SQL:
- MySQL, Postgres, SQL Server: https://metanit.com/sql/
- Синтаксис SQL кратко: https://learnxinyminutes.com/docs/ru-ru/sql-ru/
- Плейлисты по разным СУБД: https://www.youtube.com/c/SQLDeveloperBI/playlists
- Тоже плейлист, сортировка хуёвая: https://www.youtube.com/watch?v=EHvzvwAv7RU&list=PLY7PmJJFH5nT-lbFKxfbp3rw5BBuq5Azo[РАСКРЫТЬ][РАСКРЫТЬ]
- https://www.youtube.com/c/SQLDeveloperBI
NoSQL:
- MongoDB: https://metanit.com/nosql/mongodb/
- Cassandra: https://proselyte.net/tutorials/cassandra/

На инглише:
SQL:
- https://www.w3schools.com/sql/

Литература:
- Прибыл Фейерштейн. Oracle PL/SQL. Для профессионалов - если уметь исказть, можно найти бесплатно без СМС и на русском.
- Алан Бьюли. Изучаем SQL. - про MySQL, тоже легко находится. Довольно старая, но базовые вещи не сильно меняются.
- К. Дж. Дейт. Введение в системы баз данных - талмуд на овер 1000 страниц.
- Томас Кайт. Oracle для профессионалов - тоже талмуд.

Задачки для оттачивания sql-скилов:
- https://www.sql-ex.ru
- http://sql-tutorial.ru/
- https://www.codewars.com/?language=sql

ETL, OLAP, DWH и другие умные слова:
- https://www.youtube.com/watch?v=WPZuzDJXs-Q&list=PLhhjwMYxzolhP29LSPPwORVQxJX5OjYix[РАСКРЫТЬ][РАСКРЫТЬ]
- OLAP DAX Power BI: https://www.youtube.com/playlist?list=PLhhjwMYxzolhXuySjLR2_n-xb6VvWnjju

Прочее:
- 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/


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

Q: Что лучше, SQL или NoSQL?
A: Как обычно, зависит от задач. Нужна любой ценой скорость - бери NoSQL, нужна согласованность данных - SQL. У всего свои плюсы и минусы, и в обозримом будущем ни один подход не заменит другой полностью.

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

Здесь мы:
- Негодуем, почему шапка - говно, и предлагаем коллективному ОПу идеи, как её улучшить.
- Разбираемся, почему PostgreSQL - не Oracle
- Пытаемся понять, зачем нужен Тырпрайс, если есть бесплатный опенсурс
- Обсуждаем, какие новые тенденции хранения данных появляются в современном цифровом обеществе
- Решаем всем тредом лабы для заплутавших студентов и задачки с sql-ex для тех, у кого завтра ПЕРВОЕ собеседование
- Анализируем, как работает поиск вконтакте
- И просто хорошо проводим время, обсирая чужой код, не раскрывая, как писать правильно
Аноним 01/06/21 Втр 20:28:57 20524142
cda7ed356f7a4a0[...].png 13Кб, 860x458
860x458
Подскажите, можно ли как-то при группировке выбирать любое значение в постгресе?
Типа
SELECT some(title) -- похуй какой, любой существующий сойдет
FROM projects
GROUP BY department_id

Понятно, что можно взять min/max. Но зачем лишняя сортировка, если похуй.
Аноним 01/06/21 Втр 20:32:23 20524163
>>2052414
Так просто title, оно вроде рандомно и будет.
Аноним 01/06/21 Втр 20:35:05 20524194
>>2052416
>>2052417
Не, в постгресе тогда нужно это поле включать в GROUP BY, иначе он не знает, какое значение брать.
Аноним 01/06/21 Втр 21:45:25 20525225
Аноним 02/06/21 Срд 01:27:43 20527386
изображение.png 290Кб, 637x358
637x358
Сам аноны. В прошлом тхреде говорили что чтобы расти, неплохо бы знать какой-нибудь язык программирования. А где тащемта его применять? Ну вот начал я вкатываться условный питохон, но дальше? Где у них точки пересечения с SQL?
Аноним 02/06/21 Срд 01:43:44 20527437
>>2052738
Обычно в бэкенде, есть у тебя некая серверная приложуха на каком-нибудь фреймворке, и надо где-то хранить данные. Иногда там не голый SQL, а всякие ORM или вообще говно-nosql.
Бывает и не бэкенд, какие-нибудь скрипты для ETL/OLAP/машинного обучения, либо десктопные/мобильные приложения с небольшой встроенной БД.
Аноним 02/06/21 Срд 01:48:09 20527458
Аноним 02/06/21 Срд 06:06:04 20527869
>>2052745
Да, дата инженер..Ну где это точка перехода не понятно пока. В повседневную работу с бд, трудно применить эти знания.

>>2052743
Ну есть приложение, это больше про программирование, другая область.
Аноним 02/06/21 Срд 12:31:50 205300810
>>2052522
Ну там все какое-то извращение.
DISTINCT ON действительно берет первый попавшийся. Но если хочешь сортировку результатов, то придется ставить первым полем в сортировке то которое в дистинкт. А это нахуй делает его ненужным.
Аноним 02/06/21 Срд 13:30:01 205307711
>>2052786
Точка входа слишком хитрая, потому что все под ДЕ понимают разные вещи. По крайней мере, огромная разница между странами. У нас это дрочево кафок спарков и хуйвов, довольно бессмысленное и адхоковое, вынужден заметить. В Европках и Штатах это продолжение BI, поэтому начинается с Dimensional Modelling, шкуэль, вот это все.

Я бы наверн советовал начинать с обмазывания Кимбалом-Росс, и только потом хардскиллы про конкретные фреймворки. Но мапредьюс наверное стоит в деталях разобрать (вплоть до верхнеуровневых реализаций отдельных частей) параллельно с первым пунктом, потому что по нему тебя будут собеседовать в рашке. Поэтому тут неплохо посмотреть какой-нибудь курс про распределенные вычисления и кишки БД.

Платят кстати ДЕ заебца, и херочки каждый день в линке пишут.
Аноним 03/06/21 Чтв 12:03:35 205459212
Всем привет, подскажите, пожалуйста, Дейт пишет что в реляционных БД операции производятся над множествами строк, но когда он представляет SQL, то вводит понятие курсора. Это пример не возможности воплотить идею в действительности? То есть, операции в SQL всё-таки выполняются по каждой строчке отдельно?
Аноним 03/06/21 Чтв 12:27:35 205465013
>>2054592
A join B это операция над множествами. С точки зрения пользователя и конечного результата.
При этом в кишочках реляционной базы эта операция происходит построчно, но в этом нет никакого противоречия.
Аноним 03/06/21 Чтв 12:39:06 205467514
>>2054592
курсор это костыль для веб макак
Аноним 03/06/21 Чтв 14:20:48 205484415
Аноним 06/06/21 Вск 08:59:00 205881416
16022410875050.jpg 425Кб, 2048x1024
2048x1024
Кто не давно был-проводил собеседование? Что спрашивают на мидла?
Аноним 06/06/21 Вск 18:28:33 205956917
>>2058814
Ты бы хоть название желаемой должности написал.
Аноним 06/06/21 Вск 19:38:46 205971418
Аноним 07/06/21 Пнд 05:15:30 206013119
>>2059569

Ну мы же sql тхереде? DBA, аналитик, или ещё какое-нибудь говно где основная занятость ковыряться в sql.
Аноним 08/06/21 Втр 12:00:57 206150820
learning sql al[...].png 437Кб, 813x1073
813x1073
leguha.png 2681Кб, 1920x1080
1920x1080
>>2052408 (OP)
>- Алан Бьюли. Изучаем SQL. - про MySQL, тоже легко находится. Довольно старая, но базовые вещи не сильно меняются.
Третье издание - 2020 год, ничего не старая. С ультимативной HD-лягухой на обложке.
Аноним 08/06/21 Втр 17:53:04 206197321
image.png 88Кб, 726x828
726x828
image.png 85Кб, 640x828
640x828
image.png 87Кб, 702x826
702x826
image.png 85Кб, 692x854
692x854
>>2052408 (OP)
Продублирую сюда, не все же ньюфаг-тред отслеживают.
Надо сделать в цикле а=а+1. Так не работает. Как надо? Язык - plpgsql
Аноним 08/06/21 Втр 17:57:37 206198322
VeviyDHgMds.jpg 79Кб, 716x508
716x508
Напомните почему mysql не работает на винде
Аноним 08/06/21 Втр 17:59:21 206198623
>>2061983
Потому что ты не добавил его в РАТН.
Аноним 08/06/21 Втр 18:06:57 206200324
>>2061973
Ты не задаешь значение суммы в начале, а 1 + null внезапно равно null. Очень плохо, очень стыдно, не надо тебе в айти.
Аноним 08/06/21 Втр 18:09:28 206201125
>>2062003
>1 + null внезапно равно null
Как интересно! Где ещё так кроме SQL?
Аноним 08/06/21 Втр 18:09:40 206201226
>>2061973
>>2062003
Ну и чтобы тебя окончательно добить, замечу, что ты пытаешься продублировать функционал оконных функций, которые вроде и так должны быть в постгре.
Аноним 08/06/21 Втр 18:16:23 206202727
>>2062011
А где не так? Ты прибавляешь к единице "хуй знает что" и очевидно, что и конечный результат будет "хуй знает что". Потому что ты не можешь утверждать, что "хуй знает что" == 0.
Аноним 08/06/21 Втр 18:18:56 206203528
>>2062027
> Потому что ты не можешь утверждать, что "хуй знает что" == 0.
Можешь в жопаскрипте.
Аноним 08/06/21 Втр 18:19:53 206204129
>>2062035
Извините, я великий программист, а не макака, в моих языках все правильно и логично.
Аноним 08/06/21 Втр 18:21:58 206204630
image.png 90Кб, 689x855
689x855
>>2062027
У нас в go переменные при инициализации получают значение по-умолчанию, то есть определенное для своего типа нулевое значение. И вот так делать не надо. Спасибо, заработало.
Аноним 08/06/21 Втр 18:24:26 206205731
>>2062012
Я изучаю работу с переменными на первом примере, который пришел на ум.
Аноним 08/06/21 Втр 18:26:42 206206332
>>2062046
Обращайся, извини за грубость.
Аноним 08/06/21 Втр 18:49:41 206210933
Почему перекинуть базу с постгри на мюскль оказалось нетривиальной задачей? Пробовал pgloader, но обосрался. В качестве приложения юзаю бобра.
Аноним 08/06/21 Втр 18:52:01 206211034
как сделать,что внеся сумму,БД сама чрез время отняла икс сумму
Аноним 08/06/21 Втр 18:54:11 206211535
>>2062110
На уровне приложения.
Аноним 08/06/21 Втр 18:54:49 206211836
>>2062115
таймер на исполнение функции?
Аноним 08/06/21 Втр 18:55:56 206212037
Аноним 08/06/21 Втр 18:57:37 206212338
>>2062120
но я не знаю,как на пхп сделать эту фичу на каждого пользователя
Аноним 08/06/21 Втр 21:36:18 206235839
>>2061986
А где он находится?
Аноним 08/06/21 Втр 21:40:53 206236140
>>2062358
А кто тебя знает, куда ты его установил, поищи папку MySQL в обеих program files.
Аноним 08/06/21 Втр 21:48:17 206237341
Анонче, пытаюсь вкатиться в SQL, но ппц застопорился на джоинах и селектах внутри селектов. Плюс ко всему, я еще работаю с Clickhouse и поэтому классический sql-синтаксис из гайдов там не работает. Есть у кого на примере хорошие гайды с примерами запросов, которые можно препарировать?
Речь идет о запросах вида
select from ((select from t1) any left join (select * from t2)) using id
Аноним 08/06/21 Втр 21:48:47 206237442
VeviyDHgMds.jpg 46Кб, 1282x274
1282x274
Аноним 08/06/21 Втр 21:49:17 206237643
>>2062373
Так и знал, что обезьяна съест звездочки.

select Ж from ((select Ж from t1) any left join (select Ж from t2)) using id
Аноним 08/06/21 Втр 21:50:34 206237944
Аноним 08/06/21 Втр 21:51:29 206238045
VeviyDHgMds.jpg 47Кб, 718x296
718x296
Аноним 08/06/21 Втр 21:54:00 206238446
>>2062380
В папке, которую ты нашёл, лежит mysql.exe? Именно эту папку ты добавил в PATH?
Аноним 08/06/21 Втр 21:54:54 206238547
>>2062376
Это жжж неспроста.
select ⚹ from ((select ⚹ from t1) any left join (select ⚹ from t2)) using id
Аноним 08/06/21 Втр 21:55:15 206238748
Как лучше всего хранить историю чата месенджера? Они вообще это в каких структурах данных делают? Не в эскюэльке же простой,

А ещё учитывая что нужен поиск по сообщениями.
Аноним 08/06/21 Втр 21:57:38 206239049
image.png 7Кб, 396x108
396x108
>>2062380
>>2062384
Тащемта, mysql это клиент, сервер это mysqld
Алсо, в шинде сто лет уже есть хуитка для управления - notifier.
Аноним 08/06/21 Втр 21:58:15 206239350
>>2062384
Все, я просто в путь мускл.ехе добавил
Аноним 08/06/21 Втр 21:58:36 206239451
>>2062380
Пиздец потом таки дауничи рассказывают как в линупсе все заебись а венда маздай. сосноль то хоть открыл заново после того как path изменил?
Аноним 08/06/21 Втр 21:59:29 206239552
>>2062387
Почему нет? Заебись ложится на реляционность. Поиск есть искаропки или сторонние движки.
Тот же скупик в скулайте хранит, другие вполне возможно что тоже.
Аноним 08/06/21 Втр 22:00:35 206239753
VeviyDHgMds.jpg 60Кб, 834x366
834x366
Аноним 08/06/21 Втр 22:01:02 206239954
>>2062394
Ну там таких проблем нет
Аноним 08/06/21 Втр 22:01:07 206240055
>>2062397
Вспоминай пароль, который ты указывал при установке.
Аноним 08/06/21 Втр 22:04:19 206240156
Если я в монгодб хочу проверять массив на пустоту (массив при этом может быть как пустым, так и null-ом), во-первых, как это лучше всего делать? Сейчас у меня запрос "array.0": { $exists: true }. Во-вторых при таком подходе планировщик запросов игнорирует индекс на array. Можно указать его через хинт, но я не пойму, будет ли какой-то прирост производительности.
Аноним 08/06/21 Втр 22:06:17 206240257
>>2062400
Так он и не дает его ввести
Аноним 08/06/21 Втр 22:07:30 206240458
>>2062399
Каких нет? Что если исполняемый файл не в path система что ли из сральни его достанет?
Зато есть танкер своих вроде того что надо всю систему обновить целиком чтобы последнюю версию чего либо поставить и все равно все будет устаревшее потому что у дауничей все на все завязано через общие библиотеки - а винде таких проблем нет ставишь что хочешь и мозг себе не ебешь. Алсо у прыщедаунов даже . в path нет; и каждый пук надо через sudo делать - прыщебезопасность.
Аноним 08/06/21 Втр 22:09:02 206240559
Аноним 08/06/21 Втр 22:10:13 206240760
>>2062404
>а винде таких проблем нет ставишь что хочешь и мозг себе не ебешь

Ну я как видишь не могу запустить даже базу данных после прописки в патч, в терминале это делается и запускается одной командой
Аноним 08/06/21 Втр 22:10:50 206240861
>>2062405
А, точно, спасибо зарабатало
Аноним 08/06/21 Втр 22:29:22 206242362
image.png 90Кб, 659x837
659x837
image.png 85Кб, 699x776
699x776
image.png 30Кб, 238x212
238x212
>>2062046
Продолжение.
Почему первый вариант работает, а второй выдает null? Значение переменной не передается за область видимости цикла?
Аноним 08/06/21 Втр 23:09:25 206246363
>>2062423
А если просто return summa?
Аноним 08/06/21 Втр 23:23:37 206248064
>>2062463
То же самое. Только сигнатуру надо переписать с такой
create or replace function sum_price() returns setof products.price%TYPE
на такую
create or replace function sum_price() returns products.price%TYPE
Аноним 08/06/21 Втр 23:27:53 206248365
>>2062373
>я еще работаю с Clickhouse
Как работу нашёл?
Аноним 08/06/21 Втр 23:48:17 206250166
>>2062483
Работа не связана с БД как таковыми. Я что-то типа техлида в саппорте одной айти-компании, и мои навыки позволяют мне вытягивать отдел из дерьма выполнять всякую черновую работу других отделов в обход обсосных спринтов, которые распланированы на месяц вперед. Наговнокодить какой-нибудь сервис, автоматизировать какую-то поебень - сейчас потихоньку перетягиваю на себя аналитику, потому что сейчас ждать выполнение таска от аналитика - буквально месяц, а сидеть ждать не можем себе позволить. Из БД там мускуль 5.7 в проде, все логи приложений идут в КХ, техническое логирование - сентри, мониторинг - кибаны, елк и еще куча всего, хз что там еще у админов, не разбирался. Так что с КХ просто "повезло", причем судя по слаковым каналам, где админы обсужают инфраструктуру, КХ - пиздец в плане оперирования. Аналитики, неосторожные джоины и прочее постоянно кладут продовый кластер по памяти. Недавно аналитики еще приходили реквестировать апгрейд до новой версии, в которой добавили оконные функции, но техдир их послал нахуй с таким запросом, лал. При этом я ни разу не видел подобных жалоб, пока логи просто лежали в S3 и доставались самописной консольной тулзой из-под ssh.
Аноним 09/06/21 Срд 00:09:39 206252467
>>2062501
У тебя тянка есть? Какая зп?
Аноним 09/06/21 Срд 00:24:09 206254168
>>2062524
Бабы нет. Я шизоид, и мне не очень интересны сексуальные контакты. ЗП 120, договорились, что поднимут до 150, когда сдам проект.
Аноним 09/06/21 Срд 00:30:00 206254869
Аноним 09/06/21 Срд 00:39:17 206255570
>>2062548
Формально - потому что я не разработчик, чтобы мне башляли 300к/наносек. А так, руководство устраивает хуй пойми какие махинации, и по документам я прохожу, как менеджер поддержки, и они не хотят моей зарплатой завышать рыночную вилку. Ну и такой вещи, как индексация, у нас нет. Пока босс не отвалит бабок - больше получать не будешь. А чтобы босс отвалил, надо пососать-полизать, либо закрыть какой-нибудь полезный для компании проект.
Аноним 09/06/21 Срд 13:02:25 206286771
Безымянный.jpg 162Кб, 1024x327
1024x327
Подскажите по скулю. Я не специалист, и вообще немного не мой профиль, но пришлось разбираться в чужом скрипте. Скрипт простой, проверка целостности базы.

SET NOCOUNT ON
DECLARE @Err INT
DECLARE @tDatabaseName VARCHAR(55)
DECLARE @CmdStr VARCHAR(300)
DECLARE @tResult TABLE (Error INT, Level INT, State INT, MessageText VARCHAR(7000),RepairLevel INT,Status INT,DbId INT,ObjectId INT,IndexId INT,PartitionId INT, AllocUnitId INT, [File] INT,Page INT,Slot INT,RefFile INT,RefPage INT,RefSlot INT, Allocation INT)
SET @tDatabaseName = 'Database_Test'
PRINT '=========================================================================================================='
PRINT 'Шаг №4. Проверка тестовой БД после восстановления. Step_id = 4'
PRINT CAST(getdate() AS VARCHAR) + ' Старт процесса проверки тестовой БД.'
SET @CmdStr = 'DBCC CHECKDB('''+@tDatabaseName+''') WITH TABLERESULTS'
INSERT INTO @tResult EXEC (@CmdStr)
SELECT TOP 1 @CmdStr = MessageText FROM (SELECT TOP 2 * FROM @tResult ORDER BY ObjectID Desc) AS t1 ORDER BY ObjectID ASC
IF CHARINDEX('CHECKDB обнаружил 0 ошибок размещения и 0 ошибок согласованности',@CmdStr)>0
BEGIN
PRINT CAST(getdate() AS VARCHAR) + ' Проверка тестовой БД прошла успешно. Резервную копию можно переносить на внешний носитель.'
END
ELSE
BEGIN

PRINT CAST(getdate() AS VARCHAR) + ' При проверке тестовой БД командой DBCC CHECKDB обнаружены ошибки!'
PRINT CAST(getdate() AS VARCHAR) + @CmdStr
PRINT CAST(getdate() AS VARCHAR) + ' Резервную копию переносить нельзя!'
SET @Err = 1/0
END
PRINT CAST(getdate() AS VARCHAR) + ' Завершен процесс проверки тестовой БД.'

Как я понял, скрипт при проверке берет содержимое из последней строки таблицы, если совпало с IF CHARINDEX = успешно, не совпало - не успешно.
В таком виде всегда выпадает в Fail
Только вот я не понял, что писать в строке IF CHARINDEX, чтобы отрабатывало успешно?
Аноним 09/06/21 Срд 13:04:01 206287072
изображение.png 175Кб, 1920x1590
1920x1590
В шапку в => тред плз.
Аноним 09/06/21 Срд 13:04:48 206287273
изображение.png 400Кб, 1903x3229
1903x3229
Бамп
Аноним 09/06/21 Срд 13:05:58 206287374
изображение.png 362Кб, 1853x3021
1853x3021
Аноним 09/06/21 Срд 13:06:20 206287475
изображение.png 197Кб, 1915x2113
1915x2113
Аноним 09/06/21 Срд 13:24:03 206291776
Аноним 09/06/21 Срд 13:26:57 206292277
>>2062870
Следующий перекат только в конце лета, тогда можно добавить.
Аноним 09/06/21 Срд 13:30:43 206292878
>>2062867
Охуеть, щас бы за бесплатно эти простыни читать. Выйди и зайди нормально.
Аноним 09/06/21 Срд 13:38:17 206294079
Аноним 09/06/21 Срд 14:01:31 206296080
>>2062867
нет, он запускает chkedb, и если вернул ошибку %%ты пидор%. Там селект не из таблицы, а из результата выполнения.
А где вопрос то?
Аноним 09/06/21 Срд 14:05:26 206296881
>>2062874
Чесно говоря говно какое-то, просто понапиханы все технологии, это не дата инженер, а осьминог ебанный какой-то. И самое главное, не одна из схем не обьясняет чем он собственно занимается
Аноним 09/06/21 Срд 14:26:23 206301182
>>2062968
>
Тащемта, эти роадмапы сейчас любые стали делать как говно.
Пихают все что есть лишь бы раздуть на несколько экранов.
Аноним 09/06/21 Срд 15:32:17 206313283
image.png 77Кб, 647x612
647x612
>>2062423
Здесь явно что-то с областью видимости цикла, но я не нахожу этого в документации.
Аноним 09/06/21 Срд 16:47:13 206320884
Снимок.PNG 180Кб, 1651x922
1651x922
Есть хоткей для закрытия нижнего фрейма, который вылезает если мускул жалуется?
Аноним 09/06/21 Срд 20:31:11 206361785
Аноним 09/06/21 Срд 20:40:07 206362886
>>2063617
Могу разве что экстраполировать свой бесконечный опыт с другими базами и сказать, что null значения не учитываются в индексе.
Удивлен, что null и пустой массив в этом случае не одно и то же.
Аноним 09/06/21 Срд 20:45:45 206363387
>>2063628
Ну на самом деле null в данном случае - отсутствие поля в документе. И отсутствие таких документов в индексе ведь тоже помогает быстрее узнать, что для данного id этот массив отсутствует?
Аноним 09/06/21 Срд 22:37:04 206372688
>>2063633
> отсутствие таких документов в индексе ведь тоже помогает быстрее узнать
Нет, чел, для того, чтобы узнать, каких документов нет в индексе, тебе сначала нужно считать все документы, которые есть в индексе. И проверить для каждого документа, входит он в этот список или не входит. Гораздо проще считать все значения и проверить их на null.
Аноним 09/06/21 Срд 22:50:24 206374289
>>2063726
>чтобы узнать, каких документов нет в индексе, тебе сначала нужно считать все документы, которые есть в индексе
Зачем? Наверняка там внизу какая-то структура данных типа хешмапы или сета, в которой значение всегда получается за константное время.
Как идентифицировать себя? Аноним 09/06/21 Срд 23:18:28 206376490
image.png 948Кб, 800x578
800x578
Все чаще замечаю, что мало кто знает про ETL/DWH разработку. То есть область востребованная, но большинство других программистов не рассматривает ETL как разработчиков. Ну то есть, сейчас под разработчиком почему-то понимают по умолчанию фронт на js или java-ынтерпрайз.

Вот лично я работаю последние 5 лет в банках в разных отделах. Был в отделе отчетности, в рисках, в кредитном процессинге. И последний год работаю чисто в ETL. Но в чем я истинно силен? Наверно в SQL конечно, могу запрос любой сложности написать и оптимизировать. Пишу немного в Java код для общения с message broker: kafka, ibm mq, немного в python код для aiflow бихдата прости господи, немного в groovy для etl-средства. Еще на диалектах PL/SQL, на T-SQL, на pgSQL. Про зоопарк баз вообще молчу, так как почти не осталось СУБД с которыми я не работал.

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

Реквестирую ETL-братишек рассказать свои истории как боролись с такими ощущениями или у меня развивается СПГС.

Надеюсь в тот тред написал
Аноним 10/06/21 Чтв 00:19:25 206383391
>>2063764
Да, в тот.
Можешь называть себя Data Engineer, очень солидная профессия.
Сколько зарабатываешь?
Аноним 10/06/21 Чтв 01:00:56 206386892
>>2063764
Сейм друг. У меня такое же ощущение. Успел поработать с ораклом, террадатой, гринпламом, ETL на airflow писал, hadoop, pyspark сам понимаешь, сейчас ещё и BI отчётность пилю, только всё это я делал не в банках и, с оптимизацией запросов я хромаю, но я думаю, как-нить наверстаю. Как-то не чувствую себя разработчиком, при таком большом количестве js кодеров на дваче.
Зп 150к
Аноним 10/06/21 Чтв 01:18:59 206387993
>>2062401
Попробуй на этот кондишн "array.0": { $exists: true } создать индекс partialFilterExpression.
Аноним 10/06/21 Чтв 07:57:09 206393394
>>2063833
Да вот Data Engineers это другой департамент, которые ковыряют чисто Data Lake. Зарабатываю 180к на руки + годовая премия в 1 оклад. Не знаю много это или мало по местным меркам, официально я мидол.

>>2063868
Ага, ты тоже уловил суть. Хоть может это и хорошо что откровенное быдло не лезет в нашу область. Хотя быдло-кабанчики-аналитики лезут
Аноним 10/06/21 Чтв 12:29:24 206410395
>>2063764
>>2063933
Прикольно, так много слов знакомых, твоя организация случаем не на букву Р называется?
Аноним 10/06/21 Чтв 13:42:41 206416296
>>2063933
>Хоть может это и хорошо что откровенное быдло не лезет в нашу область
Мне почему-то кажется, что там порог входа чуть повыше. Ну т.е. довольно сложно заинтересовать быдло заниматься именно этим.
Аноним 10/06/21 Чтв 14:03:52 206419497
>>2064103
На букву С, зелёное такое из 4 букв.
Аноним 10/06/21 Чтв 14:39:49 206426898
>>2064194
А, лол, я понял. Тоже туда собесился, но не пошел, потому предложили нихуя не выше рыночка, вопреки расхожему мнению, и потому что там был ебучий SAS DI, которым мне заниматься не очень хотелось.
Аноним 10/06/21 Чтв 14:48:15 206427999
>>2063764
>Еще на диалектах PL/SQL
Хорошо, что ты пришел!
Подскажи, пожалуйста, в чем тут проблема? >>2063132
Аноним 10/06/21 Чтв 14:52:33 2064283100
>>2064268
> предложили нихуя не выше рыночка, вопреки расхожему мнению
СБЕР вообще достаточно жадный, у него явная политика платить средне по региону, причём это настолько жёстко, что до недавнего времени, если работаешь на удалёнке, нельзя было переехать в другой регион, ибо платить по-московски тому, кто живёт в Барнауле, он не хочет.

мимо джава-макака
Аноним 10/06/21 Чтв 15:56:06 2064365101
>>2064283
Честно говоря никто не хочет. Недавно собесили на удаленку товарищей из Омска и Екб. Однако, процентов на 30% ЗП ниже чем у мидла в ДС.

Но заметил такое, что сеньер в регионах это, как правило, мидл в ДС по скидками. Лид в регионах - сеньер в ДС. Недавно собесил сеньера SQLщика с 9 месяцами опыта, но назвал себя ведущим программистом. Охуеть.

мимо другой банк
Аноним 10/06/21 Чтв 16:20:45 2064398102
Аноним 10/06/21 Чтв 16:48:55 2064434103
image.png 796Кб, 640x640
640x640
Аноним 10/06/21 Чтв 22:53:12 2064741104
Как вы все начинали?
Аноним 10/06/21 Чтв 23:08:10 2064758105
>>2064741
В шкалке один человек объяснил мне основы, дальше научился гуглить.
Аноним 11/06/21 Птн 00:34:25 2064885106
А на работу с какими знаниями шли?
Аноним 11/06/21 Птн 01:01:06 2064899107
>>2064885
Базовыми. Даже оконных функций не знал.
Аноним 11/06/21 Птн 01:02:46 2064900108
>>2064741
Я начинал с того, что научился ставить винду на свой комп. Потом устроился в комп. клуб админом. Ну а потом приходишь в любую днище-фирму и говоришь - я админил сетку и 30-40 компов с круглосуточным аптаймом и постоянно меняющимися юзерами без навыков. Обычно этого достаточно чтобы взяли на испытательный срок. Там месяц-два учат своему софту, если выучил и справляешься с поддержкой - остаешься. Так я стал сисадмином. Дальше, если не обленишься, учишь язык. Я вот учу, дается легко, так как всё знакомое. Опыт в ИТ есть, язык знаешь - идешь джуном. Получаешь опыт в разработке, а дальше либо по разработке двигаешься, либо в девопс. Если в девопс, то можно получить опыт, обмазаться безопасностью и в спецопс.
Аноним 11/06/21 Птн 01:49:43 2064931109
>>2064885
Даже не знал, что такое язык SQL. Решил пару задачек на логику и взяли. Ну а потом уже начался язык SQL и база данных Oracle.
Аноним 11/06/21 Птн 14:10:55 2065323110
А какие первые задачи были на работе? Сложные запросы писали? >>2064931
Аноним 11/06/21 Птн 14:17:24 2065334111
>>2065323
Ну сначала не сложные, потом посложнее... А ты зачем вообще спрашиваешь?
Аноним 11/06/21 Птн 14:26:21 2065343112
>>2065334
Пойду на стажировку на аналитика, боюсь обосраться
Аноним 11/06/21 Птн 14:29:18 2065346113
>>2065343
Не бойся, в этой сфере очень большой процент ничтожеств, так что либо гармонично туда впишешься, либо будешь выгодно выделяться.
Аноним 11/06/21 Птн 16:36:44 2065478114
photo2021-04-07[...].jpg 51Кб, 622x849
622x849
>>2065323
Меня сразу заставили нырять в ёба процедуры с головой лул я сразу сломал кое-что и заниматься реверс инженеригом чужих говен честно говоря и по происшествию года кое-что не понимаю, представь как я знатно охуевал в первые месяцы


мимокрок
Аноним 11/06/21 Птн 16:37:26 2065479115
Как в постгресе сделать EXPLAIN для функции?
Везде форсят autoexplain, но или я что-то не понял, или он пишет куда-то в логи, куда я не хочу лезть и вообще мне нах не надо это на каждый запрос. Хочу просто один раз посмотреть и все.
Аноним 11/06/21 Птн 16:38:32 2065483116
>>2065478
А когда сломал, что сказали?
Аноним 11/06/21 Птн 16:46:58 2065490117
>>2065483
Немного побугуртили, потом дали задачу попроще но один хуй слишком сложную чтоб я её мог сделать. Потом отправили дебыватся до подрядчика чтоб они меня научили это была пиздец подстава и позорище, я полез в скайпе доебыватся до их синьёра, он от такого знатно охуел, и позвал ПМ-а, вобщем до сих пор стыдно. Мне кажется первые месяца три меня всерьез подумывали выпиздить, но потом выяснимлось, что я могу в MDX немного, и жтот навык оказался полезным, а потом я уже и SQL подтянул.
Аноним 11/06/21 Птн 17:11:02 2065526118
>>2065490 А как рабочий день проходит у аналитика? Чем они занимаются? Только данные ищут?
Аноним 12/06/21 Суб 08:35:46 2066049119
>>2065526
Аналитики разные бывают, в разных департаментах. Но если брать именно анализ данных то:
1) Ищут данные для разных подразделений
2) Правят маппинги, чтобы потом разраб доработал ETL
3) Поясняют за данные - почему таблица Х прогрузилась именно так, а не иначе
4) Ебашут ad hoc
5) Пишут ТЗ разрабам чтобы те разработали новую загрузку
Аноним 12/06/21 Суб 13:46:10 2066157120
Аноним 12/06/21 Суб 14:10:26 2066181121
>>2066157
на самом деле в этом списке технически сложных вещей нет, скорее муторно, и надо быть внимательным, и хорошо разбираться в предметной области.

другой анон
Аноним 12/06/21 Суб 15:17:20 2066227122
>>2063764
Да, у меня такое-же было, правда через год-два работы ЕТЛ-щиком. Делал все и по немногу.
В итоге я погрузился сильнее в техническую часть, освоил С, начал изучать внутрянку баз, как они в ОС работают, алгоритмы поиска, обращения к данным как реализованы и тд и тп. Понимания, кто я в современной градации мне это так и не прибавило, но задачи больше нравятся).С данными уже давно не работал, в основном в ОС что-то допиливаю или настраиваю.Сейчас это похоже на какую-то смесь админа, системного разработчика и архитектора.

И да, плюс о котором выше писали - так как область не хайповая - залетных хипстеров и гуманитариев почти нет. Работаешь так сказать в кругу единомышленников)
Аноним 13/06/21 Вск 00:44:33 2066705123
>>2066049
6) бесконечные переписки с БА (если сам аналитик СА), или с бизнесом (если сам аналитик БА). Очень много деловой переписки, отвечаю, аналитики половину рабочего времени просто со всякими бизнесами общаются.
Аноним 13/06/21 Вск 12:12:24 2066854124
>>2065490
Как так получилось, что ты мог в MDX? Откуда ты его знал?
Аноним 13/06/21 Вск 12:51:24 2066883125
>>2066854
Я когда готовился к приему на эту работу, у меня было 2-3 месяца, за это время я организовал вкат в SQL и учил MDX. MDX довольно простой оказался, точно уж проще SQL, по итогу мне даже всё не пригодилось, что я курил по MDX. Конечно в mdx есть скоупы, которые довольно странно иногда работают, но с этим я подьяснился уже на проекте.
Аноним 13/06/21 Вск 13:01:49 2066897126
Подкиньте материалов по проектированию реляционных баз даннных. В частности нужна схема для чат приложения
Аноним 13/06/21 Вск 14:02:28 2066945127
EBYlGE1XkAAwVhN[...].jpg 200Кб, 1242x1636
1242x1636
Аноны что покурить по моделям данных? Часто в вакансиях мелькает - умение пояснить за аймона\кимбелла. При том судя по орели, аймона уже давно все в рот ебали. А от сранного датаволта, вобще срака рвётся.
Аноним 13/06/21 Вск 16:17:25 2067044128
>>2066945
Да тупо пару статей читани с хабра. У меня тоже это в требованиях было чуть ли не обязательным требованием. В итоге спросили про снежинку/звёздочку. Про факты/дименшены. По факту ведь мало кто руководствуется именно манярекомендациям этих товарищей. В голове держат, но четко не следуют.
Аноним 13/06/21 Вск 23:54:29 2067482129
>>2067044
Ну хуй знает кимбал как по мне довольно жизненные байки травит.
Отечественным двх-рабработчикам энтерпрайзовым гречневым конечно похую, но тем не менее
Аноним 14/06/21 Пнд 13:17:48 2067753130
Снимок экрана 2[...].jpg 139Кб, 1243x663
1243x663
Снимок экрана 2[...].jpg 53Кб, 844x246
844x246
Почему так нахуй? Апдейт фейлит енамы.
Аноним 14/06/21 Пнд 13:22:05 2067756131
>>2067753
А, понял. Во втором THEN должно быть значение, а не выражение.
Аноним 14/06/21 Пнд 13:44:10 2067765132
Снимок экрана 2[...].jpg 207Кб, 1102x994
1102x994
Интересно, почему так получается. Ладно бы он булевое WHEN не мог правильно прочитать, но ведь фейлится даже синтаксически правильное присваивание.
Аноним 14/06/21 Пнд 14:00:27 2067773133
Аноним 14/06/21 Пнд 14:24:26 2067793134
>>2067773
Действительно, так работает.
Я даже понял, почему он до этого присваивал нулл или пустые строки: выражение "SET sex =" начинает выполняться в любом случае, и если нет подходящих CASE, то оно таким и останется, порождая нуллы и пустоту.
Аноним 14/06/21 Пнд 14:38:14 2067803135
Аноним 14/06/21 Пнд 14:58:53 2067821136
>>2061508
>Алан Бьюли. Изучаем SQL
Дочитал, какая-то невесёлая книга. Неприятная.
Аноним 14/06/21 Пнд 17:37:57 2067937137
>>2067821
>невесёлая
>Неприятная
Прямо как ты ИРЛ.
Аноним 14/06/21 Пнд 17:54:06 2067950138
Мастхев книги Аноним 14/06/21 Пнд 18:39:43 2067991139
Сап, аноны!

По личному опыту кто-нибудь посоветует книгу?

Подойдет всё, что связано с теорией БД, sql и тд.

P.S. видел книги в шапке, но может ещё какие накидаете
Аноним 14/06/21 Пнд 20:11:22 2068126140
>>2067950
Да, всё хорошо, спасибо, что спросил.
Аноним 14/06/21 Пнд 20:36:48 2068170141
>>2067991
Мне прочитанная в 2012 книга Ицика Бен-Гана T-Sql Querying зашла так, что с тех пор по rdbms ничего не читал (читал про nosql и всякое распределенное), но я дотнетомакакен.
Параллельно решал sql-ex, видимо по-этому закрепилось достаточно и для собесов, и для работы.
Аноним 15/06/21 Втр 10:22:59 2068675142
Аноним 15/06/21 Втр 15:06:42 2068972143
Анон, есть таблица, где мне надо выбрать все данные после конкретной записи, никаких зацепок в виде уникальных дат нет или айди строк. Есть какой-нибудь простой способ?
Пытаюсь гуглить, а там какие-то очень сложные для меня запросы
Аноним 15/06/21 Втр 15:39:46 2069006144
>>2068972
Нет. Таблица в базе данных это куча, если у тебя нет айди и даты изменения, то тебе сначала нужно их добавить, иначе ничего не выйдет.
Конечно, вопрос еще зависит от того, какая у тебя база. В Oracle, например, есть rowid у каждой строчки, в общем случае они упорядочены, но это все равно не гарантируется и завязываться на это не принято.
Аноним 15/06/21 Втр 18:00:23 2069241145
Приветствую анон
Оракл. Есть таблица для временных данных.
При нормальной работе больше чем на пару секунд данные там не задержатся, но в случае ошибки останется мусор, который надо автоматически вычищать.
Как можно это сделать на уровне дб? Там простейший delete from TABLE.
Хочу чтобы это запускалось разок посреди ночи.
Аноним 15/06/21 Втр 18:09:41 2069264146
Аноним 15/06/21 Втр 18:17:19 2069286147
>>2069241
гугли dbms_scheduler
тебе надо создать процедурку с нужным скриптом и зашедуллить
Аноним 15/06/21 Втр 18:58:03 2069370148
>>2069241
А эти данные используются больше чем в одной сессии? У оракла есть прекрасные global temporary tables под такую хуйню.
Еще у оракла есть exception, можешь там прописать очистку таблицы, если что-то пошло не так.
Если эти изящные варианты решения проблемы тебя не устраивают, то да, ебашь джоб на уровне бд, но это уебанство, потому что так у тебя два разных процесса будут менять одну таблицу и ошибок ты можешь только больше наплодить.
Аноним 15/06/21 Втр 19:59:11 2069469149
>>2069370
>>2069286
>>2069264
Я не упомянул кое-что и ввел в заблуждение.
Ошибка может возникнуть лишь на уровне сетевых запросов. Есть действие, которое выполняется в несколько последовательных запросов, и, если какой-нибудь пост не долетит до сервака, строка в бд так и останется висеть.

Спасибо за инфу, погуглю про это.
Аноним 16/06/21 Срд 05:31:00 2069809150
>>2069469
тогда ты вообще не туда дуешь
смотри в сторону транзакции
если ошибка произошла - транзакцию откатываешь
Аноним 16/06/21 Срд 11:48:44 2069955151
uwagrTSv8OI.jpg 188Кб, 1440x1800
1440x1800
>>2052408 (OP)
Аноны, попался такой запрос:

SELECT COUNT(1) as value, Status,
CASE
WHEN Status = 1 THEN 'status_up'
WHEN Status =14 THEN 'status_down'
WHEN Status =3 THEN 'status_warning'
ELSE 'status_unknown'
END as icon,
CASE
WHEN Status = 1 THEN 'green'
WHEN Status =14 THEN 'red'
WHEN Status = 3 THEN 'yellow'
ELSE 'gray'
END as color
FROM Nodes
GROUP BY status
ORDER BY value DESC


Что такое COUNT(1) ?
Я привык, что в каунт мы забиваем название столбца, чтобы посчитать строки. Но там нет столбца "1". Или это индекс какой-то?
На https://www.w3schools.com/sql/sql_count_avg_sum.asp про это нет
Аноним 16/06/21 Срд 12:09:58 2069971152
>>2069955
Эквивалентно count(*).
Обычно так пишут хуесосы, которые ничего не понимают в бд и верят, что count(1) работает быстрее. Распространенное суеверие, можешь ссать на лицо автору запроса.
Чтобы понять, как это работает, можешь представить, что сначала ты делаешь select 1 from table (т.е. возвращаешь столбец из единичек по количеству строк в таблице), а потом делаешь count по полученному результату.
Аноним 16/06/21 Срд 12:14:36 2069976153
>>2069971
Спасибо, точно, одна и та же хуита что и *
Аноним 16/06/21 Срд 12:15:45 2069980154
>>2069976
Ну я пиздеть не буду.
Аноним 16/06/21 Срд 12:38:59 2070010155
>>2069980
Протасевич так же думал...
Аноним 16/06/21 Срд 16:39:06 2070349156
>>2069809
У него несколько запросов, а значит и транзакций несколько. Откатить не получится.
Аноним 16/06/21 Срд 16:54:19 2070378157
>>2069955
>>2070349
в чем проблема несколько запросов в одной транзакции бахнуть?
и распределенные транзакции тоже для кого-то придумали
Аноним 16/06/21 Срд 17:46:37 2070433158
employes.png 23Кб, 925x272
925x272
heads.png 12Кб, 928x272
928x272
Добрый день! Есть 2 таблицы(пикрил) - сотрудники и их начальники. В таблице сотрудников поля - ФИО, Дата приёма на работу, дата увольнения, причина, зарплата и id начальника. Связь один ко многим. Нужно вывести последний нанятый сотрудник у каждого начальника.
Этот запрос не работает если есть два человека нанятые в один день.

SELECT * FROM otdel_kadrov.employee right JOIN
(SELECT max(dateup) as dateup, heads.FIO1 FROM otdel_kadrov.employee LEFT JOIN heads
on employee.head = heads.IdHeads GROUP BY FIO1) as t on employee.dateup = t.dateup;
Аноним 16/06/21 Срд 18:03:35 2070448159
>>2070433
если дата точнее дня не пишется, то можешь дополнительно отсортировать по id (они же инкрементируются)
Аноним 16/06/21 Срд 18:12:32 2070461160
>>2070448
Можешь поконкретнее, где нужно отсортировать?
Аноним 16/06/21 Срд 18:17:29 2070465161
>>2070433
>right JOIN
Скажи, ты ебанутый?
Аноним 16/06/21 Срд 18:18:13 2070466162
>>2070433
select from heads join (select from emp order by dateup desc) emps on heads.id = emps.head group by heads.id;
Аноним 16/06/21 Срд 18:24:35 2070472163
>>2070466
Тонну нефти тебе анон!! Спасибо!
Аноним 16/06/21 Срд 18:28:11 2070477164
>>2070472
>>2070466
Вы не охуели? SQL немножко не так работает. Фильтра на сотрудника нет. Конкретно на этом запросе вообще будет ошибка группировки, потому что group by по начальнику, а селектится по всей видимости звездочка, которую сожрала макаба.
Аноним 16/06/21 Срд 18:32:57 2070481165
>>2070477
Всё там работает, джойним начальников и сортированных холопов и группируем по начальнику.
Аноним 16/06/21 Срд 18:33:02 2070482166
Аноним 16/06/21 Срд 22:19:49 2070711167
>>2062423
Что это за редактор такой?
Аноним 16/06/21 Срд 22:28:45 2070717168
>>2070711
Какая-то очередная атомо-параша судя по виду
Аноним 16/06/21 Срд 22:36:46 2070722169
>>2070717
А что посоветуешь?
Использовал только DBeaver, когда делал курсовую по БД.
Аноним 17/06/21 Чтв 16:01:46 2071443170
>>2052738
Модельки в django или во flask, например. Если ты про python
Аноним 17/06/21 Чтв 21:57:37 2071764171
Аноним 19/06/21 Суб 20:08:05 2073908172
Сап знатокам. На работе хочу углубится в БД на уровне разработчика - mongodb и ms sql. С монгой будет отдельный разговор, меня больше интерисует sql. Писать Joins, view, sp уже умею, но чувствую, что есть пробелы в знаниях и этого не достаточно. Планирую такую программу роста:
1. Профайлер. Как работать, как оптимизировать запросы;
2. Индексы - Seek, scan, full text index;
3. Масштабирование;
4. EF to ms sql (ORM .net) - AsNoTracking, Querable.
Что еще посоветуете?
Аноним 19/06/21 Суб 20:27:31 2073930173
>>2073908
распределенные транзакции
Аноним 19/06/21 Суб 21:26:21 2073987174
Аноним 20/06/21 Вск 13:14:37 2074361175
Аноним 21/06/21 Пнд 15:49:17 2075831176
Подскажите плиз. Я уже не понимаю.
Есть у меня одна таблица, хочу ограничение повесить на поле, уникальным сделать.

ALTER TABLE table DROP CONSTRAINT IF EXISTS table_name_key;
CREATE UNIQUE INDEX CONCURRENTLY table_name_key ON table (name);
ALTER TABLE table ADD CONSTRAINT table_name_key UNIQUE USING INDEX table_name_key;

Так вот проблема при самом удалении ограничения. Его блокирует другая таблица, селект из неё. Они вообще никак не связаны, никаких внешних ключей.
Почему? Как мне удалить ограничение, не останавливая работу прода?
Вот что лок вешает
SELECT u.* FROM users u WHERE u.id = 128592314 ORDER BY CASE WHEN u.type = 'active' THEN 1 ELSE 2 END, u.id DESC
Аноним 21/06/21 Пнд 16:06:33 2075869177
>>2075831
> Вот что лок вешает
> SELECT u.* FROM users u WHERE u.id = 128592314 ORDER BY CASE WHEN u.type = 'active' THEN 1 ELSE 2 END, u.id DESC
Как оно может лок вешать? Оно же должно отработать и угомониться.
Аноним 21/06/21 Пнд 16:08:42 2075872178
>>2075869
А я ебу? Вот поэтому я и спрашиваю, как оно вообще вешает лок, да еще и на левую таблицу.
Аноним 21/06/21 Пнд 16:09:46 2075877179
>>2075872
Причем на 13 версии постгри это не мешает, а в 9.6 почему-то странные локи висят
Аноним 21/06/21 Пнд 16:14:55 2075888180
>>2075869
Я же не от делать нечего такое спрашиваю

blocked_statement | current_statement_in_blocking_process
-------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------
ALTER TABLE table DROP CONSTRAINT IF EXISTS table_name_key; | SELECT u. FROM users u WHERE u.id = 37640008 ORDER BY CASE WHEN u.type = 'A' THEN 1 ELSE 2 END, u.id DESC
ALTER TABLE table DROP CONSTRAINT IF EXISTS table_name_key; | SELECT u.
FROM users u WHERE u.id = 34794093 ORDER BY CASE WHEN u.type = 'A' THEN 1 ELSE 2 END, u.id DESC
Аноним 21/06/21 Пнд 17:14:22 2076003181
>>2075831
>>2075888
Привет, обещал тебе из МВП ответить.
Нихуя не понятно.
Скорее всего, это какая-то ваша ёбка с привилегиями, так что еби своих админов, читай хранимки и триггеры. Ты точно имеешь право делать DDL операции в этой базе?
Аноним 22/06/21 Втр 10:05:28 2076742182
1624345527752.jpeg 99Кб, 1498x792
1498x792
Сап. Я студент, делаем курсач по базам данных на sql. Пик - физическая схема (Тупо сделано? Наверное да, но препод принял). Что он НЕ принял, так это сложный запрос, который надо было сделать для сдачи курсача. Звучало так: запрос одного оружия со всеми его характеристиками И с учетом влияния модификаций на характеристики.
Тут я сломался, посколько как прикрутить сюда влияние модификаций - ноль идей.
Даже у тех кто на отлично уже сдал спрашивал, тоже молчат. Прошу помощи как это сделать, плюс какие нибудь общие советы.
Аноним 22/06/21 Втр 10:08:07 2076753183
>>2076742
В чем сложность? Просто джоинишь по цепочке весь шмудряк
Аноним 22/06/21 Втр 10:18:40 2076768184
1624346319544.jpeg 170Кб, 1514x688
1514x688
>>2076753
В том что в моем (неправильном) решении этого вопроса влияние от прицела происходит вообще на все характеристики, а должно только на точность. Пытаюсь переварить все это, а голова кипятится - SQL для меня тема новая.
Аноним 22/06/21 Втр 10:20:33 2076770185
>>2076742
select id_weapon,id_stat,stat_value+mod_stat
from weapon_stats ws join
(select id_weapon,id_stat,sum(stats_effect) mod_stat from mod_stats m join weapon_mod w on m.id_mod=w.id_mod group by id_weapon,id_stat) ms
on ms.id_weapon = ws.id_weapon and ms.id_stat=ws.id_stat

Процентов 90 что где-то я с синтаксисом объебался, но логика вроде верная.
Аноним 22/06/21 Втр 11:08:24 2076822186
>>2076770
Эх, оно все равно тупо суммирует ко всему.
Mod_Stat это если что название другой таблицы, а название колонки - Stat_Effect
Аноним 22/06/21 Втр 11:19:17 2076832187
>>2076822
Название таблицы у тебя mod_stats, mod_stat - это элиас который я назначил для суммы значений stats_effect для конкретного стата конкретного оружия, можешь любой въебать.
Аноним 22/06/21 Втр 11:23:11 2076836188
>>2076768
В джойне mod_stat должно быть еще условие на weapon_stats.id_stat = mod_stat.id_stat
Дружеский совет: inner join'ы для модификаций перепиши на left join'ы, потому что твой запрос отсеивает оружие, для которого нет модификаций, что неверно, в общем-то.
И в части select должно быть coalesce(stat_effect,0) для обработки ситуаций, когда по оружию или по какой-то характеристике нет изменений, потому что на языке sql 1 + null = null
И скорее всего нужно делать group by и считать сумму модификаций, если несколько разных модицикаций могут влиять на одну характеристику.
Аноним 22/06/21 Втр 11:40:04 2076847189
>>2076836
Спасибо, попытаюсь разобраться
Аноним 22/06/21 Втр 21:53:22 2077368190
Как вставить значения в таблицу без primary key в mysql?
Гуглением нашел что-то такое, но не знаю что делать с ключом.
INSERT INTO table (a,b,c) VALUES (1,2,3), (4,5,6),..., (101, 102, 103)
ON DUPLICATE KEY ?????

По идее можно создать 4-й столбец = CONCAT(a, b, c) a,b,c - строки и сделать его ключом? Но чет звучит как костыль.
Аноним 22/06/21 Втр 21:57:19 2077373191
>>2076742
>И с учетом влияния модификаций на характеристики.
Что это значит?
Аноним 22/06/21 Втр 21:58:50 2077376192
>>2077368
Можно делать ключом несколько колонок вместе, делаешь primary a,b,c и всё.
Аноним 22/06/21 Втр 22:51:16 2077423193
>>2077368
Простите, а там что, нельзя создать таблицу без primary key?
А обычный автоинкрементящийся праймари кей?
В чем вопрос?
Аноним 22/06/21 Втр 23:11:23 2077450194
>>2077368
>в таблицу без primary key
Это как?
Аноним 23/06/21 Срд 06:47:03 2077565195
>>2077423
Можно. Я хуево вопрос написал наверное. Мне нужно вставить в table(a, b, c) новые такие значения (a, b, c), чтобы при этом строки, которые уже есть в таблице, не вставлялись т.е. чтобы в table не образовывались дубликаты.
С автоинкрементом он будет писать подряд все (id, a, b, c), а мне нужно, чтобы (a, b, c) были уникальными.
Аноним 23/06/21 Срд 06:58:55 2077567196
>>2077565
ALTER TABLE `table` ADD UNIQUE `unique_index`(`a`, `b`, `c`);
Потом через INSERT IGNORE вставляешь.
Аноним 23/06/21 Срд 07:37:45 2077572197
Аноним 23/06/21 Срд 14:21:51 2077867198
image 8Кб, 1492x73
1492x73
image 222Кб, 1433x768
1433x768
Есть задание пикрелейтед и есть схема, которую я набросал. В базах полный ноль. Где я обосрался? Я смогу на основе этого что-то запилить вообще? Это нормально, что у меня primary_key это и foreign_key всегда одновременно?
Gg 23/06/21 Срд 14:25:49 2077870199
Gg
Аноним 23/06/21 Срд 17:38:08 2078126200
>>2077867
> Это нормально, что у меня primary_key это и foreign_key всегда одновременно?
Конечно, что в одной таблице праймари кей, то в другой форейн кей.
А схему твою мне впадлу смотреть.
Аноним 25/06/21 Птн 14:27:07 2079949201
Как в постре ускорить запрос типа SELECT * FROM DOGS WHERE DATA ->> PAWS = 4?
То есть есть таблица, в которой хранятся jsonы, и значения одной из колонок в жсоне одинаковы в 98% случаев. И мы фильтруем именно по этому значению.

Если добавить индекс то он игнорируется, потому что индексы юзаются только для не слишком часто встречаемых значений.
Добавлять поля в таблицу не вариант, структура должна остаться такой же.
Аноним 25/06/21 Птн 14:29:17 2079954202
>>2079949
Если постгрес новый то создайте партиционирование по этому полю. Таблицу придется пересоздать.
Аноним 25/06/21 Птн 14:44:40 2079973203
>>2079949
Знаете что. В моей картине мира json это формат для обмена данными, а не для хранения данных. В реляционной базе данных все должно храниться строчками, а не джейсонами. Архитектура ваша — говно.
>>2079954
Двачну анона с партициями.
Еще почитайте про битмап индексы, если они есть в вашей бд и если подходят под эту ситуацию, там нюансы
Аноним 25/06/21 Птн 15:30:24 2080048204
>>2079973
В сервис из сторонней интеграции прилетают json-данные довольно произвольного и часто меняющегося формата, с парой постоянно встречающихся полей и остальными рандомными. Причем эти данные не требуется анализировать, а просто хранить и отдавать по запросу всей котлетой. Твои предложения к такой архитектуре?
Аноним 25/06/21 Птн 15:35:51 2080054205
>>2079973
>>2079954
Партиции похожи на то что нужно, спасибо
Аноним 25/06/21 Птн 17:09:49 2080188206
Помогите плс, пытаюсь восстановить базу из бекапа. А ОН Б*ЯТЬ с расширением File.backup1c - и это даунское расширение не открывается через pgAdmin 3. Как жить?
Аноним 25/06/21 Птн 18:34:13 2080304207
>>2080188
Кажется это бекап сформированный через pg_dump. Ресторится база через pg_restore. НО КАК БЛ, читал на стеке ниодин вариант не подошел, хххелп плс!
Аноним 26/06/21 Суб 00:53:16 2080634208
>>2079954
В пострге нельзя распартишенить таблицу?
в оракле вроде можно
Аноним 26/06/21 Суб 09:23:53 2080732209
>>2080634
В оракле тоже нельзя.
Аноним 26/06/21 Суб 09:33:17 2080736210
Аноним 26/06/21 Суб 10:42:04 2080769211
Аноним 26/06/21 Суб 16:15:03 2080925212
>>2080304
Спасибо, выебки, и без вас справился.
Аноним 26/06/21 Суб 18:41:52 2081029213
>>2080925
Ну раз справился, то и нам подскажи.
Мы то не умеем, раз не подсказали.
Аноним 27/06/21 Вск 04:11:47 2081381214
>>2052408 (OP)
Анон, как оптимизировать sql-запросы? Если это сильно привязано к СУБД, то пусть вопрос будет для PostgreSQL.

Например, вот анон пишет:
>>2063764
>в SQL ... могу запрос любой сложности написать и оптимизировать.

Какие хорошие ресурсы есть по этой теме?

Я так понимаю, это связано с реляционной алгеброй, это большая тема, нужно прочитать какие-то талмуды или там всё проще?
Аноним 27/06/21 Вск 04:24:03 2081383215
>>2081381
Посмотри, что такое explain и кури в эту сторону.
Т.е. улучшение эффективности получения конкретного результата подбором правильного плана запроса, навешивания индексов для ускорения и т.д.
Аноним 27/06/21 Вск 04:41:49 2081385216
>>2081383
Я не понимаю, почему постоянно говорят про индексы. В чём проблема? Берёшь проект, сканируешь его запросы, получаешь список таблиц и для каждой таблицы список столбцов, по которым производится поиск, на все эти столбцы навешиваешь индексы.
На это можно ответить, что слишком много индексов замедляют запись. Ну и чё делать теперь? Запрос-то исполнять надо. Что делать в ситуации, когда тебе нужно добавить индекс к столбцу, но почему-то нельзя?
Аноним 27/06/21 Вск 04:47:37 2081386217
>>2081385
Там всё несколько сложне чем просто ололо навешаем индексы везде, где ведутся запросы.
Для мелкобаз это не особо актуально и зачастую достаточно такого подхода, да.
Аноним 27/06/21 Вск 05:03:12 2081387218
>>2081386
Наверное приходится выбирать между двумя запросами, решать, какой из запросов важнее, в каком запросе скорость критичнее, и замедлять один запрос чтобы ускорить второй.
Аноним 27/06/21 Вск 05:04:31 2081388219
Bump
Аноним 27/06/21 Вск 05:15:44 2081391220
>>2081387
А ещё есть кэши.

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

Если бы у нас была идеальная база данных с индексами, то мы просто добавляли бы индексы на все столбцы, по которым ведётся поиск, и всё бы работало без проблем.

Но так как мы имеем дело с не-идеальными базами данных, то приходится думать о трейд-офф-ах, использовать всякие костыли и подпорки в видей кэшей, вью, триггеров и прочего. Чем ещё можно дополнить этот список?
Аноним 27/06/21 Вск 05:29:34 2081393221
Раз уж речь пошла об оптимизации, пилю свою прохладную. Индексы использую как крайнюю меру, обычно кручу сам запрос, последние два раза когда удалось значительно ускорить, были такие кейсы:
1) Большая выборка с джоином, в итоге поменял запрос чтобы большая таблица была в WITH с фильтром, а не фильтровалось во время джоина.
2) Джоин большой таблицы из подзопроса , чтоб не вешать индексы по полям для джоина, добавил параметризированый фильтр внутрь подзапроса, там индекс по дате был, а по полям по которым идёт джоин нет, чтоб получилось что-то вроде:

select
from zalupa join
(select
from govno
where date beetwen {param1} and {param2})
where date beetwen {param1} and {param2}

Вот такая хуйня малята.
Аноним 27/06/21 Вск 05:30:37 2081394222
изображение.png 414Кб, 655x527
655x527
Аноним 27/06/21 Вск 06:34:44 2081397223
>>2081394
Это типа создавать поколения данных, и потомков первых данных считать патрициями, а остальных - плебеями? Как это поможет оптимизировать запросы? Ну и из истории мы знаем, что сословия перемешались, а потом патрицианские роды и вовсе вымерли.
Аноним 27/06/21 Вск 10:12:11 2081456224
>>2081029
Гугли распаковку бекапа от pg_restore. Там через цмд открываешь папку с это утилитой, и потом пишешь чтото типа: /pg_restore -U имя юзера в пг админе -d новая база, в которую хочешь поместить бекап(имя этой базы в пг админе) и имя самого бекапа (у меня сработало только тогда, когда переместил бекап в папку с утилитой, через -f путь файла не работало)

https://postgrespro.ru/docs/postgrespro/10/app-pgrestore

Вот это сильно помогло
Аноним 27/06/21 Вск 11:32:59 2081505225
>>2081381
Хз, могу ответить про Оракл, может поможет.

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

Но самое важное - это планы запроса, да. Не знаю, как в Пострге, но оракл страдает такой проблемой, что план, который тебе объяснили, и реальный план исполнения - вообще разные вещи.
В оракле есть штуки уровня dba_hist_* табличек, в которых логируются состояния сессий/процессов, и просто охуенный тулз sql_monitor, позволяющий риалтайм смотреть, что процесс реально делает. Наверное, в Пострге тоже подобные штуки есть.

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

СУБД вроде и так сами по себе достаточно умные, нужно только мониторить, чтобы они совсем херь не делали.
Аноним 27/06/21 Вск 11:38:17 2081525226
>>2081393
1) если у тебя не идёт замножения при джойне, то никакой разницы по факту. Предикатный фильтр можно и внутри условия джойна сделать, чтобы сразу доступ к таблице только по фильтру был.
Вот если оно у тебя в CTEхе материализацию сделало, тогда да, могло помочь.

сам вешаю индексы только на PK
Аноним 27/06/21 Вск 14:09:55 2081753227
>>2081505
> В оракле есть штуки уровня dba_hist_* табличек, в которых логируются состояния сессий/процессов, и просто охуенный тулз sql_monitor, позволяющий риалтайм смотреть, что процесс реально делает. Наверное, в Пострге тоже подобные штуки есть.
А как тебе это поможет при оптимизации конкретного запроса? Что могло бы помочь - это если бы какая-то штука разбила твой запрос на шаги или подзапросы и для каждого шага показала бы, сколько он исполнялся в целом и в процентах. Так это работает?
Аноним 27/06/21 Вск 14:14:18 2081758228
>>2081525
>сам вешаю индексы только на PK
ты трололо или туттуру?
мы же только что только выяснили, что надо навешивать индексы.
прикинь если бы ты попросил у человека номер телефона, а он бы тебе сказал: "я никогда не спрашиваю номер, я просто перебираю все номера, и рано или поздно всё равно дозвонишься туда, куда надо".

https://use-the-index-luke.com/
Аноним 27/06/21 Вск 14:45:48 2081787229
>>2081393
>а не фильтровалось во время джоина.
Разумно, зачем фильтровать много данных когда можно фильтровать мало данных.
> индекс по дате был, а по полям по которым идёт джоин нет, чтоб получилось что-то вроде:
Те ты заменил join подзапросом?
Аноним 27/06/21 Вск 14:52:03 2081797230
>>2081525
>внутри условия джойна сделать, чтобы сразу доступ к таблице только по фильтру был.
Я так понял было следующее:
n строк m строк = nm строк + фильтр = q строк + фильтр = k строк
Vs
(n строк + фильтр) = p строк
m строк = k строк
n < q
Аноним 27/06/21 Вск 15:15:33 2081838231
>>2081753
Монитор как раз по шагам пишет, сколько делал, сколько темпа, сколько I/O. И порядок этих шагов.
Запускаешь запрос — смотришь, где проблема при исполнении — думаешь, можно ли пофиксить в коде. В оркале это часто хинты на порядки джойнов или хинт на запрет какой-то тупой хуйни уровня: оракл считает, что после джойна будет 1 строка, а выходит 10лямов, и он хуярит NESTED LOOP, конечно, это будет вечность считаться.
Аноним 27/06/21 Вск 15:17:02 2081841232
>>2081758
Ну бля, у меня большие составные PK обычно.
Если данные важные, то хули не PK.
Аноним 27/06/21 Вск 15:19:49 2081847233
>>2081797
че т теперь я не понимаю. Ты если явно условие фильтра в джойне укажет, то СУБД сперва соберёт (n строк + фильтр), и только потом будет n'm делать, где n' - n после фильтра.
Если СУБД так не делает, то ей нужно объяснить, что она не права, лол.
Аноним 27/06/21 Вск 15:25:05 2081850234
>>2081758
Но вообще почитаю, спасибо.
Аноним 27/06/21 Вск 15:38:03 2081868235
>>2081847
Хм, может быть ты и прав.
На самом деле я точно не отвечу, надо проверять.
Аноним 27/06/21 Вск 15:42:00 2081878236
>>2081525
Я тоже думал разницы нет, и оно само на этапе джоина отфильтрует сначала, потом сделает джоин. Оказалось нет, если явно в CTE фильтровать перед тем как джоинить работает быстрее.
В первом случае явный WHERE в CTE, во втором and {Условие} в джлине.

>>2081787
Нет, там джоин идёт к подзапросу, я добавил фильтр к подзапросу, по полю дата. Вон я же пример написал.

Аноним 28/06/21 Пнд 02:15:23 2082459237
Поясните за схемы и триггеры. Вообще не понимаю смысла их использований. Ладно там тригеры - выполнить действие при условии (хотя кто таким будет пользоваться на уровне СУБД, я хз), но схемы - инструмент управление правами?
И подскажите, как в SQL Server смотреть план выполнения? В MySql есть Explain, в MsSql я что-то такого не нахожу
Аноним 28/06/21 Пнд 13:27:52 2082654238
Сколько занимает json в MS SQL места? Ибо все никак не найду
P.s дана была задача хранить перфокарту(с выбранными отверстиями) и решил использовать json
или есть варианты по-лучше?
Аноним 28/06/21 Пнд 13:38:29 2082664239
>>2082654
бинарный формат есть же, он тчно меньше

Аноним 28/06/21 Пнд 14:15:49 2082706240
>>2082664
а записывать то как в него?
Аноним 28/06/21 Пнд 15:08:40 2082749241
Аноним 28/06/21 Пнд 15:09:12 2082751242
>>2082749
ну либо можешь сразу в бинари туда писать, если есть чем поконверить раньше
Аноним 28/06/21 Пнд 15:30:54 2082780243
>>2082751
а какие еще варианты есть хранения (с минимумом занимаемой памяти)?
(на перфокарте 40 областей с различной длинной)
Аноним 29/06/21 Втр 02:03:24 2083360244
>>2082654
>перфокарту
>2к21
ебаный колотить, это флешбек из прошлого милениума? С возвращанием...
Аноним 29/06/21 Втр 13:36:16 2083643245
>>2082780
Бинари меньше всего будет занимать, тем более у тебя на дискете уже хранится в двоичном виде по сути. Можно ещё вьебать говна и записать каждую дискету как 40 различных строчек, с ключом - имя перфокарты. Можно вобще ссылку на файл хранить, а перфкарты хранить на диске. Непонятно из-за чего сырбор, эти данные с перфокарт нихуя не весят, по отдельнеости неконститенты, если ты читаешь перфокарту ты хочешь читать её всю, разделители эту условность нужная самой перфокарте для работы. Можно ебануть в longstr с разделителям.

Обычно вопрос не ставят КАК СДЕЛАТЬ, обычно начинают от ЧТО НУЖНО ПОЛУЧИТЬ. Вобщем с ёбой ехидного колобка спрашивай у деда препода А КАКАЯ БИЗНЕС ЗАДАЧА? КАКОЕ БИЗНЕС ВЕЛЬЮ ВЫ ХОТИТЕ ПОЛУЧИТЬ ОТ РЕАЛИЗАЦИИ ЭТОЙ ЗАДАЧИ? Более чем уверен у тебя там затхлый совковый пердун, который говорит СИКВЕЛ.
Аноним 29/06/21 Втр 14:34:26 2083685246
Програмач, объясни, как вообще база данных должна с sql работать?
Вот я написал свою базу данных для работы, но она вся висит в оперативке сервера и её копия в тхтшке. Если идёт запрос данных - то он обрабатывается с оперативке. Если изменения данных - то они меняются в оперативке, а потом вся база целиком сбрасывается в тхтшку. И оперативно и надёжно, как мне кажется.
Но весь мир говорит, что базы данных должны хранится в sql. Окей, я его освоил по минимуму, могу создать базу, запрос.
Но в целом архитектура мне не ясна. Получается что вся база должна хранится в sql и если идёт запрос данных, то сервер должен формировать соответствующий запрос sql, получать данные из базы и переправлять пользователю? А если запрос сложный? Допустим мне надо целую страницу хтмл сформировать с данными, мне надо раз 20 обратиться к базе?
Аноним 29/06/21 Втр 14:45:11 2083691247
Аноним 29/06/21 Втр 14:46:45 2083692248
>>2083685
Есть общее правило: никогда не пиши свою СУБД, далее если кажется, что есть необходимость.
> Вот я написал свою базу данных для работы, но она вся висит в оперативке сервера и её копия в тхтшке. Если идёт запрос данных - то он обрабатывается с оперативке. Если изменения данных - то они меняются в оперативке, а потом вся база целиком сбрасывается в тхтшку. И оперативно и надёжно, как мне кажется.
Просто пиздец.
1. При росте размеров БД на каждое небольшое изменение целиком перезаписывается файл. И медленно, и всеоре убьёт диск из-за постоянной перезаписи.
2. Если во время записи файла ввключится питание, модет записаться половина файла, вторую не восстановить никак.
3. Большая БД не влезет в ОЗУ.
> Но весь мир говорит, что базы данных должны хранится в sql. Окей, я его освоил по минимуму, могу создать базу, запрос.
Она не хранится в SQL. SQL - это просто язык запросов, внутри БД может быть реализована как угодно.
> Но в целом архитектура мне не ясна. Получается что вся база должна хранится в sql и если идёт запрос данных, то сервер должен формировать соответствующий запрос sql, получать данные из базы и переправлять пользователю?
Не обязательно сервер, есть sqlite. Но в целом приложение выступает прослойкой между БД и пользователем.
> А если запрос сложный? Допустим мне надо целую страницу хтмл сформировать с данными, мне надо раз 20 обратиться к базе?
Обращайся 20 раз. Можешь кешировать чтение. Это лучше, чем возможность ситуации, когда однажды самописная БД сдохнет.
Аноним 29/06/21 Втр 14:58:31 2083700249
>>2083692
>1. При росте размеров БД на каждое небольшое изменение целиком перезаписывается файл. И медленно, и всеоре убьёт диск из-за постоянной перезаписи.
Ну, допустим, у меня нет перспектив что база данных станет мега гигантской. 10-20 мегабайт, это прям капец с каким запасом. Тем более в перспективе можно подумать как оптимизировать место. Ну и разве тот же sqllite не записывает всё равно каждый раз все данные в файл?
>2. Если во время записи файла ввключится питание, модет записаться половина файла, вторую не восстановить никак.
Это легко фиксится. База пишется не в один а два файла, которые меняются местами. Сначала в один, при следующем сохранении в другой.
>3. Большая БД не влезет в ОЗУ.
С этим согласен. Но опять же, если нет перспектив что база будет занимать гигабайты места - этим можно пользоваться?
>Она не хранится в SQL. SQL - это просто язык запросов, внутри БД может быть реализована как угодно.
Ну окей, освоил язык. Сути не меняет, будет она хранится в sqllite или MySql
>Обращайся 20 раз.
Понятно. Грустно как то. В итоге мой вариант более оптимизирован, но из за стандартов юзанья sql - становится признаком нуба.
>Это лучше, чем возможность ситуации, когда однажды самописная БД сдохнет.
Это легко предотвратить.
Аноним 29/06/21 Втр 15:02:44 2083704250
>>2083700
Sqlite делали умные люди и нахуячили туда сотни оптимизаций, а ты хуяришь строчки в простой тхт-файл и думаешь что у тебя то же самое. Чел.....
Аноним 29/06/21 Втр 15:08:04 2083717251
>>2083700
Можешь посмотреть на всякие in-memory СУБД, там тоже всё держится в ОЗУ и иногда сохраняется на диск, там это делается оптимальнее, чем в самописной. В реальности используется в основном для данных, которые не жалко потерять, всякие кеши, результаты вычислений, очереди сообщений и подобное, что можно легко восстановить.
Аноним 29/06/21 Втр 15:10:34 2083722252
>>2083704
Я не говорю что то же самое. Но лично пробовал, скинуть целиком базу в тхтшку на порядки быстрее, чем скинуть её в sqlite. В других бд не пробовал.
Ну ладно, я сюда не обсирать или отстаивать свою точку зрения пришёл. Думал может я что то не так понимаю. В целом то для моей задумки абсолютно не критично, будет запрос обрабатываться 0,1 секунду или 0,01 секунду.
>>2083717
В целом я делаю проект больше для портфолию, мне надо что было как у всех...
Аноним 29/06/21 Втр 15:28:24 2083755253
>>2083722
>я делаю проект больше для портфолию
Покажешь себя лошарой, лол.
Аноним 29/06/21 Втр 15:45:10 2083782254
>>2083685
Опять ты выходишь на связь мудило? Необучаемый блять.

Аноним 29/06/21 Втр 15:49:02 2083791255
>>2083782
Это не он, тому надо было проприетарный копирастский sqlite с зондами запустить через mono на windows xp.
Аноним 29/06/21 Втр 16:14:17 2083823256
>>2083722
>Надо чтобы было как у всех
>Делает самописную базу на тхтшках вместо того чтобы заюзать склайт
Челллллл....
Аноним 29/06/21 Втр 16:16:23 2083826257
>>2083823
Так и говорю, что придётся переделывать на sqlite, что б было как у всех
Аноним 29/06/21 Втр 23:21:00 2084310258
>>2083826
А чего не mongodb? Тоже файловая, если сохранность данных не сильно в приоритете, то может подойти.
Аноним 29/06/21 Втр 23:24:44 2084313259
>>2084310
С каких пор монгодб файловая? Уже не надо тащить целый сервер, писать конфиг и разворачивать кластер из единственной ноды?
Аноним 30/06/21 Срд 08:03:35 2084451260
Аноним 30/06/21 Срд 10:09:15 2084495261
Почему varchar(max) имеет ограничение в 2гб?
Аноним 30/06/21 Срд 12:07:43 2084588262
>>2084495
Пушо его длина определена как signed int32
Аноним 30/06/21 Срд 12:18:20 2084592263
>>2084588
понял, спасибо

Т.е для nvarchar(max) длина будет уже как int16, верно?
(занимает то символ 2 байта)
Аноним 30/06/21 Срд 12:20:23 2084593264
>>2052408 (OP)
Увидел вот такую конструкцию в одном из запросов для mysql:
FROM {message} mm1

Что еще за фигурные скобки? mm1 понимаю что это сокращение для таблицы message, только тут AS опустили
Аноним 30/06/21 Срд 12:25:22 2084597265
>>2084593
Гугл говорит, что это php-шная тема и mysql тут не при чём.
Аноним 30/06/21 Срд 12:26:32 2084599266
>>2084592
Нет, не понял.
Signed int32 - длина поля в байтах.
Varchar вмещает 2ккк байт == 2ккк символов == char == uint8.
Nvarchar вмещает 2ккк байт == 1ккк уникодных символов == wchar == uint16.
Аноним 30/06/21 Срд 12:31:41 2084601267
>>2084597
Походу да бля, это кусок кода в пхп
а я хуево знаю пхп
Аноним 30/06/21 Срд 12:33:00 2084602268
>>2084601
Это переменная. Туда подставится значение в скобки
Аноним 30/06/21 Срд 12:40:34 2084607269
>>2084599
Юникодный символ может быть и 6 байт длиной.
Аноним 30/06/21 Срд 22:58:18 2085163270
Посоветуйте гайдецкий по индексам в монго. Почитал их доку - нихуя не понял, где и какой лучше использовать. У меня документы в коллекции с 10 полями, все они и/или могут быть включены в выборку. Внимание вопрос:
1. Если на каждое из полей вешать compound индекс, будет ли в этом толк?
2. Будет ли в 1 кейсе перекрытие индексов, если оба поля будут участвовать в выборке?
3. Нужны ли partial filter expressions вообще? Выжу в них смысл только в тех кейсах, где одна и та же кверя отрабатывает по нескольку раз.
Спасибо
Аноним 02/07/21 Птн 14:51:55 2086167271
>>2052408 (OP)
> https://metanit.com/php/mysql/
Подскажите, я могу делать всё как по этому гайду, но только с postgres? Через PDO всё будет такое же или нет? Mysql никак не хочет устанавливаться.
Аноним 02/07/21 Птн 14:54:55 2086170272
>>2086167
В пхп части будет, а сам постгрес чуток другой, очевидно.
Аноним 02/07/21 Птн 14:56:54 2086174273
>>2086167
Ну там просто запросы передаются, хули тут делать. Вобще юзай ларавель и нееби голову.

чел если ты обосрался ещё на этапе установки бд, у меня для тебя плохие новости


спасибо абу, как же ахуенно капчу каждый раз вводить чтоб блядь на телефоне у тебя была такая же капча, макака сранная
Аноним 02/07/21 Птн 15:07:25 2086180274
>>2086174
>ты обосрался ещё на этапе установки бд
Лол, установщик не может запустить сервер, а виноват конечно пользователь, а не говнокорпа. Гугл говорит, что это извечная проблемаmysql, но из решений только танцы с бубнами, которые мне не помогли.
Аноним 03/07/21 Суб 06:29:50 2086589275
>>2086180
На работе тоже скажешь, бля, я не сдела таску, мне устанвщик в штаны насрал?
Аноним 03/07/21 Суб 13:58:32 2086781276
>>2086589
Ну в случае тотального отсутствия вариантов решения проблемы, за исключением сноса винды, конечно да, хоть уволюсь, в чём проблема? Мне из жопы высрать нормальный mysql, написанные не криворукими дебилами?
Аноним 03/07/21 Суб 14:26:27 2086805277
>>2086781
Заебал, поставь docker desktop на винду и запускай любую хуйню, на сколько оперативы хватит.
Аноним 05/07/21 Пнд 09:46:05 2087980278
Сап котаны. Хочу ускрить запрос навешиванием индексов,

запрос вида

SELECT *
FROM GOVNO
WHERE BEGIN>=2020-01-01
and END>=2020-01-02

Достаточно ли будет проиндексировать BEGIN+END или нужен связанный индекс по двум полям, или ещё какое-нибудь колдунство? Что посоветуете при таком сценарии вобще?
Аноним 05/07/21 Пнд 09:48:11 2087983279
>>2087980
самофкис, да очевидно что в случае с END знак в другое стороны, проебался но я думаю вы умненькие и так всё поняли
Аноним 05/07/21 Пнд 10:00:13 2087995280
Аноним 05/07/21 Пнд 10:25:38 2088021281
>>2087980
Всё очень плохо.
Если у тебя будут индексы на обоих полях, для доступа к данным все равно будет использоваться только один индекс.
И надо учитывать, что если твои условия выполнены для большинства записей (очень старая дата BEGIN, очень новая дата END), то от индекса будет только хуже. По тем же причинам индекс на одновременно BEGIN + END будет говной.
Как вариант, можешь попробовать партиции на одно из полей и индекс на второе.
Аноним 05/07/21 Пнд 17:57:25 2088276282
Поясните за колоночные базы.
Если на простой запрос повесить условие

select *
from table
where atr = 'aaa'

Условие на запросе будет работать быстрее, если таблица СУБД колоночная?
Аноним 05/07/21 Пнд 18:22:33 2088295283
>>2088276
Конечно, будет, именно для этого они и нужны.
Но вы учитывайте, что в колоночных СУБД дорогие апдейты и джойны, так что нужно выбирать СУБД исходя из решаемых задач в целом.
Аноним 05/07/21 Пнд 18:23:52 2088299284
>>2088295
ебнул join в КХ == выстрелил себе в ногу
Аноним 05/07/21 Пнд 18:26:59 2088305285
Как правильно хуячить sql-запросы чтоб все понимали что я Альфач? Ну чтоб прям конкретно продавить
Аноним 05/07/21 Пнд 18:39:54 2088318286
>>2088305
Можешь скинуть свой запрос, я переделаю в альфовый.
Аноним 05/07/21 Пнд 19:03:08 2088347287
>>2088318
select * from muk.puk where mne='pora'
Аноним 05/07/21 Пнд 19:03:52 2088348288
>>2088318
select * from muk.puk where mne='pora'
Аноним 05/07/21 Пнд 20:24:20 2088411289
>>2088347
>mne = 'pora'
Не благодари.
Аноним 05/07/21 Пнд 21:19:41 2088458290
Что, появилась там, наконец, легковесная мастер-мастер бд с eventual consistency? Или, может, постгресс освоил такие технологии? Пару лет назад, вроде, такие подвижки были.
Аноним 06/07/21 Втр 09:19:31 2088628291
>>2088021
Бля чот подумал что изи катка...А оно во то оно как. Странно что под такой распространеный кейс нет стандартного шаблона.


А что касается партиций, я что-то не уверен, мимокроки пишут, что прирост перфоменса хуйня

http://mysql.rjweb.org/doc.php/partitionmaint


За ответ спасибо
Аноним 06/07/21 Втр 19:09:24 2089115292
>>2088628
Так перформанс по партициям сильно от объема данных зависит, не?
Одно дело по ключу партиции вытащить несколько лямов, а другое дело даты дрочить.
Не делайте себе голову, проверяйте на своем железе. Тут запросы пару строчек
Аноним 06/07/21 Втр 21:52:28 2089245293
Всем привет. Где проектировать базу данных для моего сайта?
Аноним 06/07/21 Втр 22:50:35 2089268294
>>2089245
Привет.
В компьютере.
Аноним 06/07/21 Втр 22:54:19 2089272295
>>2089245
Если ты про всякую IDEF0-ER-UML-парашу, ей пользуются только студенты на лабах и то только потому, что заставили преподы. Просто думаешь, какие таблицы тебе нужны, пишешь скрипты для их создания, и всё.
Аноним 07/07/21 Срд 02:45:31 2089380296
>>2089245
Что значит проектировать?
Аноним 07/07/21 Срд 09:18:11 2089435297
>>2089245
В draw.io диаграмму нарисуй и хватит.
Аноним 10/07/21 Суб 12:19:00 2092041298
Что лучше: NULL или пустая строка?
Аноним 10/07/21 Суб 12:27:38 2092046299
>>2092041
Это разные вещи. Всё равно что сравнивать нулевую температуру и вакуум, где понятия температуры нет.
Аноним 10/07/21 Суб 13:09:53 2092086300
>>2092046
Вот у меня нет значения пока пользователь не добавит. Что мне использовать?
Аноним 10/07/21 Суб 13:11:14 2092087301
Аноним 10/07/21 Суб 13:38:28 2092126302
>>2092041
за пустые строки пиздить надо
Аноним 10/07/21 Суб 15:56:51 2092249303
>>2092126
желательно ногами в живот
Аноним 10/07/21 Суб 17:08:23 2092323304
>>2092041
Что лучше: отсосать с достоинством или позорно быть выебанным в жопу?
Аноним 10/07/21 Суб 17:55:52 2092383305
Анон, объясни, как такое вообще может быть?

Есть запрос с фильтром по СТАТУС + КОМПАНИЯ:
> SELECT * FROM orders
> WHERE
> status IN ('pending', 'success', 'sended', 'received', 'in_process')
> AND
> company_id IN (91785)
> ORDER BY deadline_at DESC, id DESC
> LIMIT 100

И есть индекс на ДАТА + КОМПАНИЯ.
> CREATE INDEX orders_created_at_company_id_idx ON public.orders USING btree (created_at, company_id);

И каким-то образом этот индекс работает для этого запроса:
> Limit (cost=66625.18..66625.43 rows=101 width=110) (actual time=74.533..74.543 rows=81 loops=1)
> -> Sort (cost=66625.18..66625.57 rows=158 width=110) (actual time=74.531..74.536 rows=81 loops=1)
> Sort Key: deadline_at DESC, id DESC
> Sort Method: quicksort Memory: 36kB
> -> Index Scan using orders_created_at_company_id_idx on orders (cost=0.43..66619.41 rows=158 width=110) (actual time=43.235..74.485 rows=81 loops=1)
> Index Cond: (company_id = 91785)
> Filter: ((status)::text = ANY ('{pending,success,sended,received,in_process}'::text[]))
> Planning time: 0.474 ms
> Execution time: 74.615 ms

Я не понимаю, а как он вообще может использовать такой индекс?
Время же хранится как 8-байтоый инт - то есть это микросекунды и заказы размазаны по суткам абсолютно хаотично. И он идет первым в индексе. А второй идет компания.
Это же вообще бессмысленный индекс, но блять, он работает и фильтрует по нему компанию. Как так?
Аноним 10/07/21 Суб 20:08:29 2092481306
>>2092383
Лол, у тебя может одна и та же компания быть создана несколько раз в разное время?
Есть ощущение, что created_at, company_id - 1 уникальная пара для company_id, так что оно по этому индексу как раз находит компанию.
А потом уже фильтр на те строки, что по индексу.
Аноним 10/07/21 Суб 20:10:42 2092483307
>>2092481
А не, я объебос и читать не умею.
Хз, хинтани как-то full scan по фильтру и посмотри. Мейби ему рли проще по дереву индексов пройтись, игноря даты.
Аноним 10/07/21 Суб 20:13:59 2092489308
>>2092383
> Index Cond: (company_id = 91785)
Он же сам пишет, что по 1 кондишену индекс смотрит.
Чё за СУБД?
Аноним 10/07/21 Суб 20:29:35 2092506309
>>2092489
Постгря
>сам пишет, что по 1 кондишену индекс смотрит
Но это составной индекс же. Сначала дата, потом в рамках этой даты компания.
date1
- с1
- с2
date2
- c1
- c3
Это же так работает вроде?

>>2092483

Ну очевидно проще, таблица жирная, а время выполнения приемлемое. Но вот и вопрос, как так.
Аноним 10/07/21 Суб 22:01:25 2092563310
>>2092506
Почитал, как в Постгре индекс на несколько атрибутов работает.

Мейби, у тебя жирнющая таблица с херовой тучей полей, и к ней так тяжко обращаться, что проще весь индекс прочитать, чем сперва таблицу трогать?

https://www.postgresql.org/docs/9.6/indexes-multicolumn.html

Дока говорит, что
>This index could in principle be used for queries that have constraints on b and/or c with no constraint on a — but the entire index would have to be scanned, so in most cases the planner would prefer a sequential table scan over using the index.
Аноним 10/07/21 Суб 22:07:41 2092564311
>>2092563
Хмм, да возможно, что-то я не подумал. Это типа получается как фулскан, только по индексу бежать типа быстрее.
Да, спасибо анон, видимо так оно и есть.

Таблица большая, порядка 3кк, но полей не много.
Аноним 10/07/21 Суб 22:20:04 2092576312
>>2092564
Во, придумал, кажется.

При Table Full Scan нам всегда нужно 100% строк смотреть.

При Index Full Scan иногда возможен такой кейс.
Пример:
date1
- с1
- с2
-...
-сN
date2
- c1
- c3
-...
-cM

Нам нужно найти с2, допустим. Пойдем по каждой дате, но будет чекать не 100% записей в индексе, а только до момента записи с2, потом дальше в ветке по дате смотреть нет смысла. И выходит, что вроде как Full Read, но читаем не всё.

А если ещё окажется, что оно как-то алфавитно или по моменту добавления индексы строит, или по частоте запросов (хуй знает, пути СУБД неисповедимы иногда), то мейби там вообще в 1-2 блоке индекса щас лежало и всё так шустренько вывело.
Аноним 10/07/21 Суб 22:43:30 2092600313
>>2092576
>а только до момента записи с2
Ну да, логично.
Правда в моем кейсе это будет безпрофитно, тк почти невероятно то что заказы будут в одну микросекунду. Но так-то да.
Аноним 11/07/21 Вск 00:04:57 2092640314
>>2092600
Может тогда стоит ребилдануть индекс по DATE без времени?
Что это даст в производительности случайных запросов?

Или уже есть партиции по дням/неделям/месяцам?
Аноним 12/07/21 Пнд 05:59:38 2093511315
image20210708T1[...].png 24Кб, 594x250
594x250
Не могу до конца въехать, что нужно добавить в запрос, чтобы данные, хранящиеся в таблице слева, оформить в виде как справа.

Данные: есть номера, типы и даты. Сочетание "номер + тип + дата" уникально, а сочетание "номер + тип" может повторяться.
Задача: необходимо отобразить историю изменений типов в рамках номера с течением времени.

Простая группировка вида
select cr_client_id, private, min(period) as "amin", max(period) as "amax" from ohldata where cr_client_id in(12662312) group by cr_client_id, private order by 3;
подходит только для таких случаев:
123;2;01.04.2021
123;2;01.05.2021
123;2;01.06.2021
123;3;01.07.2021
но не подходит для случаев:
123;2;01.05.2021
123;1;01.06.2021
123;2;01.07.2021
123;3;01.08.2021
т.е. когда с течением времени в поле "тип" начинают повторяться значения.
Аноним 12/07/21 Пнд 08:23:45 2093552316
>>2052408 (OP)
сап, двач!
собираюсь вкатиться в дата инжир джуном.
знаю так себе скл, ковырял немножко оракл, знаю основы питона

какие подводные??
Аноним 12/07/21 Пнд 12:45:37 2093768317
>>2093511
Это очень интересная задача, но ты все делаешь неправильно, как ты сам заметил, ты не должен просто группировать по типу, потому что это не отрабатывает ситуации, когда значения одного типа были в два разных периода.
Эта задача решается через аналитические функции, они есть в бд, в которой происходит действие?
>>2093552
Хорошая работа, минусов нет.
Аноним 12/07/21 Пнд 14:41:09 2093873318
>>2093768
классно, пойду наверну курсов
Аноним 12/07/21 Пнд 14:54:19 2093885319
image.png 51Кб, 949x618
949x618
>>2093511
Тебе повезло, что я в отпуске и задача крутая.
Вот так она должна решаться.
Первый запрос: получить признак того, что значение поменялось.
Второй запрос: просуммировать единички нарастающим итогом и получить цифру, которая одинаковая у всех в рамках одной группы, айди группы, короче.
Последний запрос: сгруппировать по полученному айди и вывести значения.
Аноним 12/07/21 Пнд 18:23:05 2094102320
1.jpg 75Кб, 1681x538
1681x538
Парни, что не так с этим запросом? Я заебався
Аноним 12/07/21 Пнд 18:26:58 2094107321
>>2094102
dept_id integer,
foreign kry (dept_id) references dept(dept_id)
Аноним 12/07/21 Пнд 18:31:00 2094115322
>>2094107
нихуя не понял, но спасибо
Аноним 12/07/21 Пнд 18:32:04 2094118323
>>2094107
типа после foreign key нужно дописать (dept_id)?
Аноним 12/07/21 Пнд 18:34:12 2094127324
>>2094118
Не только, там ещё запятая. Сначала объявляешь колонку, а затем отдельно делаешь её внешним ключом.
Аноним 12/07/21 Пнд 18:39:24 2094141325
>>2094127
Получилось, спасибо
Аноним 12/07/21 Пнд 20:08:14 2094249326
>>2093885
Если чё, то это базовый поиск уникальных периодов, базовый кейс, везде нужно.
Аноним 12/07/21 Пнд 22:02:20 2094341327
Аноны, есть загрузчик данных в таблицу из csv-файла. Пишу скрипт, который сравнивает таблицу и csv-файл, и логирует строки которые не занеслись в базу по каким-то причинам. Пока что написал только для загрузки данных в пустую таблицу, но что делать если она непустая? Скрипту на вход подается только файл-источник и таблица. Как узнать, с каких строк начать сверять данные?
Аноним 12/07/21 Пнд 23:04:45 2094398328
>>2094341
Системное поле с моментов вставки/обновления строки добавь. Или хотя бы с номером загрузки.
Или ебись костылями через rowid или его эквивалент.
Аноним 12/07/21 Пнд 23:12:52 2094402329
>>2094398
Нет другого способа? Скрипт должен работать с любым загрузчиком и любой таблицей
Аноним 12/07/21 Пнд 23:15:02 2094408330
>>2094341
Почему ты не можешь на этапе работы скрипта логировать строки, которые не занеслись в базу? Хуйню какую-то придумываешь.
Аноним 12/07/21 Пнд 23:24:20 2094415331
>>2094408
Да не я эту хуйню придумал, мне так задачу поставили(
Типа это должно работать с любым загрузчиком
Аноним 13/07/21 Втр 01:52:47 2094453332
>>2094402
>Скрипт должен работать с любым загрузчиком и любой таблицей
Тогда проверяй все.
Аноним 13/07/21 Втр 17:46:17 2094901333
>>2093885
Огромнейшее тебе спасибо! Добра, большой зп и интересных задач!

Аналитических функций в моей БД (Sybase 9.0.2 + ASA 9.0) не оказалось, а написать альтернативу lag я пока не смог (пробовал через добавление ещё одного столбца с порядковым номером строки и последующим селфджойном со смещением на предыдущую строку и проверкой на равенство типов между строк, но что-то нужного результата пока не получил; также поэкспериментировал с rank() и dense_rank(), результата также не получил, но хотя бы наглядно понял их отличие), так что перенес данные в другую БД и воспользовался твоим запросом.

Ещё раз большое спасибо :3
Аноним 13/07/21 Втр 20:12:37 2095045334
>>2094901
Спасибо за добрые слова! Обращайся.
Аноним 14/07/21 Срд 15:26:54 2095667335
>>2094341
Ебашь мердж, если в таблице нехватает добавит, если нет обновит. Либо делай инсерт с игнором ошибок, чтоб дублей не было. Вобще я чот нихуя не понял в чём проблема то?

Если тебя смущает что данных много, то часто делают мердж только за определенные даты, скажем за сутки.
Аноним 14/07/21 Срд 19:49:13 2095842336
sqlscreeeeeennn.png 11Кб, 842x483
842x483
Анон помоги плез, нужно сделать запрос который выводит коды продавцов salesperson из таблицы purchase_archive, которые не повторяются в таблице purchase. Но у меня выводятся тупо 2 таблицы. Что не так?
И заодно сразу спрошу: как вывести только тех продавцов которые содержаться в таблице purchase_archive?
Заебался шо пиздец
Аноним 14/07/21 Срд 19:52:46 2095846337
>>2095842
SELECT DISTINCT salesperson FROM purchase_archive INNER JOIN purchase ON purchase_archive.salesperson = purchase.salesperson;
Тоже не срабатывает, хз че не так
Аноним 14/07/21 Срд 20:06:19 2095856338
>>2095842
SELECT DISTINCT purchase.code FROM purchase JOIN archive ON purchase.code = archive.code WHERE archive.code IS NOT NULL;
Это которые есть, которых нет соответственно IS NULL
Аноним 14/07/21 Срд 20:06:32 2095857339
>>2095842
Это тренировочная задачка? Давай бд, не все же тут старшие дата инженеры в отпусках, чтобы самим данные вбивать.
Аноним 14/07/21 Срд 20:06:41 2095858340
Аноним 14/07/21 Срд 20:23:07 2095873341
бд.png 236Кб, 1051x546
1051x546
>>2095856
чёто не работает(
>>2095857
вот как выглядит БД. Нужно вывести salesperson из purchase_archive, которые не повторяются в purchase
Аноним 14/07/21 Срд 20:26:55 2095877342
>>2095873
Да дай ссылку на бд свою, что ты жадничаешь? Какой смысл наугад запросы придумывать, чтоб ты проверял, если можно сразу нормально сделать?
Аноним 14/07/21 Срд 20:27:51 2095878343
>>2095877
Да у меня нет ссылки, я делаю в sql 8.0, это практическое задание
Аноним 14/07/21 Срд 20:29:59 2095879344
>>2095873
С лефтом не работает? Должно вроде.
Аноним 14/07/21 Срд 20:36:39 2095887345
Аноним 14/07/21 Срд 20:38:25 2095888346
>>2095887
Ты дурчок штоль? Поменяй на свои имена.
Аноним 14/07/21 Срд 20:47:02 2095895347
>>2095888
Да бля сижу целый день, уже нихуя не понимаю под вечер
Аноним 14/07/21 Срд 20:52:40 2095899348
>>2095888
SELECT DISTINCT salesperson FROM purchase_archive LEFT JOIN purchase ON purchase_archive.salesperson = purchase.salesperson WHERE purchase_archive.salesperson IS NOT NULL; Так что ли?

ERROR 1052 (23000): Column 'salesperson' in field list is ambiguous

Аноним 14/07/21 Срд 20:56:18 2095904349
>>2095899
SELECT DISTINCT purchase_archive.salesperson FROM purchase_archive LEFT JOIN purchase ON purchase_archive.salesperson = purchase.salesperson WHERE purchase.salesperson IS NOT NULL;
Вроде так.
Аноним 14/07/21 Срд 21:09:09 2095915350
>>2095904
Завтра чекну братик
Ауе
Аноним 15/07/21 Чтв 03:00:05 2096116351
Работаю SQL-макакой, из дома. Работаю с большими реляционными БД. Неплохо знаю SQL, и получается работать по 20-40 минут в день, вместо 9 часов. Зарплата норм. Что учить дальше из смежных областей, чтобы ЗП только повышалась, но при этом чтобы работать не больше часа в день? Есть ли тут такие?
Аноним 15/07/21 Чтв 07:42:37 2096146352
>>2096116
оу, чел
а как стать тобой? что подучить, чтобы перейти в работу с БД? sql так-то знаю
Аноним 15/07/21 Чтв 10:55:10 2096238353
Аноним 15/07/21 Чтв 19:26:50 2096689354
>>2095904
Получилось спасибо
Аноним 15/07/21 Чтв 23:03:42 2096963355
Если у меня будут обращения в базу для чтения гораздо чаще, чем запись в неё и от многих пользователей, то что делать? Писать в ОЗУ, а потом сбрасывать в реляционную? Или типа может сразу какой-то NoSQL есть?
Аноним 15/07/21 Чтв 23:10:25 2096973356
>>2096963
Возьми какое-нибудь готовое решение для кеша, не надо ничего велосипедить.
Аноним 15/07/21 Чтв 23:46:41 2097004357
Redis делает snapshots в файл так, что мне будут доступны все эти ключи собственно, но в ОЗУ будет только то, что нужно сейчас? Типа если не найдет ключа в ОЗУ, то лезет в файл, находит и ставит в ОЗУ? Да?

Хотя чет другое поведение и трудно представить или может быть?
Аноним 15/07/21 Чтв 23:51:23 2097008358
>>2097004
Нет, он просто скидывает на диск иногда или пишет в журнал, актуальная база всегда в памяти.
Аноним 16/07/21 Птн 00:09:28 2097023359
>>2097008
А как тогда сделать, чтобы и в памяти было и подгружалось из файла, если нет в ОЗУ?
Аноним 16/07/21 Птн 00:12:12 2097025360
>>2097023
Оно всегда в озу, файл читается только на старте.
Аноним 16/07/21 Птн 00:20:20 2097026361
>>2097025
Мне надо, чтобы на случай, когда очень много ключей и не влезают в ОЗУ. Тогда старые (незапрашиваемые) идут в файл откуда можно достать если что и поместить уже в ОЗУ. А часто используемые и остаются в ОЗУ, хотя и их тоже желательно иногда в файл. Такое возможно? Если да, то как? Задача ж вроде популярная, наверное.
Аноним 16/07/21 Птн 00:22:44 2097027362
>>2097026
Нет, тогда используй другую k-v базу.
Смысл редиса как раз в том, что он сидит в памяти, файлы это вообще опциональная фича.
Аноним 16/07/21 Птн 00:27:44 2097031363
image.png 107Кб, 974x777
974x777
Аноним 16/07/21 Птн 00:37:31 2097036364
>>2097031
Можешь хранить в чем угодно, а поверху кешем редис, он как раз умеет в такие штуки.
Аноним 16/07/21 Птн 01:18:20 2097060365
>>2052408 (OP)
Разжуйте, пожалуйста. Ощущение, что понял совершенно не так, как написано. Цитата из Джуба, Волков, "Изучаем PostgreSQL 10", стр. 32 (отсюда: https://postgrespro.ru/education/books):
"Но, в отличие от первичного ключа, внешний может принимать значение null. Он также может ссылаться на уникальный атрибут внешнего отношения. Допуская значения null во внешнем ключе, мы получаем возможность моделировать различные ограничения кардинальности, т. е. ограничения на количество элементов по обе стороны связи. Например, если родитель может иметь более одного потомка, то говорят о связи один-ко-многим, поскольку с одним кортежем первичного (ссылающегося) отношения может быть ассоциировано несколько кортежей внешнего."

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

Зачем внешнему ключу может быть нужно разрешение принимать null? Правильно ли я понимаю, что:
1. Имеем таблицы customer, service и customer_service (кот. содержит ссылки на id клиента и сервиса в соотв. таблицах).
2. У нас есть внешний ключ в customer_service, который, помимо ссылки на атрибут customer_id в таблице customer имеет ссылку на еще какой-нибудь атрибут оттуда же, например, first_name.
3. И вопрос в следующем: правильно ли я понимаю, что этот FK не может иметь null для атрибута customer_id, но может иметь null для атрибута first_name?

Аноним 16/07/21 Птн 02:48:14 2097078366
Аноним 16/07/21 Птн 03:27:38 2097084367
>>2097060
Ответ на вопрос: нет, неправильно. Для начала внешний ключ должен ссылаться на потенциальный ключ.

Насчет NULL: он нужен в FK в том случае, если я хочу смоделировать отсутствие соответствия в главном отношении. Например, есть таски, есть разработчики, каждая может быть назначена какому-то одному разработчику. Пока таска никому не назначена - все бухают ее FK будет NULL.
Аноним 16/07/21 Птн 03:40:16 2097085368
Почитал книжку этого Дзюбы... Ну знаете.
На 34-й странице автор утверждает, что для теоретико-множественных операций алгебры необходим строгий порядок атрибутов. Грубое надругательство над Коддом.
На 37-й странице Дзюба после декартова произведения получает отношение с двумя атрибутами customer_id.
Закрыл книгу.
Нахуй такую литературу, малец. Кузнецова читай.
Аноним 16/07/21 Птн 03:41:50 2097086369
> Допуская значения null во внешнем ключе, мы получаем возможность моделировать различные ограничения кардинальности, т. е. ограничения на количество элементов по обе стороны связи. Например, если родитель может иметь более одного потомка, то говорят о связи один-ко-многим, поскольку с одним кортежем первичного (ссылающегося) отношения может быть ассоциировано несколько кортежей внешнего.

Это тоже звучит как бред и неудивительно что вызывает вопросы.
Аноним 16/07/21 Птн 04:48:15 2097101370
Аноним 18/07/21 Вск 02:57:07 2099090371
Аноны, есть csv-файл, и есть таблица, содержащая данные из этого файла (не все). Как быстро сравнить файл и таблицу и найти разницу в данных?
Сейчас я делаю так: загружаю таблицу в другой csv-файл, и каждую строку из первого файла ищу во втором. Короче, медленно. Можно ли быстрее?
Использую python (можно bash)
Аноним 18/07/21 Вск 06:33:20 2099108372
Аноним 18/07/21 Вск 06:45:11 2099111373
сидящий епифанц[...].JPG 12Кб, 406x447
406x447
Аноны, могли бы пояснить макаке, какого хуя столбец не существует, когда он существует, блять. Я где-то в синтаксисе туплю?

hui:DATABASE=> insert into
users (name,surname,username,email,password,datecreate,defaultcity,changeStatus,userWeather)
values ('name','surname','username','email','password','datecreate','defaultcity','changeStatus','userWeather');

ERROR: column "changestatus" of relation "users" does not exist
СТРОКА 1: ...me,username,email,password,datecreate,defaultcity,changeStat..



Вот тута select * from users, тута есть столбец.
id | name | surname | username | email | password | datecreate | defaultcity | changeStatus | userWeather
Аноним 18/07/21 Вск 06:54:00 2099113374
>>2099111
Ок, это связанно с верхним регистром в второй половине слова.
Как это говно пофиксить?
Аноним 18/07/21 Вск 06:59:15 2099114375
16259250039430.mp4 567Кб, 924x720, 00:00:03
924x720
>>2099113
>>2099111
Ебать, надо каждое слово с разными регистрами оборачивать в двойные ковычки, уу сука. А еще грят, что жепаскрипт говно.
Аноним 18/07/21 Вск 13:05:56 2099333376
16116006884670.jpg 100Кб, 820x823
820x823
так поясните раку, который с нуля хочет вкатится в SQL , реально ли обучиться на аналитика абосанца самого галимого уровня и получать хотя бы 70-100к, если я не знаю ни одного языка программирования и вообще нулевый в этой теме?
Я не работал ни сисадмином , вообще в этой сфере не работал. Но мне человек сказал, что в SQL любой может вкатится и получать свои 120к в мск.
https://www.youtube.com/watch?v=BYCU3XyKCzA смотрю Кухаря, на 3ем уроке пошли какие то чары варчары, в общем нехуя особо не рассказывается откуда он какие то формулы берет и для чего, нехуя не понятно. Мне что просто повторять за ним как мартышка и я в итоге пойму или как ? а подскажите аноны, а то меня из дома выгонят скоро.
В каком направлении двигаться то , может кто расписать что сначала изучать начать, а что потом, чтобы дебил с 0 мог понять смысл вещей.
Аноним 18/07/21 Вск 13:19:42 2099355377
>>2099114
> Ебать, надо каждое слово с разными регистрами оборачивать в двойные ковычки, уу сука
Потому что при создании ты написал идентификатор в двойных кавычках. Пиши всё без кавычек и капсом, и проблем не будет.
Аноним 18/07/21 Вск 13:21:43 2099357378
>>2099333
> Но мне человек сказал, что в SQL любой может вкатится и получать свои 120к в мск.
Нихуя новый положняк для вкатышей.
Аноним 18/07/21 Вск 13:25:48 2099363379
>>2099333
Нет, в твоём случае это нереально, ведь в тебе ноль интереса к теме, нет образования и способностей, только жадное желание получать сотыгу всеми правдами и неправдами.
Рекомендую вкат в гей-проституцию.
Аноним 18/07/21 Вск 13:35:35 2099370380
>>2099363
я человек не жадный, высш.физ и мат я учил , образование какое то есть. Я понимаю вам лишь бы обосрать, а помочь советом кто нибудь может ?
Аноним 18/07/21 Вск 13:40:54 2099376381
>>2099370
Боимся конкуренции от такого могучего деятеля, да.
Просто вопрос максимально идиотский. Хочю стать хуй-нейм, чо делоть?
Читай книги, смотри своих цыган, потом приходи и спрашивай по сути.
Аноним 18/07/21 Вск 13:41:14 2099377382
>>2099370
Какой совет тебе дать? Советую заниматься тем, что нравится, а не тем, за что всем сотыгу платят в Москве.
Аноним 18/07/21 Вск 13:42:59 2099379383
>>2099376
> вопрос максимально идиотский
Даже конченный идиот может зарабатывать 120к в месяц, нужно всего лишь ... (продолжение в источнике)
Аноним 18/07/21 Вск 13:43:49 2099380384
>>2099377
ну так мне нравится анализ данных и тд, поэтому мне и посоветовали это. Я прошу просто дать мне алгоритм обучения, чтобы я с 0 смог иметь понимания , а не тупо зубрить как учили в школе, вот и всё. Хуле вы все такие негативные то блять
Аноним 18/07/21 Вск 13:48:20 2099386385
>>2099380
Ты плохо залетел, надо было сразу мимикрировать под джуна с горящими глазами.
Ну а мы самый нищий слой айти и к тому же двачеры, так что не удивляйся.
советов по существу не дам, всё пока
Аноним 18/07/21 Вск 13:50:42 2099389386
ну и пошли вы нахуй двачеры абосанные, сам все найду и выучу.
Аноним 18/07/21 Вск 14:54:33 2099450387
изображение.png 1825Кб, 1280x800
1280x800
>>2099389
Этот гречневый порвался, несите следующего
Аноним 18/07/21 Вск 15:02:10 2099462388
16051773208690.jpg 9Кб, 188x167
188x167
>>2052408 (OP)
Щас вкатываюсь в Spark. Вроде похоже нa SQL, но много всяких погромистких нюансов, создаётся ощущение, что это не SQL макак а дли мидлов бекендеров, ууу сука ъхъ.

Раскуриваю Learning Spark, 2nd Edition с орели там бесконечные триалы можно абузить, не сказать чне понятно, но очень много новой инфы, и как назло топики которые мнен ужны, в самом конце книги. Ёбаный рот это казино, я тока неделю пытался среду разработки приколхозить. Такие дела анончики
Аноним 18/07/21 Вск 16:23:35 2099522389
>>2099386
>Ну а мы самый нищий слой айти
Я думал вем-макаки, ну ладно.
Аноним 18/07/21 Вск 16:32:01 2099535390
>>2099522
Они кстати хорошо получают, времена верстальщиков давно прошли. Всё из-за востребованности их хуйни, при этом знать надо не так много. Думаешь, почему они такие охуевшие? Кто действительно бедный - так пхп-шники и 1с-ники.
Аноним 18/07/21 Вск 16:40:01 2099544391
image.png 552Кб, 412x600
412x600
>>2099462
Приготовься охуенно соснуть. Спарк это JS бигдаты, финальный босс от которого твоя жопа разлетится на мелкие кусочки так что никакой хирург не соберет обратно.
А если нет, то я тебя все равно попущу на собесе. Чел, серьезно, не стоит вскрывать эту тему.
Аноним 18/07/21 Вск 18:36:18 2099684392
Я могу в постресе сделать что нибудь типа такого? Пройтись в функции лупом по результату запроса?

DECLARE
..x text;
BEGIN
..FOREACH x IN ARRAY (SELECT b."Key" FROM public."Bitches" b)
..LOOP
....RAISE NOTICE '%',x;
..END LOOP;
Аноним 18/07/21 Вск 18:48:04 2099699393
>>2099355
Ясно, что-то я жидко пукнул, когда решил через консолечку это делать, хотя работы на час-два было, но вроде разобрался.
Аноним 18/07/21 Вск 19:21:12 2099760394
>>2099684
Вроде сделал через FOR. Теперь вопрос, а что я должен вернуть из функции before truncate триггера? Если я верну NULL, то другие триггеры не вызовуться (так же?), new/old тут не имеют смысла, тогда что?
Аноним 18/07/21 Вск 19:44:16 2099807395
Насколько быстро работает COUNT? Или завести поле, где добавлять единицу будет проще и лучше?
Аноним 18/07/21 Вск 19:48:41 2099814396
>>2099807
Ебать ты оптимизатор.
Аноним 18/07/21 Вск 19:54:58 2099825397
>>2099807
Зачем, ведь можно же просто писать count(1) кстати, это детектор конченных уебищ, ничего не понимающих в бд
Аноним 18/07/21 Вск 20:23:59 2099859398
>>2099825
Что не так с count(1)? Уже несколько раз видел негатив в сторону данного выражения. Объясните позицию.
Аноним 18/07/21 Вск 20:24:47 2099860399
>>2099807
Всё как обычно зависит от задачи. Если у тебя сотни записей и есть индекс, то быстро. Если надо посчитать миллионы записей, то имеет смысл сделать поле count и повесить триггер на delete/insert, но в таком случае ты замедлишь эти операции в несколько десятков раз, плюс поле count не поможет, если надо посчитать используя фильтр.
Аноним 18/07/21 Вск 20:28:19 2099867400
>>2099859
Те, кто пишут count (1), веруют, что это работает быстрее, чем count (*). А это неправда.
Аноним 18/07/21 Вск 20:30:58 2099870401
>>2099867
Большинство тех, кто это пишет, ни во что не веруют и просто копируют из примеров, думая, что это волшебное обозначение такое.
Аноним 19/07/21 Пнд 08:13:54 2100105402
>>2099807
Зачем отдельное поле? У тебя есть поле с первичным ключём уже. Да и вобще не думаю что на count влияет содержимое поля. COUNT(1) нужно только для того чтобы посчитать без NULL для конкретного столбца. Вобще не выебывайся ,а иди смотреть план запроса.
Аноним 19/07/21 Пнд 10:41:14 2100187403
>>2099825
> count(1) кстати, это детектор конченных
>>2100105
>COUNT(1) нужно
Объяснитесь.
Аноним 19/07/21 Пнд 10:53:13 2100193404
>>2100187
Чел жиденько обосрался. Count (1) эквивалентно count (*) и считает все строки, а чтобы посчитать без учёта null, нужно делать count(имя_столбца)
>>2100105
Извиняйся.
Аноним 19/07/21 Пнд 12:09:54 2100251405
>>2100193
А ёбана, я думал 1, просто номер столбца, ну не так что б жиденько, но да, слегка поддал
Аноним 19/07/21 Пнд 12:17:48 2100254406
>>2100251
Ничего, бывает.
count(1) это как если бы ты добавил столбец, состоящий из единичек и сделал count по нему.
Еще крутой вопрос, которым можно душить джунов: что вернет count(null)?
Аноним 19/07/21 Пнд 12:28:18 2100260407
Аноним 19/07/21 Пнд 14:31:37 2100408408
>>2100254
>Еще крутой вопрос, которым можно душить джунов: что вернет count(null)?
Расскажи. Судя по логике остального, он как будто добавит столбец, состоящий из null, и сделает count по нему, но так как null он не считает, то получится 0.
Аноним 19/07/21 Пнд 14:42:00 2100412409
Аноним 19/07/21 Пнд 14:55:31 2100424410
>>2100412
чото мсскул сказал что %%ты пидор% нельзя нуль
Аноним 19/07/21 Пнд 18:19:56 2100623411
>>2099825
Иди нахуй, пидор, не буду я до звёздочки тянуться.
Аноним 19/07/21 Пнд 20:45:29 2100697412
>>2100623
Звездочка находится на цифре 8. Если учесть, что ты печатаешь ещё и скобочки, то для (*) ты нажмёшь shift + 980, все рядом. А для (1) ты будешь тянуться к единице и отжимать шифт, чтобы ее нажать.
Второй тест на уебана: where 1=1 пишешь?
Аноним 20/07/21 Втр 04:58:17 2100925413
Сап, студент на связи, поясните пару моментов:
1) Насколько вообще востребован SQL сам по себе? Без нормального знания какого-то ОО языка программирования есть смысл в это лезть, или без связки вообще не стоит?
2) Как понять, что ты готов пиздовать на джуна? Какие вообще задачи дают джунам? Явно же не только задания уровня сделать nное количество простых запросов с джоинами и парой стандартных функций в селекте.
Спасибо
Аноним 20/07/21 Втр 08:41:13 2100943414
>>2100925
Да, востребован и сам по себе. Есть очень много разных аналитиков или разработчиков баз данных. Но почему ты не хочешь вкатиться в настоящее программирование пока молодой?
Да, джунам в основном дают простые задачи, взрослых дядек спрашивают по кишочкам конкретных БД.
Аноним 20/07/21 Втр 11:14:05 2101079415
>>2100697
Только если динамическое спагетти собираю.
Аноним 20/07/21 Втр 12:45:45 2101183416
>>2100925
1) Вполне востребована, во всех банках пердолятся с этим говном
2) Когда можешь сложные джоины, оконные функции, немного хранимые процедуры.
Аноним 20/07/21 Втр 18:16:27 2101644417
Снимок экрана 2[...].png 111Кб, 1184x1116
1184x1116
Переставил систему, накатил постргю. И теперь почему-то не работает. Подскажите что не так? Раньше select similarity('йцу', 'йцукен'); выдавали что-то около 0.5
psql (PostgreSQL) 13.3
Аноним 20/07/21 Втр 18:41:25 2101671418
>>2101644
А если латинские? Что-то с кодировкой небось.
Аноним 20/07/21 Втр 18:45:51 2101674419
Если латинские, то всё норм.
Вот что-то с кирилицей. До сноса работало всё нормально. Куда копать? Может что-то с конфигами?
Аноним 20/07/21 Втр 18:47:41 2101677420
>>2101674
А в таблице и редакторе одинаковые кодировки?
Аноним 20/07/21 Втр 18:54:08 2101684421
>>2101677
В таблице у меня на лету в тестах кидается запись в бд, всё в utf
Аноним 21/07/21 Срд 05:00:38 2102108422
>>2096462 (OP)
>>2099130 →

Аноны, кто шарит в базоданности всей этой базоданнизациоанальной,
подскажите плиз - с чего начать, блядь?
Думаю, короче, присобачить на наноборду SQLite,
чтобы там всё реляционным было и чтобы реляционизировало
реляционность реляциональнизационно.
Есть даже такая вот dll-ка, https://github.com/username1565/System.Data.SQLite
которая билдится под шиндой, но херово билдится на mono (какая-то шляпа нипанатная, выдаётся на выходе).
В общем, как я понял, судя по исходнику, код базы где-то вот здесь:
https://github.com/username1565/nanoboard/blob/dev/nanodb.exe-source/Database/PostDb.cs
и как туда впихнть сиквелайт - хуй знает блядь.
В общем, интересует всё, струкура таблиц там, индексы-хуиндексы,
репликационность, шардинг, ну и собственно базоданность заебенчатая, чтоб летало всё и не бузило.
Опционально, криптование базы, чтобы мусор не спиздил инфо.
Шифрование думаю тупо сделать AES, а инфу хранить в blob'aх, но это уже второстепенное всё.
Надо короче набросать план, а с чего начать не знаю, блядь.
Походу мне надо кто-то, кто шарит в проектировании баз данных, для датацентров пиздатых,
потому что в будущем, база нанопостов такого глобального проекта как наноборда,
он может занимать целые пиздатые подземные лаборатории в замкнутых экосистемах на различных экзопланетах.
Аноним 21/07/21 Срд 06:45:11 2102115423
>>2052408 (OP)
Пусть есть таблица, реализующая дерево.
|  ID  |  parentID  |  data  |
Для каждого ID, здесь, существует, один и только один parentID.

Вопрос. А возможно ли, каким-либо образом, реализовать связь один ID -> много parentID, сделав это, с сохранением обратной совместимости с этой вот таблицей?
Первое, что приходит в голову, это включить дополнительные parentID's внутрь data, но тогда придётся парсить data для каждого ID. Может есть способ попижже, через какую-то дополнительную таблицу, заебенить сие, но сделав это так, чтобы эту вот таблицу не передёргивать, чтобы новый способ был как-бы опциональным, и мог не работать, но эта шняга чтобы гарантированно работала, как и прежде... Мм?
Аноним 21/07/21 Срд 08:26:34 2102126424
Аноним 21/07/21 Срд 11:27:47 2102271425
Будет ли count() > 100 from.. where.. пересчитывать все строки, или остановится на 101-ой. По моим тестам в SQLite считает все, ибо count() > 100 from (select.. from .. where.. limit 101) работает быстрее. Какие подводные есть у такой оптимизации? Или все так и пишут через подзапрос, а это я лопух писал просто count(*) > n? Или это SQLite не оптимизирует, а во "взрослых" базах без разницы? А?
Аноним 21/07/21 Срд 11:37:52 2102285426
>>2102271
Да, никакого волшебства здесь нет.
Сначала считать все строки, потом сделать count, потом применить к нему условие.
Во втором случае сразу ограничиваешь количество строк, которые читаешь, поэтому быстрее.
Никаких подводных нет, вопрос только, нахуя тебе это нужно? Проверить, есть ли в таблице 100 записей? Ну ок.
Аноним 21/07/21 Срд 11:39:43 2102290427
>>2101644
Это что pgAdmin? Брось каку, возьми хотя бы dbeaber.
>>2100697
>тест на уебана
Пишу where not 1<>2, я прошел тест?
Аноним 21/07/21 Срд 12:01:58 2102309428
>>2102285
>нахуя тебе это нужно? Проверить, есть ли в таблице 100 записей?
Типа того. Пишу борду (судя по посту несколько выше не я один), и так как сортировка тредов на доске у меня начала подпердовать уже на 300к постов (~100мс), то я принял волевое решение добавить в тред поле lastBump и повесть на инсерт поста триггер, который обновляет это поле. Соответственно триггеру надо проверить количество count(*) > bumpLimit и решить поднимать тред или нет. Конечно в моем случае не будет разницы между количеством постов и лимитом в 1000 раз, когда разница в скорости подсчета становится заметна (пока писал подумал, может еще добавить поле с количеством постов и два триггера на инсерт/делит хм.. Стоит ли?), так что вопрос скорее возник из спортивного интереса. Допускаю что я пошел совсем не тем путем, я совсем зеленый и "проектирую" все на ходу. Зачем я высрал этот пост? ХЗ.
Аноним 21/07/21 Срд 12:09:48 2102316429
>>2102309
>Зачем я высрал этот пост? ХЗ.
Нет-нет, очень интересная проблема.
Но с триггером хуйня затея, очень большие накладные расходы, если заниматься этим на каждом посте.
Не хочешь повесить джоб, который запускается раз в 5-10 минут и тред все треды, в которых больше определенного количества постов и последний бамп был определенное количество минут назад?
Аноним 21/07/21 Срд 12:11:37 2102318430
>>2102309
Кстати, обрати внимание, как двач сделан.
Есть уникальный ID поста и есть номер поста в рамках треда.
Может быть, тебе будет проще поддерживать номер поста и не поднимать, если номер нового поста больше 500?
Аноним 21/07/21 Срд 13:54:29 2102433431
>>2102316
>>2102318
>Но с триггером хуйня затея
Ты про триггер, который lastBump ставит? Так это поле очень полезно: имея индекс (доска, бамп) можно очень быстро получать какие треды должны быть на какой странице. Плюс на главной показывать последние обновленные треды. В общем-то вот эта сортировка тредов на доске по последнему бампу с учетом сажи и сжирала 100мс.
>джоб, который запускается раз в 5-10 минут
Вообще есть такое желание, толко не тереть а отправлять в архив, например в виде json'a. Но до этого мне еще пердолить и пердолить.
Например на форчане 10 страниц по 10 тредов + n тредов, которые утонули, но еще доступны по ссылкам, хуё-мое, получаем ну пусть 300 тредов по 500 постов. итого 150К постов, т.е. рядом теми 300К, которые я тесстировал.
>Кстати, обрати внимание, как двач сделан.
>Есть уникальный ID поста и есть номер поста в рамках треда.
О, а тут у меня совсем наркомания. Я ковырял vichan на гите и там в бд для каждой доски своя таблица постов и нет сущности тред (там у постов есть поле parentId - ссылка на оппост, приреплен ли тред тоже свойство поста), но мне такое не очень понравилось, все-таки тред это тред, а пост это пост. Так вот, что бы сделать раздельную нумерацию постов на досках, я при создании доски (через триггер) создаю и sequences для каждой доски и при постинге посту (снова через триггер) устанавливоется поле Number. А насчет номера поста в треде, его же все равно надо вычислять (да банально max() + 1) и при удалении постов мочей придется сдвигать нумерацию. Хотя это наверняка будет быстрей, чем каждый раз count() делать.
Кстати насчет tinyboard, там хитро сделано, что сами треды дублируются в виде фалов на диске и автоматически обновляются. Т.е. при запросе отдаются статические файлы и база практически не напрягается. Такой вот ультимативный кэш.

Хочется сделать приличное ядро и при этом не тупо копировать у других, но возможно я замахнулся на то, что мне не под силам. Но в любом случае, как говорится, обосраться - тоже опыт.
Аноним 21/07/21 Срд 14:40:45 2102476432
>>2102433
И в чем отличие треда от поста? Ничем. Во многих движках тред и пост - это одна сущность.
Аноним 21/07/21 Срд 15:01:02 2102506433
>>2102476
>в чем отличие треда от поста?
На мой взгляд, прикреплен ли тред, заголовок треда, является ли тред ридонли и прочие прараметры хранить в таблице постов неправильно, они же могут быть применены только к оп-посту. Как-же нормализация БД?
>Во многих движках тред и пост
Знаю, вон даже номер треда это номер оп-поста.
Аноним 21/07/21 Срд 19:58:10 2102929434
>>2102126
Нихуя не понел.
То есть, надо просто ещё одну таблицу сделать
|  ID  |  DataID  |  parendDataID  |
сформировав как-бы набор-данных из этих двух таблиц,
и её уже наполнить, парся data для каждой заПИСИ?
Аноним 22/07/21 Чтв 15:36:53 2103577435
Анон, помоги. Есть заморская программа с закрытым кодом. Она пишет данные в SQL Server. И вот что я хочу - когда программа что-то пишет в базу, я хочу видеть куда оно это записало, и что именно записало

Есть какие-нибудь средства для этого (MS SQL Server) - и да, я не шарю в девопсе и про базы данных знаю только на уровне команд SQL, поэтому мне надо попроще
Аноним 23/07/21 Птн 01:52:16 2104099436
>>2103577
Sql management studio клиент и подключайся
Аноним 23/07/21 Птн 11:04:53 2104247437
>>2104099
при чем тут это? я спрашиваю как узнать что и где изменилось в базе данных.

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

и вот я хочу узнать - какие изменения - какие таблицы были изменены, что в них записалось и т.д.
Аноним 23/07/21 Птн 11:52:41 2104283438
image.png 141Кб, 1280x800
1280x800
>>2104247
В SSMS, про который тебе ответили выше, есть SQL Server Profiler.
Ты им подлкючаешься к БД, настраиваешь нужные параметры (что именно логировать, для какого клиента и тд), запускаешь свою закрытую прогу и смотришь в профайлере все запросы, которые она шлёт.
Аноним 23/07/21 Птн 11:56:06 2104291439
Аноним 23/07/21 Птн 14:06:59 2104402440
Есть несколько таблиц MySQL, мне нужно получить результат в виде:

table1 100
table2 500

Сейчас вывод:
+----------+
| COUNT(*) |
+----------+
| 219775 |
| 2859 |
| 109 |
| 2896 |
| 1059 |
+----------+

Т.е. как добавить в результат имя таблицы
Аноним 23/07/21 Птн 14:09:55 2104403441
>>2104402
Хардкодом написать.
Аноним 23/07/21 Птн 15:07:18 2104506442
>>2104402
Можно динамически строить запрос, с начало запрашиваешь имена таблиц, потом из этих имен клепаешь запросы, в том числе одно из полей имя таблицы. Название таблиц берешь либо из системной таблицы либо создаёшь свою настоечную таблицу.
Аноним 24/07/21 Суб 00:16:56 2104965443
Анон, хочу вкатится в условное DBA по PostgreSQL.
Из знаний, ВУЗовский SQL 92, пинус и доебавший EF Core.

Хочется узнать:
- Принципы работы PostgreSQL под капотом
- Как работают индексы с примерами "вы обосрались"
- Мониторинг, логирование
- Репликация и масштабирование
- Проектирование

Я не знаю чо я хочу. Я хочу чтобы можно было самому себе сказать, что я знаю как это делать и не было стыдно перед работодателем и собою. Чтобы я мог в целом предсказать поведение СУБД, а не рассказывать что дропать индексы ради переименования или джойнить жопой медленно, потому что пук.

Есть какой-нибудь адекватный план по вкатыванию путем книжек, курсов, etc?
По сути только https://www.postgresql.org/docs/books/
Бери любую да читай, но хз мб двач подскажет че-нить
Аноним 24/07/21 Суб 00:41:53 2104969444
Что происходит с индексами при добавлении ограничений в MS SQL?
В особенности при добавлении FOREIGN KEY
Аноним 24/07/21 Суб 11:46:21 2105129445
>>2104965
> хочу вкатится в условное DBA по PostgreSQL.
У постгрес про есть пиздатый курс дба на русском. Только нахуй тебе, потенциальному разработчику, DBAшные знания?
Аноним 25/07/21 Вск 14:45:35 2106268446
Что такое SERIAL в pgsql? Это не тип, и не ограничение, тогда как мне его изменить? Как вообще проверить, что это свойство есть?
Пытался добавить запись в таблицу из php и получаю:

Unique violation: 7 ОШИБКА: повторяющееся значение ключа нарушает ограничение уникальности "elem_pkey" DETAIL: Ключ "(id)=(1)" уже существует

Какого? Оно же само должно увеличиваться? Мне что блять, самому ещё туда уникальное id заносить?
Аноним 25/07/21 Вск 14:50:30 2106273447
>>2106268
Просто не используй его в инсерте.
Аноним 25/07/21 Вск 15:05:03 2106289448
>>2106273
Его и нет в инсерте, это уже sql пытается подставить ID=1, хотя в таблице уже есть две записи.
Аноним 25/07/21 Вск 15:26:02 2106299449
>>2106289
Ну значит криво сделал схему, проверяй.
Аноним 25/07/21 Вск 16:16:56 2106356450
>>2105129
> У постгрес про есть пиздатый курс дба на русском
Можешь кинуть ссылку или название курса?
> Только нахуй тебе, потенциальному разработчику, DBAшные знания?
У меня основной профиль информационная безопасность, поэтому сижу на двух стульях одновременно - администрирование и программирование. Если говорить на языке зумеров - SecDevOps, Security Champion или DevSecOps.
Более реальный кейс - System Architect. Ну и чем хуевей проект (стартап или отсуствие денег), тем мультизадачней тебе надо быть
Аноним 26/07/21 Пнд 08:40:12 2106964451
На тесте поставили задачу, написать на постгрес вариант магазина, где есть некий товар в количестве N штук, и что бы пользователи могли резервировать этот товар по нескольку штук. И надо что бы это было якобы высоконагруженно и многопоточно. В общем всё сделал, но вылазиет фигня что так как многопоточно, то получаются лишние резервации, сверх запаса. При том именно постгри позволяет как бы параллельно работать с копией базы данных, и потом синхронизирует и получается бяка. Я могу это исправить на уровне языка (шарпа, фактически сделать однопоточную отправку), но как то вообще можно постгри заставить обрабатывать работу с конкретной дб в одном потоке?
Аноним 26/07/21 Пнд 08:43:15 2106966452
>>2106964
P.S. Или есть какой то синтаксис, что бы можно было вставлять строку с условием? Ну то есть если условие выполняется, то вставка работала, а если нет - то нет. Что б это в одном запросе как то было...
Аноним 26/07/21 Пнд 11:46:48 2107134453
>>2106966
Нахуя тебя многопоточность? Просто отправляй одной транзакцией несколько штук.
Аноним 26/07/21 Пнд 21:49:10 2107855454
>>2106964
> В общем всё сделал, но вылазиет фигня что так как многопоточно, то получаются лишние резервации, сверх запаса.
Раз тебе на тесте сказали сделать что-то многопоточно, то скорее всего подразумевается, что ты будешь использовать транзакции, определишь границы транзакций, выставишь уровни изоляции и т.д.

Лишние резервации сверх запаса получаются из-за того, что чтение количества резерваций и запись (добавление) резервации выполняются не атомно. Нужно чтение и запись резерваций объединить в одну транзакцию.
Аноним 26/07/21 Пнд 22:29:57 2107895455
изображение.png 4Кб, 237x216
237x216
Что-то проиграл с вашего w3schools, такой неполиткорректный.
Ещё бы назвали всех китайцев Чин-чонгами.
Аноним 26/07/21 Пнд 22:31:27 2107896456
>>2107895
Ты уже ебанулся с утомлением от толерастов.
Если бы было айвен фром мухосранск то было бы неполиткорректно?
Аноним 26/07/21 Пнд 23:18:34 2107960457
почоны, кабан!
Аноним 27/07/21 Втр 08:12:36 2108078458
>>2107895
А что не так? Хуан, Джон и Иван стандартные шаблоны имён. Имя апостола Иоанна на разных языках тащемто.
Аноним 27/07/21 Втр 08:19:42 2108082459
Аноним 27/07/21 Втр 09:29:37 2108113460
b21d62a1f6bb5ea[...].jpg 51Кб, 960x540
960x540
>>2108082
Даже Шон - это ирландский Иван.
Аноним 27/07/21 Втр 13:57:33 2108339461
>>2107855
Транзакции не помогут, как я понимаю.
Я засунул весь процесс в одну хранимую функцию. Если вкратце, она сначала смотрит запас, потом вносит резервацию, потом проверяет снова запас, и если бронь таки получилась лишней, то удаляет её. По сути копия транзакции (не делал напрямую транзакции, потому что требуется использовать процедуру, а мне нужна была функция, что бы показывало итоговое количество резерваций) Но всё равно, вылезают лишние резервации.
Как я читал про постгри, про её работу с многопоточностью, то там получается каждый поток работает с копией бд, а потом результат синхронизируется.
Аноним 27/07/21 Втр 13:58:19 2108341462
>>2107134
Условие задания такое, что бы была многопоточность.
Аноним 27/07/21 Втр 16:30:29 2108478463
Есть база данных MySQL, в ней 221048 записей
Поиск 1)
SELECT FROM database WHERE MATCH (text) AGAINST ("+word1 +word2 -word3" IN BOOLEAN MODE)
26 rows in set (20.26 sec)
Поиск 2)
SELECT
FROM database WHERE text LIKE "%word1%" AND text LIKE "%word2%" AND text NOT LIKE "%word3%"
32 rows in set (5.04 sec)

Так и должно быть? Вроде пишут что первый метод быстрее
И ещё чем почему все крупные компании не используют MySQL а используют другие БД?
Аноним 27/07/21 Втр 16:35:53 2108490464
>>2108478
Ну мне кажется логично, что второй метод быстрее. В первом он фактически проверяет соответствие всем трём условиям сразу, а во втором, если первое не подходит, то он второе уже не проверяет, например.
Аноним 28/07/21 Срд 10:39:54 2109269465
Как можно проверить успешность логина в postgresql.

Нужен какой-то запрос в БД, который выполнится даже если он запущен из под пользователя, у которого вообще ни каких прав в базе нет.
Аноним 28/07/21 Срд 12:17:16 2109375466
>>2109269
БД сама напишет, если какая-то ошибка.
Можешь еще попробовать select 1;
Аноним 28/07/21 Срд 14:10:00 2109487467
изображение.png 2Кб, 295x182
295x182
>>2109375
Мой говнокод работает через Qt и QSqlQuery.
Грубо говоря, процесс ввода логина пароля - это просто их запись в оперативную память компьютера.
А дальше прога в работе либо выдаёт ошибки (если ты не залогинен, либо нет доступа), либо работает нормально.

Мне надо сделать какой-то запрос, чтобы после клика по кнопочке "Войти" он писал - удачно я вошёл или нет.

А для этого нужно отправить какой-нибудь запрос в БД. Но городить костыли в виде if-ов, в которых проверяется доступ хотя бы к одной базе - вообще не хочется
Аноним 28/07/21 Срд 15:04:58 2109574468
>>2109487
>костыли в виде if-ов
Это и есть программирование, разве что исключения попробуй, что по сути оно же.
Аноним 29/07/21 Чтв 03:28:14 2110348469
>>2062501
Ты еще здеся?

Как аппа инсертит логи в КХ? Апп => (RabbitMQ/вставить нужное) => Bulk-Insert в КХ?
Аноним 29/07/21 Чтв 11:23:54 2110479470
2908621686[1].jpg 228Кб, 1024x682
1024x682
Допустим есть таблица с иерархической связью:
Id, ParentId, Name...
Как можно в определении таблицы сделать ограничение на ParentId так, чтобы он был либо NULL, либо соответствовал одному из уже имеющихся Id в этой же таблице?
Аноним 29/07/21 Чтв 11:25:33 2110480471
>>2104965
PostgreSQL - это open source.
Что мешает посмотреть исходники и разобраться?
Книги - это втор. продукт уже.
Аноним 29/07/21 Чтв 11:25:41 2110481472
изображение.png 55Кб, 1553x815
1553x815
Сап аноны, у меня есть вопросы по нормальным формам.

Есть схема пиклередй.


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

1) В каком НФ находятся синие таблицы?
2) Чем это черевато?
3) Какие весомые аргументы есть в пользу нормализации и вынесения второго набора нормативов в отдельный справочник.

Мне кажется это BCNF
Аноним 29/07/21 Чтв 11:34:09 2110483473
>>2110479
alter tables nodes add foreign key parent_id_fk(parent_id) references nodes(id)

Аноним 29/07/21 Чтв 11:40:53 2110484474
Screenshot20210[...].jpg 221Кб, 720x1440
720x1440
Вакансия на "Начинающий разработчик баз данных" хватит ли знаний со stepik по sql? Я просто из qa и не знаю какие навыки нужны для вката в бд
Аноним 29/07/21 Чтв 11:47:15 2110489475
>>2110483
Но это ограничение не пропустит Null для ParentId для корневого элемента.
Аноним 29/07/21 Чтв 11:48:37 2110491476
>>2110484
в вакансии литерали написано - нихуя не надо знать бля сблевнул от фаербёрда
Аноним 29/07/21 Чтв 20:35:00 2111125477
Есть одна таблица в postgres, колонок из 20-30, куда будет сапаться относительно много записей, причём около 3/4 колонок в каждой записи будет заполнено нулями. Как оптимизировать подобное в плане экономии места?
Аноним 29/07/21 Чтв 20:37:52 2111129478
>>2111125
Зачем же нули, если можно null.
Аноним 29/07/21 Чтв 23:53:00 2111347479
Аноны, помогите пожалуйста. Какой общепринятый вариант массового инсерта с плейсхолдерами в постгресе. Вот мне надо добавить 500 позиций в таблицу за один раз и я начинаю тянуть такую колбасу INSERT INTO albums (album_id, name, artist) VALUES ($1, $2, $3), ($4, $5, $6) и т.д, параллельно пересобирая массив данных для нормального добавления. Я хуйню делаю и есть какой-то другой нормальный способ, или все норм? А если мне нужно в три таблицы паралелльно данные заносить? Это же ебануться можно
Аноним 30/07/21 Птн 00:00:54 2111349480
Аноним 30/07/21 Птн 01:01:59 2111423481
>>2111349
Я не из базы или файла это тащу, а из апишки сторонней, вот в чем проблема
Аноним 30/07/21 Птн 01:21:59 2111445482
>>2111423
Ну так гони через пайп.
Аноним 30/07/21 Птн 08:44:26 2111568483
Допустим есть таблица MySQL, в ней записи по датам, можно ли получить на основе неё таблицу содержащую столбцы:
дата, кол-во записей
например
2021-07-20 100
2021-07-21 120
2021-07-23 97
Аноним 30/07/21 Птн 08:59:54 2111574484
Аноним 30/07/21 Птн 09:31:25 2111596485
Аноним 30/07/21 Птн 10:06:19 2111625486
Можно ли в постгресе из функции вернуть таблицу с двумя столбцами с одинаковыми именами? Т.е. у меня в функции есть запрос по типу select foo., bar. from foo join bar on foo.a = bar.b и нужно вернуть
| ID | A | ID | B |
Я не хочу гонять сам запрос от клиента к бд, поэтому решил сделать функцию. И не хочу усложнять маппинг, поэтому хочу столбцы с оригинальными названиями.
Аноним 30/07/21 Птн 10:27:51 2111663487
>>2110489
Так не делай parentId not null o.O
Аноним 30/07/21 Птн 14:35:20 2112010488
>>2111445
А можно ткнуть меня лицом в доку по этому пайпу? Гугл выдает раздел про pipeline, который относится к старой версии постгреса, в новой версии такой страницы нет вообще
Аноним 30/07/21 Птн 15:00:40 2112046489
Подскажите замену книжке Дейта. На английском в нормальном качестве невозможно найти, а на русском читать не хочу.
Аноним 30/07/21 Птн 15:20:30 2112070490
>>2112046
На орели есть видео где дед сам рассказывает
Аноним 31/07/21 Суб 14:55:12 2112969491
>>2112046
Ёбу дал штоле Дейта читать в 2к22?
Аноним 31/07/21 Суб 15:02:43 2112976492
>>2112969
А что сейчас модно? Видяшка на ютубе от Алёши Писюнкова?
Аноним 31/07/21 Суб 15:55:01 2113046493
Хелп, я сейчас ебнусь головой с этим sql
pg sql
Есть две табы, связь один ко многим.
Я делаю запрос на получение данных из первой табы, но мне также нужно подсчитать число записей во второй таблице, относящихся к первой таблице, и при этом подсчитывать надо только те, у которых значение поля free = false.

SELECT
table1.id,
table2.number_free_seats,
FROM
table1
LEFT JOIN table2 ON
table2.table1_id = table1.id
WHERE table1_id = $table1_id
ORDER BY table1.id

Я не понимаю, где и как тут правильно подсчитать count? Как его вообще отнести именно к таблице table2 и как при этом подставить "case when free = 'null' then 1 else null end", или это надо делать через where?
И даже если я просто подставляю count(table2.id) без выборки по соответствию поля free = false, но на это получаю:
>столбец "table1.id" должен фигурировать в предложении GROUP BY или использоваться в агрегатной функции
(У МЕНЯ ЭТО УЖЕ СДЕЛАНО, почему мне это пишут?)
Пишут, что такую ошибку надо исправлять тем, что делать count прямо в left join, а результат равнять какому-то полю, и это поле запрашивать в select, но у меня для этого нет никакой поля в table2...
Аноним 31/07/21 Суб 17:30:14 2113171494
>>2112046
Garcia-Molina, Ullman, Widom - Database Systems: The Complete Book.
Дейта не надо читать.
Аноним 31/07/21 Суб 19:29:15 2113255495
>>2113171
Шиз, спок. Щас бы читать алгебраическую теорию тривиальной хуйни, которую можно на пальцах объяснить.
Аноним 31/07/21 Суб 20:10:49 2113292496
>>2113046

SELECT
table1.id,
(select count(*) from table2 t2 where t2.t1_id = t1.id and not t2.free) as number_not_free_seats,
FROM
table1 t1
ORDER BY table1.id
Аноним 31/07/21 Суб 20:11:53 2113293497
>>2113046
>У МЕНЯ ЭТО УЖЕ СДЕЛАНО
P.S. А зачем код показываешь где вообще нет груп бай?
Аноним 02/08/21 Пнд 20:54:07 2115192498
>>2113171
Спасибо. Наконец-то нашёл хорошую книгу.
Аноним 02/08/21 Пнд 22:14:23 2115262499
Вопрос по spark. Есть паркет разбитый на 600 бакетов, из которого я фильтрую набор строк контекстом на 5 экзекуторов. Я наивно предполагаю, что если бакеты равномерно раскиданы по нодам с экзекуторами, то каждый экзекутор просто пробежится по ~120 бакетам и через драйвер вернет нужные строки в приложение. Т.е всего так и выполнится 600 тасков. Но если смотреть через spark UI, то видно что он сначала создает джобу на 1 таск, потом на 4, затем 20, 100 и наконец на 500. Каждый таск выглядит одинаково: FileScanRdd->MapRepartition. Итого больше 600 тасков получается. Это оптимизатор что-то хитро там вертит или что, почему именно такая градация?
Аноним 03/08/21 Втр 18:56:30 2115976500
Почему сейкель такое говно в сравнении с нормальными ЯП?
Аноним 03/08/21 Втр 19:00:19 2115980501
>>2115976
Потому что это не ЯП?
Аноним 03/08/21 Втр 19:12:18 2115999502
>>2115980
Все что служит командным интерфейсом к какой-то функциональности - ЯП. Даже русский это язык программирования кожаных мешков на их определенную реакцию и активность. Просто его формализация весьма хуёвая.
Аноним 03/08/21 Втр 19:15:31 2116003503
>>2115999
> Все что служит командным интерфейсом к какой-то функциональности - ЯП
Тогда и кнопки на микроволновке - ЯП.
Если хочешь получить ответы на вопросы, используй общепринятые определения, либо пиши глоссарий в конце поста. А то наверняка у тебя свои понятия для "сейкеля", "говна" и "в сравнении".
Аноним 03/08/21 Втр 19:21:23 2116013504
>>2116003
Но кнопки на микроволновке действительно ЯП, только очень простой.
Я не хочу получать ответы, просто бомбануло очередной раз от изучения этого высера для бухгалтерш и кладовщиц.
Аноним 03/08/21 Втр 19:24:17 2116014505
>>2116013
Ой да ладно, не такое уж он и говно, раз за 40 лет пережил всех своих убийц.
Аноним 03/08/21 Втр 20:30:31 2116054506
>>2113255
Ага, а Дейт на пальцах по-твоему объясняет?
Аноним 03/08/21 Втр 23:03:53 2116263507
Аноним 04/08/21 Срд 10:50:14 2116627508
Пишу динамическую процедуру для подсчёта кол-ва записей для каждой таблицы, в таблице news_name есть столбец news_name с названием каждой таблицы. При запуске mysql воспринимает переменную как буквальное значение:
Table 'testdb.tablename' doesn't exist
Код:
https://pastebin.com/GRihnUuT
Что не так в коде?
Аноним 04/08/21 Срд 11:21:22 2116662509
>>2116627
Динамический SQL немного не так работает, тебя научить?
Ты, действительно, запускаешь запрос select * from tablename, потому что нельзя получать названия таблиц из переменных.
Динамический SQL это когда формируешь строчку со своим запросом и запускаешь ее специальной командой.
Можешь погуглить, можешь ждать, что придет кто-то знакомый с твоим диалектом sql и напишет все за тебя.
Аноним 04/08/21 Срд 11:34:55 2116679510
>>2116662
Спасибо, я понял. А почему в MySQL у меня не работают глобальные переменные, вот пример:
https://pastebin.com/HTKANxFy
Аноним 06/08/21 Птн 11:47:33 2118805511
>>2052408 (OP)
Привет. Помогите пожалуйста.

Пришел вести проект в организацию. В нем есть База, около трехсот таблиц. Есть таблицы без связей, но в основном это связи один-к-одному. Мне нужно визуализировать схему БД, что-бы побыстрее въехать в происходящее и смочь быстрее начать ставить задачи перед разрабами. JB DataGrip смогла, но сбила все это в кучу. Поможет ли 4К телевизор в кач монитора, например? Или экспорт в некий формат и ручная правка... Есть вообще мысли на этот счет?
Аноним 06/08/21 Птн 14:19:31 2119022512
>>2116263
Процент слаггинга посчитал уже?
Аноним 07/08/21 Суб 18:27:55 2120286513
>>2052408 (OP)
Сап.
Где-нибудь можно взять что-то вроде тренировочных баз данных, на которых я смогу тренироваться писать какие-то сложные запросы или процедуры?

А то я что-то слабо себе представляю, как мне вообще по своей БД и по запросу определять, правильный ли аутпут я получил.
Аноним 07/08/21 Суб 19:53:23 2120359514
.jpg 79Кб, 498x257
498x257
Аноним 07/08/21 Суб 19:58:48 2120366515
.jpg 49Кб, 847x298
847x298
>>2120286
Вот как раз для тебя — http://cs186berkeley.net/fa20/
Открываешь там "проект 1"
Видишь пикрил.
Скачиваешь эту самую "lahman.db"
Если надо, читаешь ридми http://www.seanlahman.com/files/database/readme2019.txt
Открываешь задачи и начинаешь их решать, потом скармливаешь проверялке. Пишешь запросы, получаешь результаты.
Плюс можешь посмотреть в сторону Моисеенко и его https://www.sql-ex.ru/
Аноним 07/08/21 Суб 20:01:45 2120371516
>>2120366
Правда в процессе выполнения заданий ты нихуя не будешь понимать что за хитрые колдунства ты из базы добываешь (если ты конечно не бейсбольный гуру), но это и не нужно — тебе говорят получить то-то и то-то, ты получаешь, знать что это такое — необязательно.
Ну и если с английским плохо, то вообще ничего понимать не будешь, тогда лучше сразу стопы к Моисеенко направь.
Аноним 08/08/21 Вск 04:48:59 2120669517
изображение.png 229Кб, 500x380
500x380
Шо там по перекатам?
Триггеры в mysql Аноним 10/08/21 Втр 09:51:22 2123085518
Безымянный.png 5Кб, 551x352
551x352
Добрый день ночь еба
Не кидайтесь говном только пожалуйста, начал изучать БД, и стало интересно как создавать триггеры в ссаном Adminer 4.8.0(4.8.1)
Поделитесь советом, рекомендацией или своим наставлением юному БДшнику, в инете инфы пруд пруди, но из-за этого каша в голове уже

p.s.
Аноним 11/08/21 Срд 21:10:21 2124908519
>>2052408 (OP)
У нас архитекторы запилили дата волт поверх дата волта и еще сверху снежинку. Сижу смотрю на эту хуйню и как же блять душно что везде job security driven development... Дегенераты ебучие.
Аноним 13/08/21 Птн 12:39:51 2126531520
16286150114511.webm 413Кб, 448x480, 00:00:07
448x480
Анончики, подскажите пжта. Впервые такое вижу.
Можно ли в запросе SQL указать не имя базы, а путь к ней.
SELECT blabla
FROM "/usr/table"
Аноним 13/08/21 Птн 12:49:12 2126536521
>>2126531
Нельзя, смысл как раз в том, чтобы ничего не знать о файлах.
Несколько раз уже видел пост с примером, где селект из файла, при этом все, кто это постит, отказываются говорить, откуда этот пример взяли. Ни одна популярная СУБД так не умеет.
Аноним 13/08/21 Птн 13:08:39 2126555522
>>2126536
Тестовое задание в одну потогонку.
Добра тебе, спасибо огромное.
Аноним 15/08/21 Вск 11:00:05 2128338523
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов