И снова это неиндексированный баз данных тред!Тут мы решаем ультраважные вопросы о том, как правильно хранить динамические атрибуты сущностей: в полях или в строках,Рассказываем, как работаем аналитиками и мечтаем стать разработчиками,Строим АНАЛИТИЧЕСКИЕ отчеты в экселе, выгружая по миллиону строк, а потом фильтруя,Дружно не понимаем, ЗОЧЕМ ЖИ НУЖИН ОЛАП, ЕСЛИ И ТАК ВСЕ РАБОТАЕТ ЗАЕБИСЯ,Ищем ошибки в аббривиатурах MDX DMX XMLA,Доебываемся до эс - ку - элей наших же потенциальных конкурентов>Select id from tbl_table_with_id where id = (select max(id) from tbl_table_with_id)>ЧТО НЕ ТАК-ТО У МЕНЯ?Удивляемся, как за знания, приобретаемые за 4 месяца на sql-ex, могут платить по 100к, и бугуртим, что ниасилили и 100к не получаем.А так же:Постгре или постгрес?Май эс ку эль или мускуль?Эс ку эль или сиквел?В общем, это очередной баз данных тред, поехали!Награда светит не посмертною медалью, отнюдьЭто храм старого формата, так предали огнюИ скоптили небо старики, что слышны с Невской рекиМы видим дым от костра - "Да здравствуют базовики!" ПРЕДЫДУЩИЙ: >>1086747 (OP)#sql #бд #базы данных
>>1167018 (OP)>сиквелЭто баттхерт-тред?
>>1167018 (OP)Найс блядь обосрался с перекатом. Не умеешь - не берись.
>>1167228Иди нахуй.
>>1167228Хуль тебе не нравится? Даже теги поставил. Оп - не хуй. А ты - пидораха.мимо
еее, перекот!
И вот снова классический перекато срач в БД-треде, когда уже нормальный перекат будет с новой тупой шапкой, ммм?
>>1167322Вот это взрыв :^)Для начала чекай тему, а потом свою мать.
Аноны, посоветуйте книжечек по постгресу. Сложно его в питон интегрировать? Я поставил сервер + накатил DBeaver чтоб в консоли не пердолиться
>>1167416>Сложно его в питон интегрировать?SQLAlchemy
Также по постгресу вопрос, версии 9.3. Нужно что-то вроде отказоустойчивого кластера. Есть два сервера В идеале один из их будет мастером, данные автоматически будут сливаться на слейв. В случае недоступности мастера (как и где вообще эту недоступность проверять?), слейв берет на себя все его обязанности и, когда мастер становится доступен, сливает свежеполученные данные на него (и передает управление?).Короче, второй день читаю информацию на эту тему, сравниваю варианты репликации и уже реально запутался. Кто-ндь наставит на путь истинный?
>>1167809Вдогонку: есть ли способ относительно безболезненно обновиться с 9.3 на 10 без промежуточных этапов?
>>1167809Это называется StandBy. Гугли книги администратора postgres на рутрекере. Настрой сначала архивлоги, а потом с этого пляши. Научись эти логи синмать раз в полчаса, например, а после дополни конфиг на стэндбай. Чтобы безболезненно перейти на новую веосию читай ман про апгрейд, или делай бэкап и разворачивай потом на десятку
Есть одна группа и в ней много студентов.Как мне сделать таблицу эту по нормальному? Но если я сделаю как на пике, мне придется каждый раз писать insert into Группа - и вводить каждый раз имя группы, каждый раз количество и менять только айдишник студента.Это нормальный подход?
>>1168008И еще каждый раз айдишник группы.У меня будет одна и та же группа с разными айдишниками.
>>1168008Это ты так не смешно шутишь?
Че правда есть отдельная профессия, где платят за построение запросов к базам данных? Я думал, это задача бэкендера.
>>1168065кек. Data Science какой-то вроде.
запощу и сюда заодноПродолжаю вкатываться, хочу устроиться для начала джуном в бекенд на Питоне. Дошел в своем обучении до баз данных. Что прочитать по ним? Database systems Сиджея и Learning sql ? Или это не то совсем? Что тогда надо?
>>1168164Алан Бьюли, Том Кайт.
>>1168008Связь студент-группа должна быть в отдельной таблице, в этой таблице также должны храниться дата начала членства студента в группе и дата окончания оной (null - если дата окончания неизвестна)
Поясните за PostgreSQL.Чтобы добавить ограничение на колонку нужно выполнить такой запрос:ALTER TABLE products ADD CONSTRAINT some_name UNIQUE (product_no);(источник: http://postgresql.ru.net/manual/ddl-alter.html )Как я понял product_no является названием колонки или нескольких колонок для которых мы добавляем ограничение, а чем тогда является some_name ?
>>1168243Название ограничения же. Нельзя же без имени же.
Как в БД на физическом представлен null? Есть поле integer, как СУБД определяет лежит там значение или это null?
>>1168224>Связь студент-группа должна быть в отдельной таблице,Как она выглядит эта связь?
>>1168291Как-то так:student_group_id numberstudent_id numbergroup_id numberstudent_group_date_start datestudent_group_date_end dateЭто самый простой вариант. Можно добавить ссылки на документы, на основании которых осуществлялось включение/исключение в группу, добавить комментарий.Кстати, количество человек в группе хранить в таблице не надо.Оно рассчитывается в зависимости от даты.Например, на первом курсе было 20 человек, к пятому осталось 8. Тебе нужно узнать, сколько человек отчислилось на третьем курсе, или сколько пришло из академки на четвертом. С такой промежуточной таблицей-связью это легко сделать.
Посоветуйте GUI для MySQL
>>1168368https://www.sqlmanager.net/ru/products/mysql/manager
Посоветуйте норм гуй для постгреса, чтобы там были вкладки как в dbForge
>>1168256Но ведь при создании таблицы я могу сделать вот так:CREATE TABLE products ( name text, id integer UNIQUE);Так вот, где здесь указывается имя ограничения?
>>1168320Точно! Спасибо тебе большое, что уделил на меня время.
Привет, бродяги. Кому задачек порешать по sql?
>>1168648ну го
>>1168670Дак давай, бля.
>>1168671На
>>1168680Взял
>>1168648Ну, если впадлу делать что, можешь мою взять с триггерами.Нужно разработать и реализовать триггеры для операций INSERT, UPDATE, DELETE для проверки сложных ограничений, накладываемых на схему предметной области (не менее двух триггеров для каждого типа операции). Не менее трех триггеров (любого типа) должны выполнять действия компенсирующего типа в связанных таблицах. По одному триггеру для каждой операции должны быть триггерами instead of (триггеры должны содержать логику обработки данных - например, выполнение компенсирующих операций, расчетные данные, обработку сложного удаления или обновления данных).
>>1168765проебался с пиком.
>>1168765Зачем?Это не задача, это упражнения
>>1168765Но это есть в книгах по Ораклу, не проще ли посмотреть там?..
>>1168520В этом случае имя генерится субд и оно не очень удобное. Не знаю как в постгресе, а в Оракле это что-то вроде sys_12343123.По ссылке, которую ты выше приводил:Чтобы удалить ограничение, вам необходимо знать его имя. Если вы сами давали ему имя, то все просто. В противном случае, СУБД назначило автоматически сгенерированное имя, которое нужно найти. В этом может помочь команда \d tablename в psql; другие интерфейсы также могут предоставлять способ инспектирования подробностей таблиц. Затем выполняется команда:ALTER TABLE products DROP CONSTRAINT some_name;(Если вы выполняете команду с указанием такого имени ограничения как $2, не забудьте, что вам понадобится заключить имя в двойные кавычки, чтобы имя было воспринято как правильный идентификатор.)
>>1168918понял, принял. Спасибо
>>1167880Благодарю. Обновление уже сделал, проблем вроде не было.Насчет StandBy не нашел ничего толкового, логи и бекапы есть, как я понял все-таки нужна потоковая/логическая репликация. Помимо этого, наткнулся на вариант кластера высокой доступности средствами самой винды: https://www.postgresql.org/message-id/006c01cd8c6f%24bd274ba0%243775e2e0%24%40devshock.com (правда слабо понял, как это реализовать, сейчас усилено гуглю).Что думаете об этом? Стоит ли пробовать (учитывая, что серваки надо было запустить уже на этой неделе, а я - простая вебмакака без опыта администрирования чего либо)?
Есть в треде кто работает ETL разрабом? Как вообще направление? Работаете из-за денег или реально интересно чистить данные от закачиков?
>>1168489DataGrip
>>1168489DBeaver.
>>1169044Ты серьёзно? Твои друзья вот эти три дядьки:Bartolini G., Ciolli G., Riggs S.Есть же годные доки на сайте postgresql.Первым делом читай про Wall-Ahead Logs ( они же archvie logs) параграф 29.2. Если ты не разберёшься с технологией Standby то можешь налепить скрипт, который на второй машине будет применять эти логи. Да и приятно, когда у тебя бэкап каждый день, а архивлоги делаются каждые 15 минут. Это позволит восстановить сервер если упадёт стэндбай и кто-то повредит базу например на 18:06(а бэкап у тебя в 00:00)Сама технология Standby основана на передачи redo-журналов по сети другой машине, и там уже применение. Standy это 25.5.Есть краткий ман по настройки Standby вот тут : https://wiki.postgresql.org/wiki/Hot_Standbyно по сути настроив wal ты вполне легко настроишь standby. Чтобы понять как всё работает и посмотреть все настройки тебе нужно postgresql.conf , и забэкапь этот файл, чтобы если сломаешь его, то сможешь восстановить.По сути если у тебя есть виртуалка, то просто копируешь машину, а потом делаешь из одной main сервер, другой standby. И выпроси хранилище для бэкапов, даже если кто-то заебашит raid-5 тебе будет это нужно.
>>1169450Работаю ETL-разрабом в развитии DWH полтора года. Oracle + Informatica. Мне норм, как тебе будет хуй знает. Лично мне платят хуево, собираюсь в ближайшее время перекатываться в другое место.
>>1168280В оракле, если не ошибаюсь, NULL определяется как строка в блоке с значением длины 0.
>>1168065>>1168073Есть такая профессия, даже не обязательно Data science. Если ты делаешь хуйню для который нужна база, то это типичная задача бэкэнд-разработчика на язык-нейм. Если ты делаешь с нуля или развиваешь ебическую, нетривиальную по объему и нагрузке базу на основе которой будут работать разные хуйни, то это отдельная профессия.
Посгрес сосатб.
>>1169943у меня вторая есть как отдельная задача, лол.Проектировка БД. Причём приходится всасывать дохуя документации и иногда недокументируемые возможности, но я вообще программист-архитектор по профессии.
>>1170047>я вообще программист-архитектор по профессииО!
>>1168900>Но это есть в книгах по Ораклу, не проще ли посмотреть там?.Что там есть?
кто есть?
>>1170251есть
>>1170263Как мне создать триггер на удаление всех записей у которых одно поле равно удаляемому значению?
>>1170273У тебя каскад получается, ты в курсе?не проще удалить через where без триггеров.
>>1170156Прибыл, Фейербах, Кайт. Читай.
Собираюсь написать СУБД-engine на js.
>>1169622Спасибо, анон, за подробное разъяснение! Вообще с английским не очень дружу, то есть читаю, понимаю, но это занимает раза в 3 больше времени и сил, чем та же инфа на русском. Но книга реально крутая, буду разбираться.Была мысль поднять по виртуалке на каждом сервере, основа - Дебиан, гостевая - Windows Server 2012 R2, но идея мне кажется дико костыльной, причем хз, можно ли ОЕМ-ключи к винде использовать на виртуалке.
Аноны, поясните мне за оптимизацию SQL запросов в MS SQL. Чо это такое, как это работает? Во допустим у меня есть обычный select * from hui.dbo.vruke where DateTime = ""ну вот мне надо таких запросов послать 12 штук за один раз, при этом разница в них будет только в DateTime - по два часа, то есть первый запрос с DateTime равным 00:00:00, второй 2:00:00 и так далее. И вот чего, как это можно оптимизировать?
>>1169652Не в зеленом госбанке случайно?
>>1170707Ну эта, сморя чо те надо сделать.Запросы-то не ради самих запросов отправляются, верно?Если ты хочешь получить какую-то информацию за сутки, тебе и надо отправлять один запрос на сутки плюс группировка по 2 часа.
>>1167018 (OP)Планирую начать использовать MongoDB, чтобы объединить в одном месте несколько больших наборов данных со множеством столбцов, где в случае SQL пришлось бы делать много таблиц.Вот тут пишут, что из MongoDB неудобно делать запросы по типу SQL https://habrahabr.ru/post/222083/Если это так, то что, кроме упоминаемого Asterix, можно взять в качестве No SQL базы, чтобы можно было использовать команды, схожие с SQL ? Желателен модуль для Python.
>>1170504> Фейербах, Кайт. Читай.Нихочу.>>1170502>У тебя каскад получается, ты в курсе?Да, я решил проблему.
>>1170707Используй динамический sql
Надо вкатиться в базы данных, с чего начать? Я не про учебник, а про само написание кода. Скачал с официального сайта MySQL, он требует .Net framework 4, скачал его с официального сайта, а он уже установлен, но на самом деле нет, и MySQL не хочет ставиться и .Net Framework не хочет ставиться, а я хочу ставиться по вене, анон помоги.
>>1170745Нет, в зеленом госбанке заебись платят, говорят.
>>1170991Попробуй поставить 4.5.2, а не 4.5Сам базами не страдаю, так что сказал навскидку.
Только что узнал про дистинкт и чет не понял, нахуя он нужен если есть джойны? Когда его надо использовать?
>>1170750>Если ты хочешь получить какую-то информацию за сутки, тебе и надо отправлять один запрос на сутки плюс группировка по 2 часа.Да неужели получить результат за сутки, а потом выколупывание данных за каждые два часа будет быстрее?>>1170869>Используй динамический sqlЭто что такое? Как мне поможет?
>>1171074это например такая конструкцияyoba:=tiselect * from you.pidor where you.youba=:yobaкогда ты делаешь это динамично, то план составление и исполнения запроса выполняется 1 раз на дохуя данных. То есть ты берёшь и меняешь yoba на что-то другое, например yoba:=mamka. Время на данный select тратится в разы меньше, ведь ты уже делал такую же выборку, анон, да ведь?Дальше каждая норм СУБД имеет расширенный sql, можешь написать функцию или materialezed view.Вообще если ты регулярно делаешь такие вопросы, то почему ты не подумал ещё о partition table? >>Да неужели получить результат за сутки, а потом выколупывание данных за каждые два часа будет быстрее?Ты не поверишь, но да. Можешь сделать вьюху с этими данными, а потом из перебирать. Вьюха это не только удобство, но и скорость.
>>1171081блин, это интересно, но мне не ясно, сработает ли в моем случае, я просто задачу упростил, дабы анонов не грузить. Я на шарпе пишу отчеты и тащу данные вот таким запросомSELECT * FROM OPENQUERY(INSQL, 'SELECT aL1_1_2\value, aL1_6_2\value, aL6_1_2\value, aL6_2_2\value, aL7_4_1\value, aP1_1_1\value, aP1_2_2\value, aP1_6_1\value, aP11_1\value, aP2_1_1\value, aP2_1_13\value, aP2_1_3\value, aP2_1_5\value, aP2_2_1\value, aP2_2_13\value, aP2_2_3\value, aP2_2_5\value, aP3_1\value, aP7_8_7\value, aP7_8_8\value, aT1_2_1\value, aT2_1_12\value, aT2_2_12\value, aT24_4\value, aT3_2\value, aT7_8_6\value, aV2_1_7_1\value, aV2_1_7_2\value, aV2_2_7_1\value, aV2_2_7_2\value FROM WideHistory WHERE DateTime = ""FinishTime""');где в цикле заменяю FinishTime на нужное мне время 12 раз. Вот такое говно как то можно оптимизировать?
>>1171087Мм, вьюху делай
>>1171074>Да неужели получить результат за сутки, а потом выколупывание данных за каждые два часа будет быстрее?Зависит от структуры базы(особенно индексов) и природы данных. В общем случае так лучше и правильнее.Если же мелкие запросы предпочтительнее, так тоже может оказаться, то их надо делать с bind переменными.
>>1171087Даже если не дойдешь до вьюшки или хранимки, сделай bind переменные. Сейчас у тебя самый хуевый вариант из возможных.
>>1171214>bind переменныеа чо, а как? я просто в ms sql не очень (только на уровне простых запросов и Entity Framework). В двух словах с небольшим примером можно? А то в гугле только про mysql нашел биндинг.
>>1171220Если ты используешь bind-переменные для запроса , который вызвается несколько раз, то СУБД гораздо, гораздо быстрее разберет и выполнит второй и следующие запросы, используя данные из кэша. Если ты формируешь запрос простой строкой, то с точки зрения субд каждый запрос - уникальный и возникают дополнительные расходы на парсинг и построение плана, кэш не используется. Если таких уникальных запросов много, то ДБА тебе руки не пожмут.Если ты используешь openquery, то там нельзя просто так использовать bind-переменные, вот же говно, не ожидал.На твоем месте я бы попробовал сделать хранимую процедуру и вызывал бы ее с подставленным в цикле значением (но сначала попробовал бы все-таки группировки. Опять же, зависит насколько часто твой отчетник дергает базу)https://social.msdn.microsoft.com/Forums/en-US/5da9950d-c526-4afe-a6d7-30488db2fb26/calling-sp-using-open-query-in-sql-server?forum=transactsql
>>1168489Aqua data studio, на рутрекере есть крякнутая
>>1167018 (OP)Задание: 1 ($erges: 2008-06-21)Дима и Миша пользуются продуктами от одного и того же производителя.Тип Таниного принтера не такой, как у Вити, но признак "цветной или нет" - совпадает.Размер экрана Диминого ноутбука на 3 дюйма больше Олиного.Мишин ПК в 4 раза дороже Таниного принтера.Номера моделей Витиного принтера и Олиного ноутбука отличаются только третьим символом.У Костиного ПК скорость процессора, как у Мишиного ПК; объем жесткого диска, как у Диминого ноутбука; объем памяти, как у Олиного ноутбука, а цена - как у Витиного принтера.Вывести все возможные номера моделей Костиного ПК.Есть идеи как такое решить?
>>1171317изи же. Но знаешь, sql-ex и ты идут на хуй.
>>1171317>Есть идеи как такое решить?А у тебя? Хоть строчку написал? Где твои собственные соображения? М?
Анон, поясни за базы данных на графах, например neo4j. Правда, что с ними быстрее селектить джоины? Вообще какие у них практические преимущества перед реляционной классикой?
>>1171584Джойнов нет, селектов нет.Там используются RDF, RDFS, SPARQL, OWL, SWRL, ну и CYPHER.Что это такое - смотри в интернете. Логика совершенно другая.Возьми OrientDB и попробуй, првда там sql даже очень далек от 92. Но есть возможность запилить граф. Если хочешь область применения - социальные сети. Там это оптимально в отличии от реляционной, и вот подумай почему.
Сап. Посмотрел полторы лекции про индексирование и на вики просмотрел статью. Ничего не понимаю. Можете в двух словах, простым языком объяснить, что это? Индекс (англ. index) — объект базы данных, создаваемый с целью повышения производительности поиска данных.Что это за объект? В каком формате хранится? Как связан с таблицей?
>>1171884>Что это за объектСУБД содержит разные объекты - таблицы, индексы, хранимые процедуры, триггеры, вьюшки. Т.е. индекс - это объект, отличающийся от таблицы.Самая простая аналогия - предметный указатель терминов в конце учебника. По этому указателю ты можешь быстро найти нужную страницу. Например, мануале по автомобилю написано: Топливный фильтр, стр. 30, 55, 100. Если такого указателя нет, то тебе бы пришлось просмотреть все страницы, а с индексом-указателем ты сразу получаешь конкретные номера.В СУБД одна таблица может иметь много индексов - для разных колонок, содержать внутри функции от содержимого колонок. таким образом есть возможность быстро выгребать записи по самым главным атрибутам. Быстрее всего работают уникальные индексы - для одного значения индекса существует ровно одна запись и СУБД находит такую запись очень быстро. Индексы, для значения которых существуют много записей, работают медленнее (очевидно). При создании индексов нужно учитывать природу данных, примерное количество записей и характер джойнов, чтобы создать ровно столько индексов, сколько нужно, т.к. индексирование полей по которым никогда не будет поиска или джойна - пустая трата места на диске и времени на обновление этого индекса при операциях вставки, удаления, редактирования.>В каком формате хранитсяНа данном этапе (да и на следующих) тебе это без разницы. Напрямую с индексами при написании запросов не работают, максимум, ты можешь указать индекс в хинте, чтобы СУБД его точно подхватила (может и не подхватить, если он по ее мнению не нужен)>Как связан с таблицей?Индекс создается на одну или несколько колонок определенной таблицы.
>>1169622Короче, сделал Hot Standby, слейв льет данные с мастера и доступен на чтение. Но как, и, главное, когда делать слейв мастером и наоборот! Читал про варианты с pgpool, достаточно удобно, но третий сервер для него мне никто не даст. Остается вариант постоянной проверки на слейве доступности мастера и, в случае его недоступности, продвижения слейва до мастера. И наоборот. Пока думаю решить это с помощью наколеночных батников, но вообще не уверен, будет ли это решение приемлимо работать. Очень большое желание вообще забить на все и уволиться, ибо знаний катастрофически не хватает, а процесс настройки затянулся уже более чем на две недели. Есть ли выход из тупика?
>>1172076Есть система мониторинга в фирме? Просто пилишь в нее тесты, и когда сервер 100% падает, тл перекатываешься на другой. Напиши батники для переключения серверов и кинь на каждую машину. На всякий случай научись быстро отключать слейвы и мастеры, если один из них накроется. И настрой бэкапы на слейве, но не юзай их без необходимости.
>>1172096>Есть система мониторинга в фирме?"А что это?" Серьезно, только 2 сервака с Windows Server 2012 r2 на борту. Ну там pgAdmin, но не думаю, что он чем-то поможет.Основная проблема: ок, слейв переключился в мастер. Но когда мастер вновь поднимется, неизвестно же. То есть на момент запуска сдохшего мастера у нас параллельно два мастера. Как его вовремя задемоутить, чтобы не похерить базу? Запускать при загрузке службу только после проверки роли второго сервера? Это за гранью моего понимания.Бекапы есть на мастере. Настроить на слейве точно так же, вроде, не проблема, это пока даже не горит.Вообще это моя первая сколько-нибудь серьезная работа в IT, до этого только писал сайтики на вордпрессе и админил локалхосты в гос. учреждении. К понедельнику надо уже предоставить готовый отказоустойчивый кластер, и у меня все сильнее поджимает. Это вообще нормально тупить по 2 недели на таких задачах?
>>1172118Выпроси сервер на который ты поставишь Zabbix тебе нужно сделать пару вещей, поставить модули забикса на эти серваки, и заставить их общаться. Если понимаешь, что один сервер ебанулся и не отвечает минут 5: то лезешь на машину и включаешь батник, чтобы слейв стал мастером. В это время, если у тебя есть доступ к мастеру, то гасишь деятельность сервера и переводишь его уже в слейв( обычно такое не работает, так как у тебя сеть/отказ системы/подыхание хардов) .Далее план таков: система мастера воскрешается, если разницы в redo мало, и какой-то уебан не переключился на него во время его отключки и не внес изменения - догоняешь его со слейва, если внес - ищешь scn переключения, откатываешься на него и дожираешь redo со слейва.) Если все очень плохо - ты же делаешь бэкапы? )Тебе надо будет восстановить до слейва( поэтому я и написал про включение wal+backup на слейве), а потом поменять их с мастером.
>>1172042спасибо
>>1167018 (OP)База данных postgresql 10. Делаю селект в psql, получаю такую ошибку.>[22021] ERROR: invalid byte sequence for encoding "UTF8": 0xf0 0xe5 0xec 0xeeПри выгрузке дампа и попытке его импортировать та же самая ошибка.Посему несколько вопросов:1) Как non-utf8 текст вообще попал в базу? Postgres при вставке не проверяет кодировку или не конвертирует в server_encoding?2) Как это можно исправить на текущей бд?3) Как это можно воспроизвести? Как вставить non-utf8 байты в базу? Я нихуя не понимаю. Это нужно будет чтобы протестировать исправление.4) Как сделать так, чтобы это больше не повторилось?
>>1172178Спасибо. А без внешнего сервера - никак? (сервер не выделят, потому что их просто нет, будет мифическая "циска", о которой никакой информации пока нет). Слейв сам может мониторить доступность мастера? Я вижу это так: тот же батник с автоматическим пингованием сервера (или проверкой доступности бд на нем, но это сложнее). Если пинг не проходит некоторое время, то все - становимся мастером. На клиенте (или на "циске", если такое возможно) можно тупо обращаться ко второму серверу, если первый не отвечает. Конечно, он может быть пока еще слейвом и не принять запрос, но это лучшее, что я пока придумал. В общем, мозгов у меня решительно не хватает, походу так и передам начальству.
>>1172194Ну, клиенту надо как-то проверять доступность. У тебя нет брокера, поэтому есть системы мониторинга, которым можно прописывать сценарий.Вот клиент ебашит на бд, а потос как он узнает, что бд упала и перешла на слейв? Поэтому ставят либо брокера, либо систему мониторинга.В оракл к примеру на клиенте есть tnsnames в который можно писать куда конектится, если мастер упал.И то у тебя должна быть недоступность мастера, чтобы кто-то не нашкодил. Если есть такой механизм, то все гуд и тебе лишь надо ловить момент когда падает мастер.
>>1172205Как клиент проверяет доступность: пишет запрос, если он не выполняется, пингует сервак (или что-то там еще), если тот не отвечает, пишет запрос на другой сервак (сервака два, айпишники захардкожены). Это я сам только что придумал, но, думаю, реализовать будет несложно.Насчет недоступности мастера не понял. Механизма такого, скорее всего, нет, если это не описанный мой выше бред.Огромное спасибо, что тратишь время на меня. Но, походу, проебу я все-таки эту работу. Не помещается все это у меня в голове.
>>1172230Мастер не должен пинговаться, дибо он должен усиленно всем показывать что он не мастер.Чувак, нахуй ты за это взялся? Ты там на должность администратлра бд устроился?
>>1172184Помоги с етой хуйней, Анон
>>1172273Инженер-программист официально ) Месяц назад пришел, ну и скинули на новичка то, что сами не знают, как делать. В любом случае, поговорил с начальством, если вообще не будет получаться, наймем какого-ндь крутого ДБА для настройки.Вот, кстати, на такую интересную штуку наткнулся:https://habrahabr.ru/post/308950/Там даже исходник есть. Надеюсь, завтра это решит все мои проблемы )
>>1172184Set client_encoding to unicodeПо умолчанию стоит.Просто не копируй селекты из интернета в консоль. Он просит у тебя юник, а ты, блядь, кидаешь ему поганный 1251
>>1172308Если и не так, то никакая база не декодирует в свою кодировку. Смотря какой язык юзаешь, чтобы не мучаться в винде есть ATL конвертеры. У тебя просто какой-то чувау может вводит данные в вин1251В базе есть функции ascii, decode , encode. Последние для битовых данных. initdb -E encodenameАвтоматическая конверсация из пскл \encode win1251Если есть прослойка то настрой libpq в приложении
>>1172042а можешь привести пример? есть таблица - id, имя, фамилия, отчество, год рождения и т.д. и она привязана через id к таблице техника сотрудника, где поля такие:id техники, тип, модель, марка, серийный номер, номер ЦСО. Как индексация здесь может, что либо оптимизировать?
>>1172335Сотрудников у тебя, положим, будет десять тысяч человек.У каждого будет по десятку девайсов - итого в таблице девайсов 100 тыс. записей.Допустим, у тебя есть условный сотрудник Сычев. Ты хочешь найти для него всю технику.Без индекса тебе придется перебрать все 100 тыс. записей в поисках техники именно Сычева.100 тыс. ради 10 записей. А если базу постоянно теребят даже несколько десятков человек, то все будет очень медленно. А если нужно получить список сотрудников с девайсами, то будет еще медленнее. А если таблица не помещается в память, то добавятся издержки дисковых операций.Теперь создаем индекс для техники по ид сотрудника.В общем случае строки в таблицах хранятся неупорядоченно, а индекс отсортирован (обновление происходит при каждом изменении автоматически). На отсортированном наборе данных поиск происходит очень быстро. Например, чтобы найти двоичным поиском на отсортированном наборе из 1000 записей одну, нужно просмотреть не более 10 значений, а на 100000 - не более 17.Т.е. вместо просмотра n записей ты просматриваешь log (n) записей.В СУБД используются более сложные алгоритмы, чем двоичный поиск, но они тоже работают за логарифмическое время.Итак, мы нашли кусок в индексе, который отвечает за технику Сычева. Теперь СУБД перебирает найденные значения индекса и вытаскивает оттуда указатели на физическое расположение строк в таблице девайсов. Т.е. не нужно перебирать 100 тыс. записей, а берем конкретный блок данных и берем конкретные записи в нем. Доступ к данным проходит на низком уровне, очень быстро. Так же индекс помогает при удалении Сычева из таблицы сотрудников - нам ведь надо удалить или пометить null все его девайсы и других операциях с изменениями данных.Воте еще очень простой пример, есть дом на 250 квартир и тебе нужно найти квартиры, в которых есть белая собака. Ты можешь обойти все квартиры, спрашивая, есть ли у вас собака. А с индексом у тебя изначально есть список квартир, в которых есть собака допустим их 20 (это если у нас индекс только по виду животного, кошка-собака-крыса-хомячок-попугайчик, а еще можно добавить в него цвет). Среди 20 квартир ты довольно быстро найдешь белых собак.
>>1172335Мех. Немножко не так. Будет у тебя 100 сотрудников - будет 100 таблиц?В таблицу техники добавляется айди того, кому она принадлежит.Это проще апдейтить.Чтобы запилить индекс тебе нужны уникальные айди, которые часто вызываются, но не равны 70% таблицы.Давай такой пример. У тебя есть таблица с документами и есть битовый признак обработки документа(1). Допустим у тебя 70% обработано и 30% нет.Как ускорить таблицу? Инвертируешь признак обработки, то есть 0 - обработан, а индекс делаешь по оставшимся 30% .То что ты описываешь скорее всего предпологает индекс-таблицу. Т.е. ты сортируешь данные по ключам. В твоем случае лучше делать ключи связанные с айди техники. Это лучший вариант, да и по айди техники тоже.Но то что ты описал похоже на вложенную таблицу. То ест столбцы , а потом связанный по айди список техники, аля ообд.Либо просто сделать первичный ключ по айди сотрудника, во второй бд первичныц по айди техникт, вторичный айди сотрудника
>>1172419извините, что туплю. Белая собака в моем примере - это как определенный вид техники, да? То есть будет разумно создать индекс, например, для принтеров LaserJet p9313, чтобы узнать у кого такие принтеры?
>>1172308>Просто не копируй селекты из интернета в консоль.Ват. >Он просит у тебя юник, а ты, блядь, кидаешь ему поганный 1251Я нихуя не понел почему ты подумал, что я что-то откуда-то копирую. Просто делаю выборку на рабочей базе. Сама база на серваке под CentOS 7. Подключаюсь по ssh.>>1172316Алсо почему вы думаете, что это именно win1251?
>>1172593Типичная ситуация.Всегда найдеься хитрый сотрудник решивший залить clob например
>>1172584Да, это как определенный вид техники. Если говорить о второй части вопроса, то индекс создается для колонки, а не для ее конкретных значений. Т.е. если у нас в колонке есть принтеры, сканеры, ксероксы и ноутбуки, то индекс будет содержать все эти типы. Можно, конечно, сделать функциональный индекс вида case when device_name = 'LaserJet1488' then 1 else 0 end но это довольно редкий прием - на каждый вид девайса индексов не напасешься.Может помочь индекс по виду (принтер, ноутбук, сканер), по фирме-производителю, а можно сделать индекс по модели девайса (точнее, по upper(device_name)) или составной по нескольким полям, поставив более селективные поля вперед. Тут уже нужно смотреть по месту, как и что у тебя хранится и какие запросы наиболее характерны.Допустим, сделали индекс по upper(device_name), тогда в запрос будем передавать введенную строку поиска в верхнем регистре и получаем набор записей для владельцев девайсов. А чтобы быстро расшифровать ид владельцев в их фио, поможет индекс по ид сотрудников - он будет уникальным и поэтому очень быстрый.
>>1171262спасибо, друже, просветил
Анонче, помоги составить запрос.Есть таблицы на пикриле. Допустим в таблице users такие записи:1 | Peter2 | Fedor3 | VasilyВ таблице stuff такие записи:1 | 1 | shirt2 | 1 | hat3 | 1 | shoes4 | 2 | gloves5 | 2 | coat6 | 3 | dressНужно составить запрос который вернул бы такой результат:1 | Peter | shirt, hat, shoes2 | Fedor | gloves, coat3 | Valisy | dressЯ так понимаю тут нужно использовать агрегатную функцию и конкатенация, но как именно не могу сообразить.
>>1172906Разобрался, GROUP_CONCAT() нужна.
https://2ch.hk/pr/res/1167018.html
Добрый вечер.Кидайте задачи, батя будет под пивас решать.Пишу на оракле.
>>1173163- построчное резервирование- хранимая поцiдура с проверкой значений- журнал «кто что и когда делал с данными в таблице»
>>1172906Тут в каждой субд будет разная функция для этого.
>>1173183Я не батя, но:>построчное резервированиеНахуя, в чем задача? Нихуя не понятно. Скорее всего ты имеешь ввиду триггер.>хранимая поцiдура с проверкой значенийТоже непонятно в чем подводный камень и зачем.>журнал «кто что и когда делал с данными в таблице»Через триггер. На практике, если такое нужно сделать, то заказчик наглухо ебанутый. Нужно сделать не журнал, а отдельные поля и все это должно заполнятся фронтом. В остальных случаях это бессмысленно. Если тебе нужен аудит юзеров с правами на DML, то ты лох, пидор и нахуй из профессии.
>>1173376Батя одобряет.
>>1173376>На практике, если такое нужно сделать, то заказчик наглухо ебанутый.Что плохого в том, чтобы знать историю изменений записи? > Нужно сделать не журнал, а отдельные поля и все это должно заполнятся фронтом. В остальных случаях это бессмысленно.Поясни идею с полями, причем тут фронт-енд и тезис о бессмысленности, почему так?>Если тебе нужен аудит юзеров с правами на DMLЧто ты тут подразумеваешь?
>>1173376Эй еба-ораклист, ты бд то свою знаешь?1) локи же есть. Ты просто избалован, так как у оракла это в ядре.2) через триггер всегда делается3) аудит средствами оракла, тебе про такое никогда не говорили?
>>1173485Я не он, можешь объяснить, какое отношение имеет триггер к проверке параметров хранимой процедуры?
>>1173376То, что вы на заводилова, дрочите —ПИШИТЕ БЛЯДЬ, ЗУБАРЮ!!!И запрашивайте, данные.>Скорее всего ты имеешь ввиду триггер.Вот и пиши триггер.>Тоже непонятно в чем подводный камень и зачем.Игорь, если я ещё раз такую хуйню, услышу — я запишу все расходы на комплексе — на вашу группу. Вы у меня штаны последние продадите.>Нужно сделать не журнал, а отдельные поля и все это должно заполнятся фронтом.Чо блядь у вас, дерьмократия?! Забудьте нахуй о дерьмократии. Пока у вас каждый кладовщик знает SQL, тут везде тоталитаризм, будет!>>1173428Нет потенции — сваливай нахуй, с рынка!!!>>1173501ПРОСРАЛИ ВСЕ ПОЛИМЕРЫ!!!ВЫ ПРОСРАЛИ БЛЯДЬ!!!1111ы
Триггеры нахуй не нужны. Хранимки и пакеты наше все.
>>1173430>Что плохого в том, чтобы знать историю изменений записи? >Поясни идею с полями, причем тут фронт-енд и тезис о бессмысленности, почему так?Само по себе ничего, ее и хранить в ней можно, но звучит как: "Есть важный ручной справочник и мне нужно знать какая именно макака его заполняющая накосячит, чтоб лишить ее премии". Заполнение пользователем справочника через dml говорит о незрелости процесса. В самой таблице должны быть заполняемые автоматически, скрытые для пользователя поля(кто добавил запись, время добавления итд.), за этим и нужен фронт, АРЕХ, например.>>1173485>аудит средствами оракла, тебе про такое никогда не говорили? Говорили, но >Если тебе нужен аудит юзеров с правами на DML, то ты лох, пидор и нахуй из профессии. К тому же эта штука медленная и базу нагружает.>локи же есть. Ты просто избалован, так как у оракла это в ядре.Я вообще задачи не понял. Зачем нужно построчное резервирование(репликация что ли?) и причем тут локи?
>>1173533Apex это фронт? Что же тогда бэк?Штатное редактирование справочников dml? Это где такое есть? Все только через бизнес логику, и неважно где она- в хранимках или на сервере приложений. Да и коннект пользователей в бд под уникальными логинами имхо анахронизм.
>>1173533>В самой таблице должны быть заполняемые автоматически, скрытые для пользователя поляНе в той же таблице. А в отдельной схеме (schema), с другими правами доступа, создаётся точная копия каждой таблицы.
>>1173538>Да и коннект пользователей в бд под уникальными логинами имхо анахронизм. Андрей Орлов, «Записки автоматизатора». Читать до окончательного просветления.
>>1173540Один из рабочих вариантов.Серьезный минус - структуру таблиц поддерживать в двух местах.
>>1173543Книга хорошая, читал, хотя и не самую последнюю версию.Если что я говорю про то, что коннект в бд происходит под одним логином, но имя пользователя (например, доменная УЗ) при этом передается и обрабатывается.
>>1173533>>построчное резревированиеТом Кайт, штудируй.>>аудит DMLФейербах, Прибыл. Есть безопасность на уровне строк.Плюс кто тебе не позволяет анализировать undo/redo? Аудит можно хранить не на этой же бд, обычно так и делают.Если есть проблема что какое-то говно срет в систему организуешь сбор доказательств включая выборочно аудит скриптов. Если конечно этот ебушка не срет анонимными блоками.То что ты не можешь оптимизировать аудит, это пиздец твои проблемы.Ты можешь сохранять все инсерты/апдейты из системных схем, и переносить их на спец.серверы или во внешний файл, а потом анализировать.
>>1173671>построчное резревирование>Том Кайт, штудируй.Ты объясни что это или напиши как называется на английском.>Фейербах, Прибыл. Есть безопасность на уровне строк.Хуербах, блять! Если ты не можешь выстроить ролевую модель и процессы так, чтоб тебе не понадобился аудит, то иди нахуй. Придумай хотя бы один кейс где это действительно нужно.>>1173540Зачем?>>1173538Есть такая штука как контекст.>Да и коннект пользователей в бд под уникальными логинами имхо анахронизм. Хуясе, поясни.
Почему когда я запускаю MySQL из командной строки: "..MySQL Server\bin\mysql пароль" он вываливается с ошибкой, а MySQL Command line Client работает нормально с тем же паролем?>>1172906Что это за прикольная картинка? Мне сказали учить MySQL и там кроме командной строки нихуя нет.
>>1173671аноны, есть книга где примеры наsql server 2000, у меня спермерка. что можно ставить, чтобы осваивать sql?
>>1174461>Да и коннект пользователей в бд под уникальными логинами имхо анахронизм. >Хуясе, поясни.Провокационное высказывание получилось, выше писал:>>1173642Речь идет о конечных пользователях, например Светлана Ивановна из бухгалтерии или Аня из кадров. Удобно, если для всех задач они используют единую УЗ. Особенно это удобно если приходится работать с несколькими разнородными БД.
27 лет, аналитик стагнирующий на уровне экселя. Не поздно ли? Расскажи мне анончик свою историю успеха
>>1174716Не поздно. 27 лет - пустяки.
>1174725Спасибо тебе, на добром слове анончик
Сап, мейлач.какой должен быть минимальный набор для освоения SQL?имею спермерку или Linux.Ставить Microsoft, Postgre, MySQL?
>>1174461Блед. Я тебе говорю, у тебя построчное резервирование уже в бд есть. Допустим у тебя постят две пидорашки в одну таблицу, и у тебя ебучий айди генерится сам без задвоений. Кайт приводит, что этот пиздец не в каждой бд был и есть, и он охуел, когда узнал что в оракле это есть, а он сам это пилил.По вторлму пункту. Это нужно, когда у тебя система может быть скомпрометирована, или какой-то мудень решил пошатать целостность. Буквально если ты работаешь в банках, то там в 90% случаях есть бд, которая копит аудит по абс, чтобы ты оптимизировал затраты и смотрел, чтобы пидорашко-программист правильно инсертил или апдейтил справочники.То на что я тебя сослал это RLS. Допустим у тебя есть база клиентов общая, и каждое структурное отделение должно видеть только своих клиентов. Что сделать неуч? Создаст пол каждое подразделение вьюху, а ораклист ебанет RLS. Это простейшие политики безопасности. Позволяет так же следит за аудитом избранных юзеров, а не всех. Просто добавив им еще одну политику. Чтобы не быть голословным пакет dbms_rls.
>>1174814бамп
>>1174814Ищи платные гайды в свободном доступе.
>>1171047Как ты обобщил джойны и дистинкт? джойны объединяют таблицы. Дистинкт в результатах выборки отсекает повторяющиеся значения в пределах стоблца, в котором он указан.
>>1175026мне плоха
>>1174817>Допустим у тебя постят две пидорашки в одну таблицу, и у тебя ебучий айди генерится сам без задвоений. ПОСТРОЧНОЕ РЕЗЕРВИРОВАНИЕ, БЛЯТЬ! Это называется изоляция транзакций. И как минимум REPEATABLE READ есть в любой современной СУБД. Хотя иногда даже READ UNCOMMITTED включают ради производительности.Б
>>1174817>Буквально если ты работаешь в банках, то там в 90% случаях есть бд, которая копит аудит по абс, чтобы ты оптимизировал затраты и смотрел, чтобы пидорашко-программист правильно инсертил или апдейтил справочники.Такое у всяких диасовтовских абс на сайбейсе, у оракла ни разу не видел отдельной базы под аудит(и можно ли такое вообще сделать?). В абс макаки инсертят через фронт. У разработчика вообще максимум права на селект должны быть проде и препроде. Такой способ защиты может помочь только от дба.>Что сделать неуч? Создаст пол каждое подразделение вьюху, а ораклист ебанет RLS.Лучше вообще никого в базу не пускать и ебануть отчет в BI, чтоб тетя срака не джойнила таблицу саму с собой десять раз и не вешала базу.
>>1174814>225x225Пиздец ты мудак конечно.
Привет ананас. Есть 2(tab1, tab2) таблицы со столбцами (a, b) и (b, c) соответственно. Как шлепнуть запрос, чтобы вывести (a, c). sqlite
Сап аноныпрошу прощения за оффтопа для рашки зп в полтора косаря уе - это норма или хуйня для итшника или для обычного рабочего?
>>1175839>норма или хуйня>для итшника или для обычного рабочегоTrue
>>1174665Это http://dbdesigner.net/Конкретно к MySQL он никакого отношения не имеет.
Котаны, кто в курсе, почему sql-ex.ru лежит?
Питонисты здесь есть?Можете прояснить >>1176524 ?
>>1174716Пошел работать в 21 учась на пятом курсе.В 24 имею достойную ЗП, нашел годное место, счастлив, продолжаю расти как специалист
>>1175839У меня 2к$ ровно на руках, на жизнь хватает, но вообще планирую зарабатывать побольше в будущем.>>1176749
>>1176567Причем тут питон?Что тебя смущает? Если у тебя разовая загрузка, и все работает за устраивающее тебя время, то все норм.То что не каждую запись коммитишь - правильно.И что у тебя за БД?Например, в Орагле есть специальная утилита для загрузки данных, которая на низком уровне хуячит гораздо быстрее, чем DML. В твоей БД есть такое? Если да, до парси XML до csv например и его скармливай загрузчику.
>>1174667Под виндовс 7 ставятся все sql серверы вплоть до 2014го.
>>1174668В какой СУБ это реализовано? В MS SQL можно разве что разрешить группе пользователей ОС входить в SQL, и каждый из них может подключаться под логином винды как trust connection.
>>1176804>Причем тут питон? Что тебя смущает?Наверное проблема в том что я не до конца понимаю session'ы и вообще "архетектуру" SQLAlchemy.>То что не каждую запись коммитишь - правильно.Окай.>И что у тебя за БД?PostgreSQL, только пару дней назад не без труда впервые накатил на винду.>В твоей БД есть такое?
Я создал генератор. Ебнул 1500 записей, я хочу вставить это в таблицу. У меня же все одинаково, так почему эта ебанутая SQL ругается? Что за криворукие ублюдки ее делали?
Бля, случайно прожал энтер.>>1176804>Причем тут питон? Что тебя смущает?Наверное проблема в том что я не до конца понимаю session'ы и вообще "архитектуру" SQLAlchemy.>То что не каждую запись коммитишь - правильно.Окай.>И что у тебя за БД?PostgreSQL, только пару дней назад не без труда впервые накатил на винду.>В твоей БД есть такое?Я не хочу пока лезть во всякие тулзы, мне бы базово разобраться с реляционными СУБД и SQLAlchemy. Хотя похоже SQLAlchemy не очень подходит для такого переноса базы, но я продолжу пердолиться.
>>1167018 (OP)Аноны, такая задача:мне нужно собирать показания с прибора, ~200 цифровых значений каждые несколько минут.Я уже начал гуглить и сравнивать БД для хранения временных рядов, но наткнулся на один пост в инете и задумался:"А так ли нужна мне БД для этой задачи? Могу ли я обойтись файловой системой?". Вот смотрите:1) Изменять данные не требуется, только записывать и (надеюсь когда-нибудь) читать.2) Как именно, какими кусками и в какой последовательности данные будут читать я хз, на данный момент сказать сложно.3) Я могу раскидать файлы по папкам, разделив, например, по месяцам и дням, т.е поиск не станет большой проблемой.Внимание вопрос: какие подводные?С многопоточностью проблем вроде быть не должно.Если идея с ФС звучит норм, то какой формат данных подойдёт для моей задачи? csv + gzip (bzip2?), hdf5?Ещё, возможно не по теме, но хочется хранить данные минимум в 2 местах, какую распределённую ФС можно выбрать под эту задачу? Какие вообще используются? Гуглёж показал что существует несколько вариков, да и я сталкивался поверхностно с HDFS, но не хотелось бы лезть в хадуп инфрастракчер.
Кстати, что значит/как расшифровывает "ctl" в названии бинарника pg_ctl, который запускает сервер постгреса?А то я никак не могу запомнить эти три буквы, блять.
>>1176954Идея с ФС хуевая.
>>1176954А, ФС. Btrfs с софтверным рейдом.
Продублирую вопрос в реляционном треде.Как версионировать структуры?Объекты понятно. Хез_мэни вержнс и создаем копию.А что делать со структурами, когда, например, есть конкурс, который состоит из этапов, которые состоят из испытаний. У всего есть свои свойства, последовательность и т.п. Короче структура. И вот она со временем эволюционирует, меняется состав, порядок и сами сущности. При этом есть прошлое, в котором проходили соревнования по старым версиям и есть уже запланированное настоящее, которое хочется при выпуске новой версии тоже проапдейтить.Вот как это блять изящно версионировать? Я понимаю, что ответ достаточно очевидный - копировать и поддерживать целостность. Но может существуют какие-то практики и я просто не знаю.
>>1176987Спасибо, Анон, буду копать глубже эту тему. А есть опыт работы с этой связкой, или это теоретическая рекомендация? Никогда просто о таком не слыхивал ранее! (тем ценнее рекомендация)>>1176986Можешь развернуть свою мысль? У меня была похожая как только сея идея посетила мою голову, но потом она перестала казаться мне такой уж тупой, ведь из всех ништяков настоящих БД мне нужна по сути только репликация.
>>1176941>Что за криворукие ублюдки ее делали?Вот этот ублюдок накосячил :>>1176941На самом деле тебе нужно задать явный формат даты для загрузки в твоем скрипте, а не думать, что СУБД сама догадается. Это из разряда good practice. СУБД может разные настройки, а скрипт должен работать всегда.Поэтому распиши преобразование из строки в дату с явным форматом.
>>1177019Я генерирую данные в другой ИДЕ и просто вставляю. Ну ок, но скорее всего погуглю как правильно формат делать, и просто попытаюсь в кавычки вставить
>>1175329Ты совсем дурак, бля? Ты не мог даже чуть-чуть теорию почитать? Будешь с каждым вопросом сюда приходить? Иди на хуй пидорас
Объясните ньюфагу, отличается ли чем-то запуск Постреса под виндой как net start postgresql-x64-10 от pg_ctl start?pg_ctl службу запускает или нет?
>>1177389Так зайди в список служб и проследи, хули ты как этот
>>1176954Все зависит от того для чего ты хранишь данные и какие задачи будешь решать. По твоему описанию может подойти все что угодно.
>>1177532>все что угодноа чо там выбирать? NoSQL вместо выбора ФС и key+value вместо выбора формата данных, ведь для снятия статистики творческого мигания светодиода на ардуинке постгрес в его случае нинужен
>>117755Ты Ванга? откуда ты знаешь что нужно в его случае?>~200 цифровых значений каждые несколько минутАрдуина будет генерировать ~овер 6*10^8 значений в год. Если нужен какой-нибудь Ad hoc-анализ "что за хуйня произошла позвачера", то лучше всего запилить выгрузку csv-лога с ротацией.Если нужен анализ с машинлернигом и всей хуйней за 100 лет, то Hadoop. Если за год, то Python + csv-лог в фс.Если нужен отчет в котором будет динамика скорости мигания светодиода в разбивке по датам, то RDBMS-name.Если на основе основе данных ардуины нужна какая-нибудь операционная хуйня с огромным количеством чтений, то key-value(самый невероятный вариант).
>>1177551>>1177593
>>1177593>Python + csv-лог в фсPerl+BerkeleyDB с теми же самыми key/value
>>1177011> А есть опыт работы с этой связкой, или это теоретическая рекомендация?Есть опыт в разных ситуациях и конфигурациях.> перестала казаться мне такой уж тупойСама по себе перестала, видимо, потому что ты её не обдумывал.Смотри:> Как именно, какими кусками и в какой последовательности данные будут читать я хз, на данный момент сказать сложноТо есть тебе еще сложно сказать, как у тебя все на базовом уровне будет организовано, но ты уже с каких-то хуёв решил, что с ФС тебе будет лучше работать. Далее ты несешь про какое-то разбивание по папкам, и эту хуйню просто лень комментировать.Мой тебе совет: бери хоть реляционку, хоть нереляционку, и делай свою хуйню, стараясь не выебываться.
>>1178124Haskell+Teradata+твоя мамаша
>>1178256в JSON пердоль, чо как не пердоля?
Вопрос по постгресу. Уменя есть колонка в таблице с варчар данными, которые есть обычный json. Типа:{"Lat":"123","Lon":"231"}Суть в том, что мне нужно сделать из неё jsonb, но так, чтобы значения были нумерик, а не текст. Обычный alter, который set type jsonb using col::jsonb переводит в обычный текст (значения в кавычках), а мне нужно от этих кавычек избавиться. Как быть?
>>1167018 (OP)>сиквелСиквел (англ. «sequel» [siːkwəl], от лат. «sequella» — «продолжение», «приложение») — книга, фильм или любое другое творческое повествование, по сюжету являющееся продолжением какого-либо произведения.Ты ваще о чём?
Поясните зачем вообще нужна эта ваша релятивность/реляционность? Вот пришел я такой на первую работу, там был мускуль. Ну я смотрю там все таблицы разбросаны ПРОСТА ТАК, БЕЗ СВЯЗЕЙ, ну я и давай их связывать как дебил. Ну связал и что дальше? Не нельзя удалить юзера какого-нибудь, если не удалил его высеры на форуме например - ок, ну или наоборот можно все высеры разом удалить - удалив юзера? Кайф, ну да как бы, но на деле больше гемора с этим, потому что связи в базе не всегда древовидные, иногда блядь все вообще в цикл закручено и надо через боль и ад что-то менять. В общем как это нанесло мне в юности травму, так я и забил хуй на это всё. Работается нормально в вебе без этого всего в небольших проектах, а связи они главное в голове и в коде. Так собственно мб я что-то упускаю или не понимаю?
>>1179449
>>1179468Ну главное то, что ты дартаньян, да.
>>1179449> ПРОСТА ТАК, БЕЗ СВЯЗЕЙГлавный вопрос тут такой: зачем вообще брали РСУБД? Господи, сколько я подобных быдлобаз переделал — не сосчитать.> нельзя удалить юзера какого-нибудь, если не удалил его высеры на форуме напримерON DELETE CASCADE. СУБД следит за целостностью данных, а разработчик при создании таблицы не указал политики удаления данных.> связи они главное в голове и в кодеКогда перестанешь делать гостевухи, поймешь, что был неправ. Ну или же если будешь работать не один.> мб я что-то упускаю или не понимаю?Упускаешь и не понимаешь. Смысла вот только пояснять нет, ибо ты уже выразил скепсис, не разобравшись в теме абсолютно. Либо ты понимаешь, что делаешь, либо нет.И никто тут особо не против нереляционщины, бородатых адептов Кодда в треде нет. Просто такие ребята и в Монге такую хуету городят, что глаза на лоб лезут.
Господа, посоветуйте что можно почитать по делфи что бы быстро привязать к нему базу данных из 12 таблиц, но так что бы было только одно окно интерфейса. Кнопочную форму я сделать как додумался, а вот сделать все на одной форме в одном окне что бы менять можно таблицу было и запросы туда поставить не могу.
>>1179662Попробуй найти примеры открытия одной бд, потом остальные так же открываешь и аппендишь, что-ли.
>>1179449>в вебе>в небольших проектахТебе не нужно искать ответы на свои вопросы, потому что ты веб-макака — пародия на разработчика. Оставь реляционную алгебру специалистам совершенно другого уровня квалификации и продолжай пилить говносайты за мелкий прайс.
>>1179674Вот тут то и проблема, не могу найти годный пример для этого. Да и я не особо это все понимаю, мне бы вот литературы какой или туторчиков на ютубе что бы с нуля все делать.
>>1179861А почему именно делфи? Чем богоизбранный быдлер на плюсах не угодил?
>>1168224Если студент может быть в нескольких группах.Иначе лучше вязать группу прям в студента.
>>1179876Восстановление, переводы.
>>1179861Гугли ADO компоненты в Delphi (не ADO.NET, это другое). Сейчас уже не помню подробности, но все необходимое имеется. Можно, например, сделать комбо-бокс с выбором таблицы и отображением результатов в гриде. Можно вывести в грид результаты запроса или хранимой процедуры. И не нужно ничего дополнительно устанавливать (как в BDE), все уже встроено в винду.
Ньюфаг просит помощи. Есть одна таблица sql server и с ней что-то не то. После того, как я создал для неё проект Entity Framework и инсертнул туда строку(нет, хуйни не творил, просто скопировал код из учебника), проебалась индексация по первичным ключам. Теперь это выглядит вот так и не хочет фикситься удалением строк. Что я сделал не так и как это говно пофиксить?
>>1179449Во всяких dwh вообще нет связей. Такие базы очень больше, со связями кучу задач просто не решить. Связи - это инструмент, использовать его или нет решать тебе.
>>1167018 (OP)Ньюфаг с платиной и ms-sql на связи.Как вы работаете с дохуя количеством данных в интерфейсе? Вот например есть абстрактное овердохуя количество записей (с байтмасивами) и если я попытаюсь сделать просто>select * from zhopaляжет прога.Так вот, следовательно, максимум пока что я придумал - поставить юзверю 2 поля - с какого поля и до какого поля вывести записи с таблицы, а там он уже сам разбереться.Как вообще это на практике выглядит и как делают местные олдфаги?Есть какой-то сайт с платиновых процедур?Нужна процедура которая выдает таблицу с н-ного начала и до н-ного конца.Есть ли в таблице конкретно № записи, не поле-айдишник, а именно № записи (чтобы циклом в процедуре выше пройти)?Или я слишком заморочился?
>>1182203Ты вообще хуево структурировал базу, переделывай. Столбцы в таблицу добавлять — не такое же рутинное мероприятие, как добавление строк.
>>1182282Нихуя не понял, причем тут структура базы, я ее вообще не упоминал и не за это спрашивал.
>>1182303у тебя говно намешано на уровне бд, раз в бд столько столбцов, которые не нужны конечному пользователю.Обычно конечный не должен видеть лишнего, либо делай вьюшку, либо еби конём свою структуру.
А теперь вопросы к ораклистам:Как вам доки к 18?Есть у кого книга про advanced tuning от Бурлесона?И вообще есть ли аналоги данной книги?
>>1182282> я ее вообще не упоминалЭто не значит, что я не имел возможности понять, какой пиздец у тебя там творится.> не за это спрашивалТебе нужно решить проблему, я тебе говорю, куда нужно смотреть. Костылями и изолентой можно сделать то, что ты хочешь, но это один из самых тупорылых вариантов. Переделывай, тебе нужно твои дохуя столбцов вынести в отдельную таблицу. Совета конкретнее дать при таких данных нельзя.
>>1182346>>1182341Сём, блять, нормально же блять вроде вопросы сформулировал.Какие нахуй блять столбцы ты себе нафантазировал, какая блять впизду вьюшка?Я не за выборку спрашиваю, я спрашиваю за отображение записей в конечном графическом интерфейсе для околоадмина/заказчика и как лучше/правильнее с этим совладать, кроме как выгрузить сразу всю базу, а то на что ты отвечаешь это уже совсем другой вопрос.Или это такой местный тролинг тут?
>>1182352Ты не разбираешься в самых азах. Всю базу выгрузить для интерфейса — вообще лхуительные истории.
САП ДВАЧ, Я НЬЮФАГ, КАК НАПИСАТЬ ХЕЛОУ ВОРЛД@-СХОДИ В КАЧАЛКУ И ПСИХОЛОГУ, ПОБРЕЙСЯ, ПОЧИСТИ ЗУБЫ И КЛЕЙ ТЯНОЧЕК НА УЛИЦЕ@НО Я ВЕДЬ Я ЭТО НЕ УПОМИНАЛ@-ЭТО НЕ ЗНАЧИТ ЧТО Я НЕ ИМЕЛ ВОЗМОЖНОСТИ ПОНЯТЬ ЧТО У ТЕБЯ ПРОБЛЕМЫ С ТЯНКАМИ@НЕ ЗА ЭТО Я СПРАШИВАЛ@-ТЕБЕ НУЖНО РЕШИТЬ ПРОБЛЕМУ, Я ТЕБЕ ГОВОРЮ КУДА СМОТРЕТЬТащемта я вообще не ожидал что мне тут даже отпишут, лучше чем ничего.
>>1182356Ты хуйню несешь и никакой конкретики не даешь.САП ДВАЧ, Я НЬЮФАГ, НО У МЕНЯ ЕСТЬ ЕБАНУТЫЙ ВОПРОС И ЕБАНУТОЕ ПОНИМАНИЕ СУТИ ПРОБЛЕМЫ@НЕ ДЕЛАЙ ХУЙНЮ, СДЕЛАЙ НОРМАЛЬНО И ПРОБЛЕМЫ НИКАКОЙ НЕ БУДЕТ@ТЫ ХУЙНЮ НЕСЕШЬ, ЖДУ ДРУГИХ СОВЕТОВ@НЕ ДЕЛАЙ ХУЙНЮ, ПОДУМАЙ@ТУПЫЕ АНОНЫ ОПЯТЬ ПЫТАЮТСЯ МЕНЯ ЗАТРОЛЛЕТЬСкинешь схему БД — поясним конкретно.> Вот например есть абстрактное овердохуя количество записей (с байтмасивами) и если я попытаюсь сделать просто> select * from zhopaПочитай описание селекта в документации. Там есть ключевые слова LIMIT и OFFSET. Никто никакую базу никуда не загружает, если не совсем долбоеб. Гугл на твой вопрос за секунду ответит.
>>1182355Как и сколько записей по дефолту выгружаешь ты?
>>1182359Одну. Ты не понимаешь, что делаешь. Пиздуй читать статьи для ньюфагов. Тебе абсолютно бесполезно отвечать на данном этапе.
>>1182358>LIMIT и OFFSETВот это уже ближе, спасибо
>>1182358Так ладно, попытаюсь по другому пояснить:Мне надо (все столбцы блжад) конкретную таблицу (из которых может выбрать пользователь) вывести для просмотра. Сейчас у меня затычкой в программе стоит> select * from zhopaно, так как записей в будущем может быть теоретически дохуя, я резоно подметил что мое конечное говноприложение может лагать при загрузке/просмотре.И поэтому все что я пока изобрел либо загружать в мою прогу допустим по 1к записей из таблицы либо дать возможность пользователю выбрать по какому-то фильтру (например загрузить с 40 по 1200 запись).И поэтому спрашиваю как выводят таблицу для просмотра местные гуру-аноны.
>>1182362Либо пагинация используется, либо запрашивается для листинга минимум данных, а при необходимости запрашивается уже и остальное. Никто всё в памяти не держит, это типичная ошибка мудаков, которым лень статьи для самого начального уровня почитать.https://doc.qt.io/archives/qq/qq07-big-tables.html
>>1182366Вот так вот и сразу, спасибо>Никто всё в памяти не держитОтобразить же мне как-то нужно изначально
>>1182367> Отобразить же мне как-то нужно изначальноЭто не требует того, чтобы все в памяти держать. Насколько я понимаю, у тебя там сишарпопараша, наверняка ASP.NET, поэтому кури пагинацию, как у всех остальных. Если все же под десктоп пилишь что-то, то просто таблица нужна, держущая в памяти только определенное «окно» (видимая часть плюс еще по N строк выше-ниже; только не ручками говнокодь, а приложи усилия и изучи гугл на эту тему, чтобы нормальную обертку написать).
>>1182362если ты хочешь заебаться, то можешь сделать подгрузку, как в крутых TOAD/Workbench.грузишь первые 500, когда пользователь пролистал до 500, то подгружаешь ещё 500.Но если твой заказчик такой мудак, что хочет за раз 10к записей без фильтров, то тебе пиздец.
Читаю статью Ицика, где он правит джойны и объясняет, как всё работает. Может кто объяснить тупому, что вообще происходит после Figure1? Вижу, что он сначала сравнивает иннер жойны, потом сравнивает результат с аутер жойнами и у него что-то там появляются две лишних строки, почему-то ему это не нравится и он чего-то правит. Что вообще происходит? Хуйцов соснул, из пистолета убился, не помогло.http://www.itprotoday.com/microsoft-sql-server/logical-query-processing-clause-and-joins
>>1182552А, понял, у него там иннер жойн и аутер жойн выдавали один и то же результат, даже когда были non-matches, потому что он не там ON поставил.
>>1182203Пользователю дохуя записей в интерфейсе не нужно. Для того, чтобы получить вменяемое количество записей нужны фильтры.Если же все-таки ты думаешь, что тебе нужно таскать из базули тысячи записей для отображения в интерфейсе (на самом деле нет), то посмотри что такое пейджинация.>овердохуя количество записей>с какого поля и до какого поля вывести записи с таблицыТы не путаешь поля со строками? Полагаю, что путаешь, потому что динамически выбирать поля для большого списка - крайне сомнительная и странная затея.Как я понял тебе нужно вытаскивать данные большого объема. Поскольку ты сразу выбираешь сотни записей, то и байтмассивы твои не нужно вытаскивать, пока на то не будет явной необходимости. Т.е процедура для списка должна показать тебе только те поля, которые дают общее представление о записи, а уж потом, когда пользователь выберет конкретную запись - подгрузить объемные данные.Если у тебя можно бегать по записям стрелками вверх и вниз, то есть смысл сделать загрузку дополнительных данных после того, как пользователь постоял на записи 0.2 - 0.5 секунд. Ну или явно по нажатию кнопки подгружать.Тут не сайт платиновых процедур нужен, а элементарный здравый смысл. Если ты тащишь тысячи записей, то пользователю все сразу, в один момент их никак не обработать.
https://ru.wikipedia.org/wiki/Join_(SQL)#LEFT_OUTER_JOIN>Оператор левого внешнего соединения LEFT OUTER JOIN соединяет две таблицы. Порядок таблиц для оператора важен, поскольку оператор не является симметричным.>Порядок таблиц для оператора важен, поскольку оператор не является симметричным.Серьёзно, блять?
>>1183150Абсолютно серьёзно. Левый внешний выдаст строки из левой таблицы, которым нет соответствия в правой.
Решил, что пора научиться делать эти ваши БД сам учу Пистон уже 3 месяц, скачал MySQL, получил этот красивый черно-белый терминал. Как получить красивое GUI как на оп-пиках? >>1168478 Верно говорит, и надо эту штуку качать? Или есть ещё что-то более классное.Так же вдруг оказалось, что я как еблан поставил MySQL 5.Х вместо последней восьмой версии. Скачал ее, а она предлагает обновить shell и connector, но не сервер. Это нормально? Сервер с 5 до 8 версий не менялся вообще что ли?
>>1183239https://github.com/dbcli/mycli
>>1183232Так, оказалось что я >>1183150 просто ёбнулся. Вот это>Порядок таблиц для оператора важен, поскольку оператор не является симметричным.Я упорно читал как>Порядок таблиц для оператора не важен, поскольку оператор является симметричным.
>>1183239консолька оказалась лучше всех guiОкей, начал вкатываться. Почему я могу использовать alias balance в order clause, но не могу в where clause? Так и должно быть или я чего-то не понимаю?
>>1183837Так и должно быть.order by в последнюю очередь выполняется, ему уже доступны алиасы.Чтобы в where можно было использовать нужен селект из селекта:select balancefrom (select avail_balance as balancefrom account whre status = 'ACTIVE' and avail_balance > 2500)where balance > 300000
Посоветуйте книги/курсы SQL. Когда учился в университете были у нас пары по этой хуйне. У меня что-то даже получалось. Щас хочу пойти работать в процессинговый центр в банк. Там одно из требований знание SQL.
>>1184149Алан Бьюли, Том Кайт... и практика, практика, практика.И готовься к тому, что на собеседованиях там спрашивают хитрый джойн таблицы с ней же самой, да ещё и с группировкой :-(
>>1184150Хорошо. Спасибо
>>1184058Спасибо
>>1184149Книги хорошо читать как дополнение к практике.Задачки по SQL можно решать на sql-ex.ruесли совсем с нуля, то раздел Arcade->SQL на codefighting.
>>1184238Что не так?
Привет, допустим мне в одно поле нужно положить json, который потом вырастет до 1Мб и больше. Я могу это сделать в рамках sql (хотелось бы mariadb) или нужно переходить на noSQL?
>>1184828Тебе нужно запросы к этим JSON'ам обрабатывать или там они будут просто валяться?
>>1184873Да, будут запросы
>>1184920Для этого лучше постгрес взять, там полная поддержка JSON со всеми индексами без костылей. Ну или же документоориентированное что-то, конечно.
>>1184817У меня когда-то такое решение прошло.
сап, программач! помогите нубу - не могу сообразить, мне нужно вычесть последнее значение выборки из первого значения той же выборки? Как это правильно сделать? Мне в голову приходит лишь мысль сделать два запроса с limit 1, а потом уже считать, но наверняка есть более изящное решение(субд mysql)
>>1185468Найдется решение в один запрос, конечно, но по эффективности у двух селектов оно будет сосать.
>>1185469да там селекты с джоином ещё, ну ладно, буду пытаться, спасибо
>>1185473Так оно и делается. Если есть возможность на стороне приложения кэшировать в какой-нибудь redis крайние значения, то это будет самый лучший вариант. Если нет, то делай вьюху. Еще лучше — материализованную, но для неё нужно будет с триггерами и процедурками поебаться, так как искаропки нет их, кажется. Будешь просто при необходимости обновлять значения в ней. Впрочем, с индексами первое и последнее значение все равно не дорого получать.
>>1184949Охуеть, все дело оказалось в distinct. Интересно, что у них за проверочная база такая, у которой есть зачем-то одинаковые записи в Laptop таблице. Спасибо за ответ.
Базаны, есть вопрос:Как правильно хранить вектора большой длины (несколько сотен минимум) в БД при условии, что по этим векторам нужно будет осуществлять поиск?
Делаю лабораторную по базам данныхoraclc# мне нужно подключить базу данных к вижуал студиокогда я пытаюсь это сделать, вылезает ошибка что делать? как исправить?вообще говоря, нужно ли над базой данных производить еще какие-нибудь действия, кроме ее наполнения и написания всяких запросов и триггеров? импортировать каким нибудь образом? я полный профан очень нужен ваш совет
>>1185770Уточни, что ты под векторами подразумеваешь.>>1185772У тебя 64-битное приложение пытается 32-битные либы загрузить. Это невозможно. Либо оракловский SDK нормальной битности ставь, либо сишарпохуйню свою собирай под 32 бита.
>>1185774не собирается ток под 64 и 86 под 86 тоже самое
>>1185774Вектор как упорядоченная последовательность элементов.
>>1185780MySQL MariaDB, PostgreSQL, MsSQL?
>>1185783SQLite наверное?, потому как будет несколько независимых друг от друга наборов таких векторов и к ним должен быть доступ из мобильного приложения без интернета.предполагается, что пользователь скачивает сразу весь набор и пользуется ими
>>1185786http://www.sqlitetutorial.net/sqlite-order-by/
>>1185792>http://www.sqlitetutorial.net/sqlite-order-by/При чём тут order by?
>>1185798Блядь, так и знал, что ты приебешься. Его рассматривают на примере упорядоченного списка.
>>1185800Мне кажется мы друг друга не поняли.Сущность, хранимая в базе, имеет следующий вид:x,y,z, feature_vector(500)В ходе работы с базой мне нужно будет выполнять запросы типаselect * from entities where x = x_value+- error, y = y_value+=error...Так для всех трёх координат и для каждого элемента вектора.У меня стоит несколько вопросов:1. Хули делать с вектором? Делать 500+3 столбцов кажется странной затеей, как обычно такую проблему решают?2. Подойдёт ли для этого SQLite в плане производительности? Есть ли альтернативы?
>>1185810Понял. Тебе тогда лучше две таблицы сделать, наверное, и unique повесить на (x, y, z). У тебя тут классический one to many будет. Если в feature_vector не предусмотрена перестановка мест элементов, то можешь при селекте сортировать по PK, в противном случае придется еще одну колонку для порядка городить. В принципе, если тебе так удобно, ты можешь свой список сериализовать и обрабатывать его в приложении, чтобы с реляционками не ебаться, если тебе не интересно это. Будет всего одна таблица, не нужно будет с джойнами разбираться и все такое.> Подойдёт ли для этого SQLite в плане производительности?Еще не знает история случая, когда бы на Андроиде производительность в SQLite упиралась. Ты же не бэкенд для хайлоада делаешь, ну.
>>1185824А что даст уникальность x, y, z?А с сериализацией неплохая идея, я правда хуй знаю, хорошая ли идея постоянно строки разбивать и конвертировать. Надо будет потестить, может лучше окажется в bytearray в блоб засунуть.Спасибо за помощь.
>>1185842> А что даст уникальность x, y, z?Отсутствие подводных камней с дублированием объектов плюс индексы.> хорошая ли идея постоянно строки разбивать и конвертироватьВидно, что ты с реляционками почти не знаком и сделаешь хуйню. Так ты сделаешь меньше хуйни. Потом всегда будет возможность разобраться в технологии поглубже, но пока что ты будешь хуйней маяться вместо решения задачи. Добра.
>То чувство, когда, работая веб-макакой в довольно мелком проекте, половину рабочего времени тратишь на индексы и дрочь на снижение total cost запроса с 1000 до 950
>>1168766Годная схема. Что за софт?
Что-то не могу нагуглить. "FROM col_name c" - это просто сокращённая версия "FROM col_name AS c"?
>>1186627Да.
Спрошу здесь: Как лучше всего в базе данных реализовать учёт рабочего времени?
Что из себя представляет работа ETL developer-ом????
>>1187261Пилишь потоки, маппинги всякие в ETL-инструменте, консультируешь аналитиков, оптимизируешь скрипты. Плюс еще куча всяких связанных задач. Что конкретно тебя интересует?
>>1186959На такой неконкретный вопрос ты не получишь нормального ответа.
>>1187399Как конкретизировать мой вопрос?
>>1187443Чье рабочее время ты собираешься учитывать? В каком контексте? Какие задачи должны быть решены?
>>1187446>Чье рабочее время ты собираешься учитывать?Просто регистрировать время ухода и прихода работников.>Какие задачи должны быть решены?Учёт рабочего времени: сколько часов в день, неделю месяц, год по отдельным сотрудникам и целым отделам, а так же опозданий и ранних уходов.
>>1187448Ну ок.Какие твои собственные соображения по теме? Что непонятно/вызывает сложности?
>>1186959Первая очевидная мысль - таблица с периодами, привязанная к работникам, с парой таймстемпов или tsrange.
>>1187454>>1187511Создаётся таблица Сессия, в ней три обязательных пункта "ИД", "начало" и "конец"DataRecievied создаёт строку с ИД и временем в "начало". Если ИД повторяется, то просто добавляется время в "конец".А вот что дальше?
>>1187773Какой ид повторяется?Очевидно, что ид сотрудников не должны быть уникальными. Потом по ним дергаешь все рабочие сессии и уже их обрабатываешь, как хочешь.
>>1187778>Какой ид повторяется?RFID-тэг.
Читаю этого вашего Алана. Анон, объясни логику здесь. Почему серверу надо прочитать все 24 записи в этом случае? Взял таблицу аккаунты нашел по индексу записи, с соответствующими id и взял из этих записей avail_balance, и все. Почему надо создавать индекс для пар (id, avail_balance) ?
>>1187826И почему в этом упражнении правильный ответ - создать индекс на пару (дата_транзакции, количество), а не на все 4 колонны вместе, как делается индекс на все используемые колонны в предыдущих картинках.
>>1187773>Потом по ним дергаешь все рабочие сессии и уже их обрабатываешь, как хочешь.А примерно, как должна выглядеть такая БД?
Анончики, выручайте. Завтра за щеку брать. Как гуглить проблему: У меня сначала в процедуре просто по входному параметру устанавливал поля с разным значением. Теперь я джойню две таблицы и хочу, чтобы в последней я смог поменять одно поле. Как это сделать?
Аноны, а в чём вы схемы рисуете?Мне вот подкинули ТЗ на йобо-фитнесс-приложение и там довольно интересная схема таблиц выходит и что бы не запутаться и контактировать с другими разрабами думаю перенести мысли по БД в графическую среду.Под руку попадаются лишь сомнительные онлайн сервисы, а есть ли что-то десктопное и мощное?P.s. планируем юзать postgresql+mongodb
>>1187984пиши схемы в виде текста, а визуализация пусть происходит автоматически какой-нибудь тулзой.
>>1187986Вот меня и интересуют тулзы для такой визуализации текста
>>1187773Турникет понимает, в какую сторону прошел человек - вход или выход?Поля Начало, Конец обязательными делать нельзя - у тебя он даже просто войти не позволит, будет ругаться на то, что Конец пустой. Но это не все - допустим, у тебя выключили свет с утра , всех пустили в обход турникета, люди выходят вечером - никого выпустить не можем.Я бы хранил так (навскидку, не претендую на абсолютную истину):Таблица pass --Факты входа - выходаpass_id number --Уникальный идентификатор факта прохода через турникетdevice_id number --Идентификатор терминалаcard_id number --Идентификатор карточки пропускаpass_date date --Момент прохода через турникетpass_direction number --Направление прохода (0/1)pass_status number --Статус (ошибка, успешно)Таблица рабочих сессий work_session:work_session_id --Уникальный идентификатор сессииemployee_id number --Сотрудникwork_session_begin date --Момент начала сессииwork_session_end date --Момент окончания сессииbegin_pass_id number --Ссылка на факт прохода для начала сессии (может быть пустой)end_pass_id number -- Ссылка на факт прохода для окончания сессии (может быть пустой)work_session_begin_user varchar --Кто проставил начало - нужно продуматьwork_session_end_user number varchar--Кто проставил окончание - нужно продуматьwork_session_begin_reason_id --Причина начала работы nullablework_session_begin_reason_id --Причина окончания работы nullableТут нужно оставить возможность заполнять моменты начала и окончания работы вручную и автоматически (на основе базового режима работы сотрудника)- на случай отказа турникета.Разумеется, если время прописалось турникетом, то изменять его уже нельзя.Т.е. если система видит, что условный Алеша Сычев пришел на работу 5 июня, а до этого он пришел 3 июня в 7 утра и с тех пор не выходил, то она должна свериться с дефолтным режимом работы (допустим 8 часов) и автоматом проставить что Алеша 3 июня закончил работать в 15 часов. У определенной группы пользователей должна быть возможность редактировать эти данные, естественно, с ведением аудита - кто, что и когда менял.Можешь добавить причины начала и окончания сессий - если тебе нужно будет потом отличить отгулы на полдня от прогулов.Как должна выглядеть БД - вопрос странный. У тебя должны быть таблички фактов прохода сотрудников через турникет, реестр турникетов, реестр карточек, табличка привязок карточек к сотрудникам (с учетом актуальности), реестр сотрудников, реестр отделов, реестр связи сотрудника и отдела. Плюс служебные таблички для статусов, причин и т.п.
>>1188064Спасибо за развернутый ответ.>Поля Начало, Конец обязательными делать нельзя - у тебя он даже просто войти не позволит, будет ругаться на то, что Конец пустой. Но это не все - допустим, у тебя выключили свет с утра , всех пустили в обход турникета, люди выходят вечером - никого выпустить не можем.Там сетевой контроллер, который не видит разницу между входом и выходом, только факт срабатывания считывателя (очень древняя технология древних).>Как должна выглядеть БД - вопрос странный. И если честно, мне нужен учёт времени и хранение полученных результатов (по дням, месяцам, годам) и отделам, с учётом того, что люди могут выходить из здания по делам и возвращаться обратно в течение смены. Не хранить же для каждого сотрудника таблицу в 365 дней и рабочими датами?
>>1188080Если у тебя просто срабатывание датчика, то тогда колонка с направлением движения не нужна - ты ее не сможешь заполнить.Учет времени и хранение у тебя будет по определению. СУБД для того и нужна - хранить.Если у тебя всего одно здание, то какой поток в день? 1000? 2000? Это все очень маленькие количества записей. Для каждого сотрудника будет несколько записей на день, да, это нормально. СУБД справится, не переживай.
Что читать после Learning SQL? Что-нибудь по созданию самих баз, как правильно делать таблицы, чтобы все было нормально, как делать БЫСТРЫЕ sql запросы, чтобы выполнялись за 1нс и т.д.
>>1188109>Учет времени и хранение у тебя будет по определению. СУБД для того и нужна - хранить.А вот как лучше всего это реализовать - я без понятия. Важно же не только хранить, но и получать доступ к хранимой информации. >Если у тебя всего одно здание, то какой поток в день? 1000? 2000? Это все очень маленькие количества записей. 500 примерно.
>>1188109И ещё: есть какие-нибудь хитрые инструменты, облегчающие учёт времени в SQL?
>>1188299Тома Кайта.
>>1188450Какие инструменты? Че несешь? Уже с timestamp'ом без мокрописек совладать не можешь?
>>1188625Да я про разные. Например как при подсчёте общего времени учитывать только будние дни?
>>1189314https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html> DAYOFWEEKЭто называется документацией.
>>1189319Ну вот, а теперь как лучше всего это использовать в учёте времени?
>>1189351Читай книги и статьи, никто за тебя ничего реализовывать не будет.
>>1189356Я же не прошу сделать за меня базу данных, просто спрашиваю как люди решали эту проблему.
>>1189360Ты еще даже со схемой не определился. Чтобы с тобой говорить, нужно её самому за тебя сделать, а потом примеры запросов показывать. Повторяю, никто этим заниматься не будет. Задача у тебя простейшая, за время, прошедшее с создания твоего вопроса здесь, ты бы её уже худо-бедно решил.
>>1189390>Ты еще даже со схемой не определился. Так мне нужна идея, как это реализовать правильно, а не сами запросы (пока что). Пока что есть идея при создание нового пользователя создавать отдельную таблицу, где один столбец будет общим временем за день, второй - датой этого времени.
>>1189396> при создание нового пользователя создавать отдельную таблицуИди, блядь, читай, идеи свои охуительные отбрось и хоть немного разберись в теме. Потом поймешь, как мне тяжело сдерживаться и не покрывать тебя хуями. Ты свое время проебываешь и нихуя не делаешь. Пиздуй, блядь, читать. У тебя задача самого вводного уровня, соберись.
>>1189399>Иди, блядь, читай, идеи свои охуительные отбрось и хоть немного разберись в теме.Так где можно почитать про учёт времени через sql?
>>1189402гугли opensource СКУД системы. если получится, то молодец.Вообще что тебе нужно.1) сделать опозанание где вход, а где выход.2) Если человек не вышел, то ставить время 00:00, например.3) додумать закрытие для случая два, если он вышел в 00:00.Если ты не можешь спроектировать бд, то пиздец, блядь, купи готовое решение.
>>1189396Вот это круто, на каждую запись новую табличку. Дейтом теперь только подтереться можно, нормальные формы, отношения, кортежи, муть какая-то.Так и делай, анон, потом покажешь, что получилось. Думаю, получится отличное решение, тиражируемое и масштабируемое.Похоже ты совсем нулевой. Почитай хотя бы как вообще БД используются, хотя бы простейшие примеры как делается список сотрудников. Если ты думаешь, что таблички - это типа как файлики, то спешу разочаровать, это не так. Я тебе даже примеры таблиц написал, но судя по всему ты это вообще не воспринял. Иди на sql-ex.ru, читай все с нуля, тред сохрани, потом (если) осилишь саму идею РСУБД перечитаешь. Пока что тебе особого смысла нет объяснять, у тебя нет элементарных знаний.
>>1189459Вообще, мне нужен СКУД, мне нужно хранение данных о времени, что бы в любой момент можно было запросить то, сколько часов человек работал в мае 2018 года.>>1189493>Вот это круто, на каждую запись новую табличку.Ну так назови альтернативу, что бы можно было хранить данные по каждому дню у каждого сотрудника.
>>1189497хуле ты такой тупой то?хранишь id сотрудника timestamp тип события(вход, выход)а потом селекты нормально составляешь.
>>1189497>Ну так назови альтернативуНазвал уже, перечитывай пока не поймешь:>>1188064
Зачем нужен этот курсор? Ну хочу я прогнаться по каждой строчке в моей БД, почему он выводит 3 или более таблиц, если я прошу его строчку ебнуть-то?
>>1189514>Назвал уже, перечитывай пока не поймешь:И я уже писал: проблема не в контроле доступом, а в хранение результатов полученных результатов.
>>1189507>хранишь id сотрудника timestamp тип события(вход, выход)Работник может и 15 раз за день выйти.
>>1189705Колонки:id (сессии; автоинкремент, PK), id_сотрудника, время_начала, время конца. Мудак ты ленивый, ты бы уже после первого же тутора для детей понял, как это хранить можно. Но ты всё ждешь, когда за тебя все тебе в рот положат и разжуют.
>>1189714Повторяешь мою же идею, которую я упомянул вначале - >>1187773
>>1189718Нет, у тебя идиотская идея. Никуда время не добавляется. Начинается новая сессия, запросом уже просуммируешь продолжительности сессий, но делать ты это будешь сам.
>>1189719>Нет, у тебя идиотская идея. Никуда время не добавляется. Начинается новая сессия, запросом уже просуммируешь продолжительности сессий, но делать ты это будешь сам.Так ведь вопрос был и в этом: куда суммировать время так, что бы потом можно было его легко и просто достать.
>>1189720SELECT ... GROUP BY employee ... SUM(%time_delta%).
>>1189704Еще раз почитай. Там все ключевые моменты есть, но могу еще раз повторить - анализируй сырые данные с девайса и заполняй таблицу рабочих интервалов. Единственная сложность - это то, что данные с девайса не дают тебе 100% данных для учета, в случае, если девайс на время выйдет из строя, тебе нужно предусмотреть возможность как автоматически, на основе каких-то правил или режимов работы, так вручную, с помощью клиентского приложения, разрулить входы без выходов, выходы без входов и ударную работу по 36 часов во время авралов.Один из возможных вариантов дальнейших действий: выбираешь стек технологий - СУБД, платформу для бизнес-логики и для клиентских приложений с учетом желаемой архитектуры - простой клиент-сервер или трехзвенкаРисуешь схему данных, создаешь таблички.Пишешь бизнес-логику, она же бэк-энд, прикручиваешь к ней клиентские приложения.Никаких вопросов про тонкости обработки дат в SQL быть не должно. Это все разжевано в документации к БД.
>>1189721А если надо взять данные за месяц у отдела N?
>>1189734На этот вопрос ты ответишь себе сам, когда освоишь джоины и агрегации.
>>1189735Что-то мне подсказывает, что ты тот ещё дилетант в работе с СУБД.
>>1189736Я спорить не буду. Порекомендую тебе съебаться из треда и начать что-то делать, но если останешься, то с удовольствием понаблюдаю за тобой.
>>1189745Небось ещё по IP пробиваешь.
>>1189736А ты прям мастер хуястер. Здесь вообще никого нормального нет.
>>1189705ты тупой? Ты настолько ленив, что не можешь считать суммы в процедурах?ебать ты.Я мог бы тебе написать всё это, но бабла у тебя конечно же нихуя нет, как и мозга
Котаны, я макакий умеющий в JS. Решил понемногу , для духовного роста, вкатиться в БД. Хочу начать с sql понятно что логичнее с noSql, но все же sql поголовно вездеПодскажите какой нибудь sql учебник для самых маленьких.
>>1189658>select * from ... where sale = @idSaleА где гарантии, что у тебя там одна запись по этому условию?
Помогите с запросом.Есть одна таблица в которой требуется найти дубли по двум столбцам и сгрупировать их. Так вот есть один запрос, выделен на пикче, нужно его оптимизировать-перепилить.Дубли должны находится по колонке CommunicationType и SearchNumber, как и делает мой запрос. Однако, как на выходе не получать лишних "групп"? Например, на пикче есть две группы, но нужно что-бы была только одна т.к. первая полностью входит во вторую, но есть условие что в группе не может быть меньше 2х записей. сори за качество пикчиОчень нужна помощь HALP PLZ
Аноны, нормально ли такое(связи между таблицами)?Что убрать? Или оставить как есть?
>>1190836Мартин Грубер Понимание SQL. Дейт - Введение в СУБД.В процессе чтения обязательно задрачивай тысячи запросиков - на sql-ex.ru или на codefight.com в разделе Arcade -> SQL
>>1191384Нет, это ненормально, а очень и очень плохо.Связи на картинках не будут нормально работать. Допустим, ты завел 2 типа упражнений с десятком подтипов в каждом, запустил систему, в табличке упражнений появились десятки тысяч записей. Затем ты меняешь в табличке типов название - и у тебя все перестает работать, т.к. записи в Exercise и ExerciseSubType будут ссылаться на несуществующее значение. Запросы вернут 0 записей.Связи должны быть по первичному ключу - то есть по %table_name%_id. Кстати, рекомендую называть колонку с первичным ключом по такому шаблону, потом удобнее джойнить будет. Добавь primary_key по этим колонкам и сделай ссылки на ExerciseTypeId, ExerciseSubTypeId и т .д.Эти колонки должны заполняться из уникальной последовательности, т.е. если у тебя была запись с Id = 100, потом ты ее удалил и добавил новую, то новая запись должна иметь Id = 101, даже если предыдущая запись получится Id = 99 и эти Id у записей никогда и никем не должны изменяться. Также нужно проставить для колонок-ссылок внешние ключи на таблицы-источники, построить по ним индексы и определить политику при удалении.Вот тогда с точки зрения связей все будет правильно.Но есть еще один вопрос - в Exercise есть ссылка на подтип и на тип одновременно, причем подтип может иметь только один тип. То есть, хранить ссылку на тип - избыточно, ты ее всегда можешь вычислить из подтипа.И еще один момент - предлагаю тебе объединить табличку типов и подтипов в одну.Во-первых, по сути это и есть одна сущность, во вторых - ты можешь строить иерархии с глубиной больше 1, в третьих меньше кода придется писать.Будет это примерно так:ExerciseTypeId numberExerciseTypeParentId numberExerciseTypeNameExerciseTypeDescriptionExerciseTypeBegin date --дата начала действия записиExerciseTypeEnd date --дата окончания действия записиПоследние две колонки дают тебе возможность легко вести историчность записи, например, Тип стал неактуальным и его теперь не используют. Однако удалять его нельзя - на него ссылаются множество упражнений. Устаревшей записи проставляют ExerciseTypeEnd, при показе данных из справочника проверяется дата и показываются только актуальные - либо с не наступившей датой окончания, либо с пустой.Резюме - убираешь табличку Подтип, в упражнениях оставляешь ссылку только на тип, табличку Тип делаешь иерархическим, делаешь первичные ключи во всех таблицах, связи переделываешь на первичный ключ, добавляешь внешний ключи, индексы по ним.Советую посмотреть книжки из поста выше - судя по твоей схеме тебе будет крайне полезно, узнаешь много нового.
>>11914071. Понял про ключи, спасибо(дело в том, что я ORM юзаю, и тут с этим проще, оно само привязывается к primarykey unique с автозаполнением).2. Можешь чуть подробней пояснить про типы/подтипы в одной таблице?P.s. Спасибо за книги
Репощу тут. Есть около 50 миллионов записей по ~килобайту, нужно запилить удобный просмотр, сортировку и т.д. Вопрос по производительности. В идеале бы запилить в вебе чтоб не таскать везде БД, но я так понимаю с таким размером нужен оверпрайсный сервак если больше 3.5 человек будет пользоваться? На какие вообще скорости рассчитывать и сколько сожрет оперативки? В локальной БД же нормально будет шевелиться или на рядовой кофеварке 2ядра/4гига тоже будет больно?
>>1167018 (OP)призывается бородатый бдшникситуация: есть одна sqlite3 бд, в ней 130+ таблиц. В эти таблицы постоянно пишется дата, которая парсится с некого api. В тоже время, из этой базы берется эта же дата на обработку. То есть постоянные insert'ы и select'y. Как бы ускорить это дело? все, конечно, на python
>>1191636> SQLiteЗаменить на что-нибудь более серьезное. Остальные оптимизации не подсказать без экстрасенса, да и бесплатно никто не будет этим заниматься.
Как отсортировать по foreign_key (если есть) а иначе по id?т.е.:things(id, thing_id)id: 1, thing_id: 3id: 2, thing_id: nullid: 3, thing_id: nullid: 4, thing_id: nullНужно отсортировать, что бы было 1 и 3 были рядом, например:1,3,2,4Как?
>>1191689Пример точно правильно написал?
>>1188299Бамп вопросу!>>1188501>Тома КайтаГугл выдал 6 учебников по ораклу, который вроде как не надо использовать потому, что он охуенно мощный и дорогой. В общем адская дрочильня для серьезных заданий, а не для вкатывальщика.Мне бы что-то по MySQL, Postgre или по SQL вообще. Именно как делать все не только select, join а ещё например создание юзеров, таблиц, процеры какие-то, о которых у Алана ни слова, зачем, и как делать это быстро.
>>1191866>>1188299> как делать БЫСТРЫЕ sql запросыEXPLAIN ANALYZE
>>1191646поглядел кучи рецептов по ускорению, вплоть до эксплоитов на плюсах, кажется. Индиксация мне не подходит, потому что постоянный Insert. Думаю, остановится на многопоточности и реализации шаблона consumer. Еще говорят, есть кучи конфигов, которые не гонятся за производительностью. Может быть вместе и сработает. Ну а еще докучи буду писать в память и только читать. Раз в какое-то время дампить в базу на диске. какие подводные?
>>1191897Объясни. >>11919081) Какое отношение инсертов к селектам? 2) Каков процент фуллсканов больших таблиц в селектах?3) Выбрасывай нахуй sqlite и меняй на оракл или postgre. Sqlite исключительно однопоточный и писать туда во много тредов что намеренно ссать себе на лицо.
>>1191908> Ну а еще докучи буду писать в память и только читать.Кэшировать недьзя данные?>>1191917> Объясни.Ищешь тяжелые места, исправляешь, повторяешь, запоминаешь испробованные приёмчики.
>>1191917>меняй на оракл или postgre- инсерты к селектам: 1 к 3- 135 таблиц в бд. По 7M полей. Фулом не обхожу. Все вычисления из последних сотен тысяч. так и поступлю
>>1191928>Кэшировать недьзя данные?>буду писать в память
>>1191937Ты через жопу свои охуительные идеи описываешь. То, что ты озвучил, больше похоже на базу в tmpfs. С кэшированием данных иногда все просто, а иногда сложно и почти бесполезно, поэтому нужно смотреть по задаче. Вот я и спросил.
>>1191946убедили переходить пока не совсем поздно на Postgress
>>1191954Поддерживаю тебя в этом. Не забудь, что там есть полноценная поддержка JSON, что где-нибудь тоже может помочь в срезании углов.
>>1191955зацените на грани бреда: а что если, я сделаю каждую работу с таблицей как отдельную базу данных? И буду в 135 потоках ебашть в них асинхронно? Ну и запрашивать в этом же потоке.Может так быть? все на питоне
>>1191955формирую джсон уже на фласке и в рест апи
>>1191928Я траллел, а ты не понял.>>1191930> - 135 таблиц в бд. По 7M полейИ как sqlite работает? Не лопается к хуям? >>1191954Ты мог бы посмотреть в сторону игнайта, тебе и встроенный кэш, и SQL какой-никакой, и масштабирование до плюс бесконечности, и встроенные мап редьюс операции близко к данным, но у тебя объемы крошечные, поэтому бери постргре и успокойся.>>1191960Ебаклак просто. Возьми любую базу данных, которая нормально поддерживает многопоточность, не обосрись с блокировками (вдруг), обеспечь, чтобы твоя приложуха срала и жрала говно с БД также многопоточно и все будет хорошо.
>>1191964>все будет хорошо.
>>1191967Ну ладно, ты будешь идти на улице, тебя арестует нацгвардия, потом окажется, что у тебя в кармане был аргентинум и пойдешь по 228.
>>1191689вроде да, а что?1 и 3 связаны, их надо выводить рядом при сортировке
Как лучше всего хранить отформатированный текст в БД?
>>1192132В БД.
>>1192067Так это у тебя иерархический запрос, только сортировку по веткам нужно будет сделать обратную.Гугли "иерархический запрос CTE"
>>1192142Я имею ввиду, в каком формате? Есть три опции: html, Markdown и JSON. Сам склоняюсь в пользу последнего.
>>1191452>2. Можешь чуть подробней пояснить про типы/подтипы в одной таблице?Да вроде все сказал, куда уж понятнее.Когда у тебя рубрикатор в виде дерева, ты можешь поддерживать вложенность любой глубины, хоть 10 уровней. В твоем варианте ровно два уровня. Через две недели после запуска к тебе придет Машенька из отдела маркетинга и скажет - "а неплохо бы нам сделать три уровня для упражнений". И твоя схема поплывет - как в части рубрикатора, так и в части его использования - теперь у тебя для одного подтипа получается три уровня иерархии, а колонок только две.Нужно делать новую таблицу, новую колонку, новую форму, новые запросы и т.д.А когда все в иерархической структуре лежит, то тебе все нужно написать один раз. Конечно, код получится немного сложнее, но его в итоге будет меньше. Максимально возможную глубину иерархии ты можешь вынести в конфигурационную табличку, если нужно жестко ограничить пользователей тремя уровнями, например.В табличке Упражнения будет ровно одна колонка с ссылкой на запись в типах. Из нее ты всегда можешь развернуть полную иерархию.Если что-то непонятно, то задавай более конкретный вопрос.
>>1192154> htmlУже отрендеренный.> MarkdownКоторый нужно рендерить.> JSONКоторый нужно рендерить.Ты не понимаешь, чего хочешь. Тебе нужно еще подумать.
>>1192157Мне надо хранить текст, созданный с помощью react-draft-wysiwyg. Функции для рендера и конвертации одно в другое там есть. Хочу хранить в JSON потому что в СУБД, которую я юзаю (PostgreSQL), есть полноценная поддержка работы с ним.
>>1192162А что тебе с текстом нужно делать в базе?
>>1192162> Хочу хранить в JSON потому что в СУБД, которую я юзаю (PostgreSQL), есть полноценная поддержка работы с ним.Дядя, ты дурак? Ты будешь делать запросы к отрендеренным постам в бложике? Отвечу: не будешь. Хуйню думаешь, думай ещё.
>>1192156> все в иерархической структуре лежитВот насчёт этого сможешь пояснить? Как она будет выглядеть ирл, структура такая, на реальных данных.
>>1191303вместо dense_rank() юзай row_num() over (partition by communicationtypeid order by number. потом обобщай запрос и отсекай те записи у которых row_number() будет > 1.
Есть одна БД. она прикручена к спрингу но не сутьСмысл: есть юзеры. у юзера есть возможность создавать таблички(проекты?) в программе. Например табличка нравится / не нравится. Записей может быть разное количество. Нравиться 5, не нравиться 8 и т д. Количество записей в каждом проекты может варьироваться. То есть типизировать проекты и записать в 1 не получиться.Как сделать БД? Разбить каждую запись в отдельную таблицу? Объединить все к хуям в большую?
>>1192144Погуглмл, что то сильно замудренные ответы. Я думал средствами sql это намного проще (
>>1192328https://www.db-fiddle.com/f/pVaH5v2wfuFvsxeRYHFuQy/0
>>1192719Спасибо, буду разбираться
>>1192473У тебя тут получается обход дерева, по сути это и есть сортировка, только по особым правилам.Если у тебя ровно два уровня, то можно и самоджойном обойтись, а если уровней несколько может быть, то нужно рекурсивно обходить.Причем у тебя иерархия в обратном порядке задана, там еще аналитическую функцию нужно будет сделать для такой сортировки как тебе нужна.Если у тебя всегда ровно два уровня может быть (т.е. в твоем примере 3 на втором уровне и у этой записи thing_id всегда пустой), то это проще сделать.
Какой тип данных лучше использовать для хранения номера телефона: text или bigint?
>>1193169Я в тексте храню. Можно и в bigint.
>>11931698-800-555-35-358(800) 555 35 35
>>1193169Лучше в тексте.Рано или поздно придется сохранить номер с решеткой или звездочкой, или добавочный какой-нибудь.
>>1193172лучше разбить номер на все составные: регион int, оператор int, номер int. Дальше можно реляционные таблицы сделать к оператору, регионы и тд. Это в случае, если тебе нужно максимально быстро делать выборку
>>1193430У меня нет такой выборки. Храним в базе просто номера клиентов. Для смс рассылок достаточно, у нас тем более клиентов всего 30к и все из РФ, поэтому не имеет смысла.
>>1193432Если для рассылок - храни текстом, можно завести еще одно поле для типа контакта - телефон, почта, учетка телеграм, что там еще есть.
>>1193430>intА если ведущий ноль?
>>1193444Мальчик, ну ебаный в рот, я конечно понимаю всё, но не учи отца ебаться. У тебя еще молоко, а может и не молоко, на губах не обсохло, когда я начинал с sql работать.
Аноны, а вы умеете делать минимизацию?
>>1193448Минимизацию функциональных зависимостей*
>>119344730 лет-то перевалил, отец? Если ты такой гуру, то вопросов как хранить контакты быть не должно. Если хочешь по существу пообщаться - скажи, чем плохо хранить все контакты в одной таблице с указанием типа контакта (сотовый, мессенджеры и т.п.)?
>>1193478Разменял 4 десяток 2 года назад. По заданным тобою вопросам ответа не знаю. Извини меня пожалуйста. Мне нечем заняться в воскресенье вечером. Я одинок и мне грустно. Одна отрада траллить на харкаче.
>>1193481>мне грустно.Можешь ссать детям итт в ротешники, настроение повышается
>>1193481Просто удивился такой реакции на безобидное предложение.Я в твоем возрасте (сейчас 38) тоже один был, тоже грустно было, а сейчас вспоминаю те времена - свои плюсы тоже были.Сейчас у меня другая крайность - семья, дети мелкие, никуда толком не выбраться в одно лицо, заботы, хлопоты и рутина, только на дваче урывками и сидеть осталось.
>>1192450Сам себе не ответишь никто не ответитПоявилась идея сделать не каждую отдельную таблицу на каждый тип проетка юзера, а сводную по всем полям всех проектов. Насколько это хуевая идея?Почему то навикет импортирует эту хует в 10й постгресс с ошибками, Реквест на другой проектировщик БД с экспортом
>>1193521Просто не совсем понятно, что ты хочешь сделать, анон.Да, можно все атрибуты описать в одной таблице, есть такой подход. Погугли Entity-Attribute-Value.Но нужно понимать, что это далеко не панацея и у этого подхода есть серьезные минусы.
>>1193531>Entity-Attribute-ValueСейчас загуглю. Спасибо. Хоть будет откуда копать.Несколько видов сущностей, которые могут отличаться между собой количеством полей, и каждое поле не обязательно...и количество не регламентировано. Как список за / против составляется. 2 колонки - 1 за 1 против. И там и там есть какие то записи. Их может быть произвольное количество. А в другом варианте еще появляется произвольное количество колонок..
>>1192450Что это за красивая бд с картинками? Тоже такую хочу!
>>1193556Navicat.
>>1193172>>1193394Спасибо. Выберу вариант с текстом.
Посоны. Помогайте. Есть 2 таблицыtable1: ID Name cIDtable2: ID cID valueДля 1й записи может храниться множество значений во второй таблице.Необходимо забрать только последнее значение из table2. Помогайте, горю.
>>1193832SELECT value FROM table2 ORDER BY ID DESC LIMIT 1;
>>1193832Пиздец ты даун.
>>1193888Не ругайся. Достаточно адекватный вопрос для треда. В начале не всё интуитивно понятно, и системный подход к обучению тут тоже не сразу начинает работать. Он же не просит схему на %курсовая_нейм% ему быстро накидать и объяснить всё.
>>1193880Спасиб, решил вопрос так:SELECT table2.Value FROM table2LEFT OUTER JOIN table1ON table2.cID = table1.cIDWHERE table2.cID = 1GROUP BY table2.cID>>1193888Шел бы ты кукарекать в /b/, петушок.
>>1194910> GROUP BY table2.cIDЗачем?
>>1194910Где гарантии, что ID первой записи всегда 1?>>1194999Подождите, а каким хуем этот запрос вообще будет работать? Not group by expression
>>1195011> каким хуем этот запрос вообще будет работать?Хз, где-то, может, и сработает.> Где гарантии, что ID первой записи всегда 1?В условии задания, полагаю.
Анон!!! Помоги, пожалуйста. Заставили срочно посчитать количество записей за один определенный месяц, причем количество по значению типа. Вообщем на сколько я смог додуматься этоselect type, count()from tablewhere time >= to_date('01.01.2017') and time < to_date('01.02.2017')group by type;Но блин проблема в том, что уже 71 минуту считает, а результата нет.Там таблица по фрагментам разбита, например я знаю что можно сделать запрос по одному фрагментуselect from table partition(p_01_01_2017)но как сделать запрос по диапазону фрагментов??? Или как иначе можно ускорить??
Анон, принеси мне эту книгу плз. Понял начала все эти, селекты, джойны, хочу более сложных вещей. Вот тут https://www.datapine.com/blog/best-sql-books/ Ее советуют. А ее нет нигде. Что гугл, что яндекс забиты одной рекламой лол. Остальные книги без труда нашел, а эту не могу. Ну или может что другое посоветуешь почитать, про серьезные дела, чтобы я не пошел на работу, умея только джойнить свой анус в селект ерохи.
>>1195870http://www.booksee.org/s/?q=SQL+Cookbook+Molinaro
>>1195548>Но блин проблема в том, что уже 71 минуту считает, а результата нет.Наверное, индексов нет.
>>1195548Распаралель запрос, или задай range для partition
>>1195893>>1195548Двачую, наверняка на time индексы не повесили и СУБД шагает по абсолютно всем строкам. Но индексы у тебя ещё дольше будут делаться, поэтому жди окончания запроса или делай как >>1195969-кун говорит.
>>1195548A s planom zaprosa-to kak? Kak s planom-to?
>>1195893Там все нормально я думаю настроили. Это я просто не умею пользоваться>>1195969А что такое range для partition?>>1195970>>1196105Я не знаю даже что это такое...Вообщем ночью придумал запрос выполнять по каждому фрагменту таблицы по отдельности. Прикинул что в одном месяце 30 дней, то есть 30 фрагментов. И сидел запускал 30 раз ночью такой запрос: select /+ parallel(32) /type, count(*) from table partition(p_01_01_2017) group by type; Потом результат каждого вставлял в librecalc. В конце в librecalc просуммировал формулой всех 30 дней значения и получил результат за месяц. Для ускорения использовал parallel, хотя его запрещают использовать почему то. Надо все таки как то фундаментально этот sql выучить, а то так запаришься.Всем спасибо за помощь, пацаны!
>>1196141Ну блеать, просишь свою субд explain и она тебе план запроса говорит. Оптимизация и тюнинг эт пиздец. Люди книги на эту тему пишут
>>1196169Ну блин я понял, они реально шарят, уважение им.
Добрый день, делаю теги.Допустим есть таблица с постами: post_id, post_textтаблица с тегами:tag_id, tag_nameи таблица связейtag_id, post_idУ меня вопрос, как мне селектить все посты, что бы к каждому посту еще и массив тегов летел в каком-то виде? Желательно что бы каждый тег еще был отдельным элементом, а они не были склеены скажем в строку, спасиб.
>>1167018 (OP)У нас бэкэнд на MongoDB. Нужно хранить в БД оче большие файлы. Требуется собирать файлы по частям перед заливкой в бд. Оказалось, что это требование возникло из-за того, что GridFS не позволяет обновлять файлы в базе (дописывать к ним байты). Есть ли NoSQL СУБД, в которой реализован аппенд к файлам,уже хранящимся в бд? Как с этим дела в CouchDB?
>>1196568Тип сделай описательный. Либо запрос с order by post_idЛибо сделай анонимный блок, который будет тебе возвращать в loop селект от айди поста и все теги столбцом для этого поста.
>>1196694Монго же большие файлы вообще хранить не умеет. Пробовал хранить не сами файлы, а ссылки на них? А для ссылком развернуть распределенную файловую систему?
>>1196703>Пробовал хранить не сами файлы, а ссылки на них?А почему все бд не делаю так? В чем профит хранить сам файл в БД вместо какой-нибудь строки "c:/yoba/cp/peperoni_pizza.png" ? только вкатываюсь
>>1196703>А для ссылком развернуть распределенную файловую систему? Как это сделать? Есть мануал?
>>1196703>>1196704Сказали, что недостатки монги мимо нашей задачи. Хранение файлов в распределенной ФС позволяет их редактировать. А нам нужно запретить редактирование. Но при этом надо позволить скачивать эти файлы.
Целый час думал об этом. Я правильно понимаю CAP утверждение?1)Оно о distributed data storage. То есть каких-то баз данных, которые разделены между разными компьютерами. А то я сначала не понимал, как, выбрав Availability, кто-то сможет получить ответ от моей БД, если она только на 1 моем пк расположена и в данный момент лежит мертвая.2)Consistency значит, что запрашивающий будет получать самую новую информацию, up-to-date то есть. Я пока пишу\учусь только на своем 1 пк, но я предполагаю, что в серьезных ебах видимо есть куча нод, которые принимают-отправляют транзакции, а есть какая-то группа главных еб, которая занимается сбором и учетом транзакций с остальных нод. И при выборе consistency мы или получаем от ответ от одной из главных нод, где учтены все изменения, либо идем нахуй, если нода лежит. А при выборе availability мы обращаемся сначала к главной ебе, если она не отвечает, то к ебе поменьше, и так, пока не получим ответ. Даже если он немного устарелый и в нем не учтены все транзакции.Это так работает? Я все понял? Если я вкатываюсь в джуна, мне достаточно пока иметь это представление , и не пытаться понять, как вся эта адова машина работает на практике в серьезных предприятиях?Ещё, я правильно понял, что consistency в CAP означает то, что я сказал - up-to-date информация. А consistency в ACID означает, что в бд есть защита от умников, которые в поле "возраст" вместо целого числа попытаются забить "23.5" или строку "23 с половиной годика"?
>>1196721Запрети редактирование, лол. Рфс может ебашить не только, как таковая. Ставишь перед рфс - машину брокера и все.Или йопта, купите отраслевое решение у оракла, он теперь в носкл может, что вам и нужно, а его клобы/блобы до 2 тбЕсли решение прямо стоит с монго, то можешь программно все сделать с делением файлов.А так ты попал со своими NoSQL>>1196704Читай курс по субд и танненбаума. Это под разные задачи.Вариант с хранением далеко и не в базе снижает нагрузку, однако надо мучиться с политиками безопасности.
>>1196724Нет, не прав. Согласованность - все узлы не противоречат друг другу в одмн эпизод времени.Доступность - любой запрос к рс завершается корректно, но не факт что данные совпадут.Устойчивость к делению - расщепление не приводит к некоректности ответа от каждой секции.Почитай про Stand by system например у Оракла. Там все расписано, правда документы большие.Ты в любом случае получаешь три режима ca cp ap
>>1196733>Запрети редактирование, лолОбсудил это с лимлидом. Говорит: лишний слой, не хочу.
>>1196743А еще говорит, что после стадии MVP на этом слое будут серьезные изменения.
Поговорил еще с тимлидом. Он мне прислал песенку "Сделать на отъебись" и посоветовал иногда ее слушать, лол.
посоветуйте годный видеокурс по postgresанон пророчил боль, анон знал что пророчил
>>1196806>видеокурс>postgresЛол, поищи аудиокнигу
Есть 3 таблицы и 2 стула.Юзеры, их роли и третья. Как найти все роли одного юзера? Хотя бы в какую сторону гуглить.
>>1196880Джйонишь таблицы и фильтруешь по юзеру.
>>1196885К сожалению я далек от SQL. Можно по подробней?
>>1196880select r2.role_id, r2.role_name from(select user_id from app_user where условия на одного юзера) u inner join user_role r1 on u.user_id = r1.role_id inner join app_role r2 on r1.role_id = r2.role_id;
>>1196934Спасибо. Я примерно такое же сам писал.
>>1196934Хуйню написал.>>1196928Погугли. Ключевые слова для поиска дал.
>>1196936>Хуйню написал.>пукА объяснить что не так слабо?
>>1196936Ну вообще работает.>>1196934А почему инер-джоин? SELECT r.id,role_name FROM roles r JOIN user_role ur ON r.id=ur.role_id JOIN users u ON u.id=ur.user_idWHERE u.nickname = 'User'Названия строк не много не совпадают но думаю понятно.Выдает то что надо. То есть фильтровано по имени пользователя, его роль.
Ну и задача немного специфическая. >>1196880 Чтобы возвращало объект в хибернейте.Всем спасибо.
>>1196939Потому что план выполнения эффективнее чем та дрисня.
>>1196942Нахера тебе запрос писать тогда, там же аннотации есть для маппинга.
>>1196951Чтобы лохи из зекача бесплатно сделали за меня всю работу.
>>1196951Там сложные запросы все равно надо писать. Легкий да. Xui findByXui(String s) и всеА сложные оборачиваешь в аннотацию и погнал писал на диалекте хибернейта. Но все равно весь бойлерплейт за тебя делается. Не гемора как в чистом JDBC.
Насколько реально найти фриланс на sql и pl/sql?У меня есть фуллтайм работа и денег хватает, но я бы хотел ещё в свободное время ебашить.
>>1197107>но я бы хотел ещё в свободное время ебашитьЛично я в свободное время летом собираюсь подрабатывать уличным музыкантом для души.
РРРЯЯЯЯЯЯЧет PostreSQL посложнее MySQL. Я правильно понимаю, что ситуация такая:1) У MySQL есть удобный интерфейс для запуска сервера - Notifier - где можно просто жмякнуть 'start server' и все заработает, но приконнектиться к нему можно только через консольку mysql.exe. 2) А у PostgreSQL наоборот - надо сначала создать БД через initdb, потом запустить через pg_ctl, но зато есть охуенный графический интерфейс в виде Pgadmin хотя можно и консолькой через psql?Вопрос: почему об этом нигде не написано? В MySQL в первой же книге на первых страницах: "вот так запустить, вот так подключиться, чтобы писал sql запросы". А в PostreSQL "есть psql, есть pgAdmin, иди нахуй". Нашел только в оф документации всю эту инфу про initdb и pg_ctl. Может я не там ищу и не то читаю, анон? Подскажешь что-нибудь другое? Я смогу запускать сервер через pg_ctl только? Просто офф документация описывает ситуацию на Линуксе с созданием другого юзера вместо рута, который будет запускать postgres.exe. А я на шинде, у меня тут такого нет.Кстати, почему мой сервер уже делает по 5 транзакций в секунду? Я даже никаких команд ему не пишу. Что он там самостоятельно крутит?
>>1197157Ты что такой окукленный? Все бд через консоль включают. Это самый важный навык, а ты еще все это на винду накатил, долбаеб.
>>1197157>Кстати, почему мой сервер уже делает по 5 транзакций в секунду? Я даже никаких команд ему не пишу. Что он там самостоятельно крутит?Твой сервер майнит кому-то битки.
>>1197250>Все бд через консоль включаютДа я и не против. Просто у MySQL сразу сказали, что и как сделать. А у постргреса вообще никаких упоминаний об этом. Сиди и ищи в документации сам.>а ты еще все это на винду накатил, долбаеб.Кстати, что с этим делать? Пикрил. Каким хуем вообще "кодовая страница консоли отличается от основной"? Кто это придумал? А почему не сделать вообще случайные кодовые страницы для каждой итерации запуска cmd? Ну и дальше, я меняю кодовую страницу на указанную, и что? Сообщение об ошибке psql не выдает, но я получаю нечитаемую хуйню. И как мне жить теперь?
Так получилось - я столкнулся с windows xp. Под неё нужен mysql (mariadb) или любая БД. Майсиквел версию не могу найти последнюю под ХР. Анончики, выручайте.
>>1197259Накати линукса и будь человеком
>>1197584https://mariadb.com/kb/en/library/deprecation-policy/Во второй таблице Deprecated-платформы со ссылками на последние релизы для них. В следующий раз попробуй сам погуглить.
>>1197613Лучи добра, анон! Гуглил, но не нагуглил. Спасибо. А mysql версия 5.5.х какая последняя поддерживаемая windows xp?
>>1197640Понятия не имею и гуглить лень. Скажу лишь, что на Windows ты хуёв насосешься.
>>1197651Почему? Я в середине нулевых сидел плоьно на хрюше и спермосерверк 2003, помню, что mysql не было проблем.
Допустим, у меня есть отчёт на БД Oracle, который я хочу продублировать из SSRS в Tableau. Это BI инструменты и вам их знать совершенно не обязательно, мой вопрос будет про оракел.Текущая реализация в SSRS: несколько процедур с выходным параметром типа sys_refcursor.При перекате на Tableau я столкнулся с проблемой: в неё нельзя передать курсор из процедуры, только обычный SQL запрос.Мне не хочется копировать эти запросы втупую. Во-первых, я не уверен, что мне удастся избавиться от PL/SQL полностью, во-вторых, я хочу, чтобы весь код был в одном месте.Напрашивается использование pipelined function.Оцените, пожалуйста, эту идею с точки зрения производительности и трудоемкости.sys_refcursor vs pipelined function
>>1197665Да вроде норм. Можно еще курсор через XML пробросить, но это скорее всего медленнее будет.
>>1167018 (OP)БД-бояри взываю Вас. Вообщем есть бд в фокспро, нужно ее перетащить в пхпмайадмин делаю экспорт бд4 кодировка 1252(или какая она там) вообщем пхп орет что >#1064 - У вас ошибка в запросе. Изучите документацию по используемой версии MariaDB на предмет корректного синтаксиса около '?v????' на строке 1крч какая то залупа. Вопрос можно ли как-то открыть код бд и поглядеть его блокнот и нотепаде не помогает я хз у же че делать
>>1198158Конвертер ебашь бд, или выгружай весь код бд в анси sql
>>1198224а блять как код то выгрузить, все дело идет из галактики в фокспро я могу тока смотреть
>>1198227У тебя есть среда где запросы выполняешь? Черещ нее проси код для каждоц таблицв или бд. Возьми VFP и сделай экспорт.
>>1198242хех, вот в этом и прикол мб слышал о такой штуки как ЕРПИ ГАЛАКТИКА так вот выгрузка идет с нее, но о коде и речи и не идет, она автоматически создает бд и туда вбивает все нужные данные, такие вот дела
Продолжаю изучать постгрес. Смотри анон, какая штука (я даже подчеркнул). Вопрос, почему если я сделаю reject для строки под IPv4, я все равно смогу подключаться к бд, а если под IPv6, то нет? Ведь если я сделаю IPv4 reject, то при проверке подключения к бд эта строка будет проверена первой, и должна тут же отключить меня. Там же адрес 127.0.0.1, это же и есть локалхост, когда я подключаюсь к бд с того же компа, где ее сервер крутится.
>>1198246У нее преднастроенная база поумолчанию, хуле ты? А это значит, что ты можешь с ней сконнектиться
>>1198259Она проверяет все строки. Нет такого, что проверил одну и дропнул. блядь, анон, не ставь на винду постгресс. Поставь себе линукс ужеЕсли не забуду я тебе книг насоветую вечером по постгрессу.Мимо Ораклист с опытом постгре
>>1198272чет пхпмайадмин говорит что хуй, так как при создании она использует устаревший ситаксис, и на это админ ругается, и вот ебя труп пытаюсь ее затолкать в пхп
>>1198273>Она проверяет все строки. Нет такого, что проверил одну и дропнул. Но ведь подчеркнутое говорит обратное: как только попадается подходящая строка, проверяет только по ней, и если что не так - дропает. Вот я думаю, что сервер и должен проверить по IPv4 просто потому что он выше в файле и сразу дропнуть. А он почему-то дропает только если указать reject в IPv6. Может я чего-то не понимаю, и почему-то подключение к самому-себе не подходит под 127.0.0.1/32 ? >>1198273>Поставь себе линукс ужеВ соседней доске посоветовали виртуальную коробку и на нее линукс сверху. Попробую в скором времени.>>1198273> книг насоветую Было бы неплохо. Взял Learning PosgreSQL by Juba, но кроме первых двух глав она никакая вообще. Читаю документацию.
Давайте рассмотрим ситуацию в вакууме.Допустим есть посты. У постов есть всякие стандартные атрибуты как id, author_id, time, body и т д.Далее у постов могут быть картинки, допустим как на дваче, до 8 картинок к посту. Картинки лежат соответственно в отдельной таблице и там id, post_id, file_name например.Далее есть теги, теги тоже лежат в отдельной таблице: id, tag_nameНу и так как тегов у поста может быть много, и 1 тег может быть у нескольких постов, то есть еще таблица связей вида: id?, tag_id, post_id где свалка many_to_many организована.Что бы еще такого приплести, допустим у постов есть комментарии - пусть просто нечто вроде урезанных постов без картинок и тегов, но у комментариев есть авторы, то есть в таблице с комментариями всё выглядит как-то так: id, post_id, author_id, body.Теперь собственно вопрос, желательно для опытных ребят, как бы вы организовали запросы в такую базу? Начать можно с простого варианта, где скажем нужно заселектить 1 пост. Изи можно приджойнить к нему автора, а сопутствующие вещи такие как картинки, теги и комментарии+авторов комментариев можно параллельно запросить отдельными запросами, вместо того что бы писать монстр запрос, который я даже не знаю как будет выглядеть.Но что делать, когда у нужен допустим список постов какого-нибудь автора со всей вот этой сопутствующей мишурой (теги, картинки, ответы), тут уже просто невозможно выкрутиться подобным способом: не будешь же потом в цикле для каждого поста слать по 3 дополнительных селекта? Если у тебя постов скажем много?Как с подобными вещами работают? Как вообще с такой базой подружиться?
>>1198372Обычные селекты с джойнами. Такие вещи делаются в рамках одного запроса, СУБД это быстро прощелкает. Это уже с действительно сложными запросами имеет смысл дробить запросы и считать что-нибудь в приложении, но у тебя дженерик вебпараша, где подобных проблем не существует.Накати ORM, включи дебаг запросов и смотри, как там такое делается. В начале пути очень может помочь. Но не увлекайся, потому что учить SQL и учить ORM — очень разные вещи.
Использую в своё сраном дипломном проекте встроенные сортировки и поиск из mysql, а мне надо их надо как-то описать, да ещё и сложность вывести. Какой воды можно налить страницы на две хотя бы?
>>1198830Это быстрые сортировки. Вычислительная сложность у них возрастает медленнее, чем линейно.
Такие уж дела, дорос до того, что на продакшене надо обновлять структуру с БД, но тупо снести все к хуям и выполнить запрос на создание таблиц не выйдет.Ибо нужно сохранять данные, ибо сервисом уже активно пользуются и потеря данных недопустима.Поэтому нужно мутить какой-то механизм миграций.Есть 2 пути. Разработка через миграции.То есть, когда-то создали некий baseline.sql с первоначальной структурой, а дальше ТОЛЬКО хуячишь файлы миграций с изменениями структуры и данных.Этот подход плох тем, что, во-первых, писать эти изменения надо вручную. В итоге я нихуя не вижу текущую полную структуру БД.Сейчас у меня вся структура в одном файлике, я целиком и полностью вижу все таблицы. Я я именно проектирую БД, а не пишу ссаные миграции.Тут бы нужен некий инстурмент, чтобы я все так же описывал структуру в файлике, а эта ютилита брала предыдущую версию файлика и текущую и выдавала автоматом запросы sql, позволяющие получить новую структуру.То есть, грубо говоря, нужен инструмент, который позволит автоматически создать sql-запросы, позволяющие из файла1 получить файл2.Тогда бы технически вся разработка была через миграции, но я бы не пердолился с написанием этих самых миграций (максимум, проверял бы их корректность), а занимался именно изменением одного файла.Короче, я хочу миграции, но не хочу вручную их писать.Какие могут быть решения?СУБД MySQL.
>>1199020> Тут бы нужен некий инстурмент, чтобы я все так же описывал структуру в файлике, а эта ютилита брала предыдущую версию файлика и текущую и выдавала автоматом запросы sql, позволяющие получить новую структуру.В жизни бы такую хуйню даже из любопытства не трогал. На проде с большим количеством данных вообще только вручную ебашить, если у тебя там не переименование столбцов.По теме ничего сказать не могу, из всех мокрописек вокруг СУБД использую только автоматические рисовалки схем — и то схемы удобнее в текстовом редакторе накидать.
>>1198850А что насчёт поиска?
>>1199081Посмотри EXPLAIN запроса и прикинь. Только данных побольше захуячь, потому что индексы СУБД на трех с половиной записях использовать даже не подумает.
>>1199020Если мсье проектант ленится сохранять промежуточные скрипты ddl, то пусть изволит проследовать сюда: https://dev.mysql.com/doc/workbench/en/wb-design-schema.html или пусть погуглит db schema compare tools.А еще пусть не выебывается и сохраняет скрипты для каждого вносимого изменения в упорядоченном виде, в системе хранения исходников.
>>1199179Спасибо, уже понял, что один хуй нужны скрипты миграций и так или иначе они необходимы, буду писать я их сам или генерить.Скачал этот workbench, уже обрадовался что можно быстро сгенерить запросы миграции, так эта хуйня откуда-то фантазирует несуществующие маня-ключи.Что это вообще такое?Таблица вообще не менялась.
Как так, почему это matte of style? Ведь при втором мы проверяем каждую строку и, если она подходит, добавляем в result set, потом проверяем весь result set на where. А при первом мы делаем декартово произведение, возможно получая огромнейшую таблицу 10кк*10кк, а потом проверяем это адовую огромную ебалу на where. Или нет? Планировщик запросов сам во всем разберется, и джойны надо делать только там, где без них ну вообще никак не обоитись? Но таких ситуаций нет.
>>1199493>Или нет?Да.
>>1199493Это просто разный синтаксис.Запросы дадут одинаковый результат.На то он и SQL - язык для менеджеров, чтобы можно было быстро таблички посмотреть без привлечения программистов, поэтому ты пишешь что ты хочешь получить, а не как. СУБД разберется.
Сап двачЕсть одна бд SQLite. Там есть таблица с заданиями и таблица человеков. Для каждого человека нужно хранить все задания которые он выполнил. Как лучше такое хранить? В поле со всеми ид заданий или в отдельной таблице с строками человек-выполненое задание?
>>1199946Насколько я понял, это работает так:Если у каждого задания может быть только 1 человек то это one-to-one или many-to-one relationship - хранишь указание на человека, которому дано задание, в таблице заданий. А если у каждого задания могут быть разные человеки, то это many-to-many relationship - делаешь таблицу типа person-task, где хранишь пары человек-задание.
Я решил сделать таблицу, где будут номера комнат, и время брони на них. Значит, для любой новой брони надо убедиться, что время бронирования не пересекается с предыдущим. Я решил, что проще всего это сделать проверкой того, что нижний предел брони больше любых верхних. А тут такое: никаких субзапросов в ограничении. И как мне обойти эту проблему?
>>1199229Бамп! Объясните, что за левые ключи на пиках?
>>1200331Похоже ты сделал одинаковые измнения с помощью гуи-тулзы и на среде разработки, и на боевой.Поскольку ты поленился назвать FK нормально, то тулза сгенерила имена по своему усмотрению в обоих случаях. А с точки зрения сравнения это разные FK, несмотря на одинаковое содержимое.
анон, прогоняю код-марофон, и затупил чет..как создать sqlite3 файл базы? сам на питоне. пипец. Обещаю в течении недели ответить на несколько вопросов.
>>1200500вопрос снят. Вот бывает же такое, нигде нет ответа, потому что сильно банально. Всего лишь надо вызвать коннект... но между прочим, не очевидно.
>>1200502Действительно.
>>1200522Там заморока. Ведь я помню, что все решается как-то незаметно. А через шел, терминал и проч. я точно не делал. всего-то:path_db = os.path.abspath("D:/db/anal_data.db")conn_anal = sqlite3.connect(path_db )c_anal = conn_anal.cursor()
>>1200552Просто признай молча, что ты либо ньюфаг, либо даун.
Впервые ITT, не бейте, лучше обоссыте. Пишу веб морской бой. Хочу хранить состояние поля на момент каждого хода в базе, как это лучше сделать? Поле 10х10 представил в виде массива из 100 элементов, чтобы не создавать двухмерного массива. Но как это в sql хранить? Создавать таблицу с сотней булевых полей и парой связывающих? Это разумно?Дайте советов мудрых.
>>1200674Бери постгрес и интовую матрицу используй. Там так можно.
Анон, поясни за всякие графические интерфейсы. Они нужны? Их используют серьезные базаделы? Или ненужная хуйня, кто не пишет в консольке тот пидор etc etc? А если нужная, то какую взять? Сейчас у меня взломанный navicat 12, вроде работает. Но мне не нравится, что он взломанный. А бесплатное ПО, что я пробовал до этого для MySQL было совсем не очень.
>>1200674>Создавать таблицу с сотней булевых полей и парой связывающих? Это разумно?Нет, не разумно.Предположим, тебе сказали сделать морской бой 1212 клеток. Твои действия? Колонки добавлять? А 100100? И как с этим жить потом?Второе - а зачем тебе вообще хранить ходы в виде массивов? Стартовое положение кораблей не меняется, достаточно сохранить его один раз, как-то так:ship_id number;game_id number PK;player_id number;ship_size number; --Количество клетокship_orientation number; --Признак того, как направлен корапь - по горизонтали (0) или по вертикали (1)ship_row number; --ряд, в котором находится первая клетка корабляship_col number; --колонка, в котором находится первая клетка корябляа ходы игроков хранить в такой примерно таблице: shoot_id number; -- Ид выстрелаgame_id number; -- Ид партииplayer_id number; -- Ид игрокаship_row_index number; -- Строка ship_col_index number; --Столбец ship_id number; --Id корабля в который попали, null - промахshoot_result number; --null промах; 0 - попадание; 1 - уничтожение.shoot_ts timestamp; --Момент выстрелаshoot_result кажется избыточным, но он поможет потом быстрее анализировать партии, чтобы не разворачивать всю историю для того чтобы выяснить, когда утопили.В такой структуре ты можешь хранить любые размеры полей, не обязательно квадратные, заметь. Можно делать поле 10000*10000 со стотрубными пароходами, например.А еще ты всегда легко воспроизведешь игру и так тебе гораздо легче анализировать ход игры - на каком ходу в среднем попадают в 4-х трубник? а в двухтрубник? Ну и прочую статистику собирать.Если ты захочешь корабли в форме фигур тетриса вдруг, то нужна будет еще одна табличка-детейл к положению кораблей, где будет описана их форма.Еще нужна табличка партий, где хранятся правила (размер поля, можно ли ставить корабли углами друг к другу и пр.)Если что непонятно - спрашивай.
>>1200770>Второе - а зачем тебе вообще хранить ходы в виде массивов? Стартовое положение кораблей не меняется, достаточно сохранить его один разЯ почти сразу после отправки поста спросил себя именно это. Но так далеко мысль не зашла, спасибо.
>>1200082Перед добавлением вызывай запрос, который проверит валидность.
>>1200569да, 4 года еще не о чем не говорит
Сап аноны, совсем новенький в базах данных и мне нужна ваша помощь. Хочу сделать 2 базы данных: в одной будут продукты, в другой рецепты. Как можно реализовать проверку продуктов для рецептов? Допустим, есть у меня в бд продуктов яблоко, банан и йогурт, а в бд рецептов фруктовый салат, который чтобы приготовить нужны как раз эти продукты. Как оформить бд рецптов, чтобы реализовать проверку?продуктов в рецепте может быть разное число: от 1 до 7 Пишу на c#+xamarin и кажись использовать буду SQLite, т.к для мобильного приложения
>>1201899Ну и зачем тебе две базы данных?
>>1201942А как предлагаешь?
>>1201899Я бы сделал это так: 1. Таблица Product с полями id (первичный ключ), name, ну и дальше какие тебе поля нужны2. Таблица Receipt с полями id, name и тд3. Таблица ReceiptsAndProducts с полями receiptId и productId, которые ссылаются на первичные ключи таблиц Receipt и Product.Это классическое many-to-many-отношение, которое делается через промежуточную таблицу.
Даун на связи.Может вы мне поможете. Как устроены данные типа ХАРКТЕРИСТИКА в табличных СУБД. Кароче мне надо сделать так клиентсерверный фул рест апи что бы у обїектов номенклатуры, контрагентов, физических лиц были настраиваемые характеристики. Или проще говоря свойства. Что бы к ебучей паре сапог можно было привязать цвет, тип материала, размер. А к типу номенклатуры ЕДА жирность, порция итд. И что бы блядь в сапогах или в сущности ДИРЕКТОР не было жирности. При этом надо что бы пользователь сам задавал какого типа будут данные, целочисленные, текстовые, дата, объекты. Пытаюсь представить связи, и ум за разум заходит. Как понял нужно создавать по табличке на каждый простой тип данных, типа ключ значение. И одну таблицу со связями к ключам других таблиц . Но не уверен. Думаю задача до меня решалась тысячу раз, но когда пытаюсь что то нагуглить натыкаюсь или на 1С или на что то совсем другое.Может кто то поделиться каким то учебным материалом как организовывать такие данные, или где посмотреть модель готовых решений?
>>1200715>кто не пишет в консольке тот пидор etc etcЭто только на дваче такую хуйню встретишь. Когда дело касается настоящей работы - речь о деньгах. Значит надо использовать наиболее быстрые и безопасные инструменты. Лаже системы контроля версий используют с гуи. Никому не надо что бы долбоеб выебывающийся как он ахуенно пишет в vim испоганил проект на который убили кучу денег и времени.
>>1201954Думаю он про то что ты не правильно термины используешь. Не базы данных, а таблицы. Все происходят в рамках одной базы.
>>1202199>неправильно Фикс.
>>1202196Гугли Entity-Attribute-Value, EAV
>>1202236Спасибо. Походу то что надо. А есть какие нибудь ъорошие книжки на тему? А то на русеке даже на википедии перевода нет. Вроде реаляционным базам столько лет, а нет.
>>1202239Английский учи, дятел.
>>1202239https://www.google.ru/search?q=сущность-атрибут-значениеКнижек, лекций и прочих материалов по РСУБД на русском очень много, посмотри тред, в постах есть названия хороших книг для новичков.И да, вот этот анон >>1202250 дело говорит, учи, без ангельского никак.
Где в постгрессе храняться метаданные таблиц которые сделал я? Вот в паблике мои таблицы, как получить всех имена и занести в отдельную таблицу?
Как выбрать всех users, у которых нет posts за этот месяц?пробовал через not in, но не получается(SELECT `posts`.* FROM `posts` WHERE (`posts`.`created_at` BETWEEN '2018-05-04 13:47:16' AND '2018-06-04 13:47:16')
>>1202199да, в терминах запутался
>>1201955Спасибо за ответ,анон
>>1202636http://sqlfiddle.com/#!9/c55ac6/2select u.user_id, u.user_namefrom user uwhere not exists ( select 1 from post p where p.user_id = u.user_id and p.created_at between sysdate() - interval 1 month and sysdate())
Когда я накидаю всяких grant'ов в постргесе, я могу потом через \dp узнать, какую таблицу кто может трогать и как. А как сделать наоборот? Узнать, какие таблицы может трогать каждая роль?
Стоит ли вкатываться в БД с изучения пикрил?
>>1203424Зачем же тебе вкатываться в БД?
>>1203427Не знаю, может в будущем пригодится. Я тут наткнулся на odbc в дрисятке, оказывается можно хоть xls, хоть txt использовать как источник БД. PHP умеет работать с odbc, чутка поигрался - понравилось. Вот думаю познакомиться с sql подробнее.
Анон, смотри какая хуйня. По дефолту в Постргресе у публичной роли есть привилегия на подключение к любой бд. При этом, подключившись, она может видеть все таблицы. Можно ли это как-то исправить, и делают ли так в продакшене? Это же полный пиздец, понятно, что доступа к различным таблицам по дефолту нет, и их надо выдавать через GRANT, но сам факт того, что вообще любая роль с login привилегией может подключаться к вообще любой базе и увидеть вообще все таблицы, включая all_my_fancy_passwords, или salaries_table_that_we_use_to_pay_our_employees мне кажется охуевшим. Тем более, что через \d они и структуру этих таблиц узнать могут. Или это нормально, и я паранойю? В том же MySQL например все наоборот - пока прав не дадут вообще ничего не увидишь.
>>1203551Только к схеме паблик.Ты дебил там держать важные таблицы? Там обычно держат справочники общие и прочее.Пароли храни с солью, благо постгресс теперь умеет. А теперь вопрос. Вчера за вечер сдедал задания на хакер-ранке, скл-ех пройден. Есть ли что-то такое же на pl/sql например?
>>1203949>Только к схеме паблик.В документации об этом не написано. Попробую сегодня схемы потеребить.>Пароли храни с сольюЭто что значит? При создании бд через initdb указал, чтобы хранил пароли с scram-sha 256. >хакер-ранкеКстати, а это что за сайт? А sql вроде ещё на codewars был.
>>1204173В доках это было, а ты что думал про схему public? Она же тебе сразу говорит для чего она.Да, у тебя соль включена.Ты чувствуешь разницу между pl/sql и sql?
>>1204482Да вряд ли для pl/sql будет такое.Но если найдешь - отпиши, интересно будет глянуть.
Продолжаю читать, как вам моя account таблица? Нормально, что нигде нет not null constraint т.к. регэксовые ограничения и так горантируют, что колонны не будут пустыми? Я так же не нашел способ проверить имя без регулярок, т.к. не нашел какой-нибудь isalpha() функции как в том же Питоне на проверку того, что строка состоит только из буков.
>>1204486Я нашел quiz от Оракла. Но ты наверно про него знаешь
Анон, вот как это решить? Почему я не могу в where clause ссылаться на ту же таблицу, из которой я беру все значения ну, которая from_item? Я понимаю, что могу свой подзапрос на пк с минимумом ОЗУ выделить в with clause, но в справке по теме CTE не указаны, значит можно обойтись без них. К тому же можно вместо noram заново написать весь этот подзапрос на пк без ОЗУ. Но это же ебанина какая-то. В общем, как сделать хорошо и правильно?Кстати, иннер джойны использовать только если я Питонист и explict better than implict? Второй пик именно про это?
>>1205106Ебать, вот только написал, сразу же пришла идея выбрать одновременно и минимальную ОЗУ, и максимальную скорость для пк с минимальной памятью, а потом сджойнить со всеми пк. И никаких подзапросов ебаных. Что скажешь анон, так нормально?
Почему при указании типа numeric я могу указать только precision, забив на scale, о не наоборот? Мне нужно, чтобы числа с точностью до 2х цифр с запятой, и я не ебу, сколько цифр они будут занимать вообще. Может там будет 20.33, может будет 935714.84, я не знаю. И что мне делать? numeric(100000000000000000000000000000000, 2) ?
>>1205644Тупица ты ебаная, используй float/double/decimal.
>>1205663float/double хранят n знаков после запятой, а мне нужно именно 2, а decimal это синоним numeric, тупица ебаная
>>1205959Блядь, скотина, открой мануал к своей БД и чекни типы данных, которые я привел выше, они как раз позволяют делать то, что тебе нужно.
Пишу условноЕсть две таблицы таблицыВ первой Nane ID1 ID2Петя 1 2Вася 1 1 Дима 2 2Настя 2 2Во второй ID2 X1 102 20Как получить сумму X по каждому ID1, то есть, что бы ID1(1) = 20+10, ID1(2)=20+20?
>>1207054Джойнишь к первой таблице вторую по ID2, группируешь по ID1, суммируешь Х, отдаешь мне свои 300кк.Смотрите что нашел на sqlex, анализатор блять, 30 заданий прорешал, потом только заметил. Есть вопросы - есть ли то же самое в том же Постгресе? Только в MySQL видел время на запрос после каждого запроса, но ничего такого детального. То, что там в stmtext это что-то типа байткода Питона? Нет, я понимаю, что sql не компилируется\интерпретируется, я про то, что это какой-то второй более глубокий\сложный язык под капотом, который выплевывает оптимайзер в ответ на мой запрос так же как байткод питона выплевывает какая-то дрочильня пот капотом оного в ответ на данный интерпретатору код? Нужно ли мне прямо сейчас задрачивать эту оптимизацию и этот язык утверждений, если я хочу пойти джуном уже куда-то? Или это high level и мне лучше вернуться к этому после того, как стану миддлом, заработаю 300кк, и выучу весь матан включая реляционную алгебру?
>>1207521>есть ли то же самое в том же Постгресе?В любой современной СУБД есть.Почитай что такое план запроса и что и как СУБД вообще делает с момента запуска скрипта до момента выдачи результата. Это будет полезно в любом случае. Обязательно внимательно прочитай и запомни основные моменты про bind-переменные - это архиполезно.Что касается анализа плана запроса, то для нужно уметь его читать и знать, какие типы соединений таблиц поддерживает твоя СУБД и в чем их отличия по производительности, видеть, где используется или не используется индекс и какой. Когда пишешь запросики - обязательно смотри их план выполнения, заведи себе такую привычку. Можешь добавлять и убирать индексы, менять условия и сразу смотреть, как меняется план.Очень наглядно все.
Есть ли какой-нибудь сайт с упражнениями на SQL запросы, от простого к сложному? Или что-нибудь типа codewars только для SQL-холоповгоспод?
Т.е. чтобы уже были данные, интерфейс и т.д. Тебя просят взять такие-то данные, возможно с ограничениями, и ты хуяришь запрос
>>1207981sql-ex.rucodefights.com --> arcade --> sqlМожет анон еще подскажет
Думаю что пришел с классической проблемой.В общем есть 1 селект, и нужно получается для корректной пагинации узнать количество всего что он выдает. Но прикол в том, что селект большой и с кучей джойнов, а еще в нем много фильтров задействовано, на каждом столбике в таблице на сайте есть условный фильтр и сортировка и всё это падает в where'ы.Пока что этот селект прогоняется в цикле из двух итераций.На первой итерации собирается весь поиск и прогоняется селект с целью подсчета строк.На второй итерации добавляются уже лимит и оффсет для получения собственно самих строк.Как разрешить эту задачу и избавиться от дублирования запроса в базу в этой ситуации?
>>1208128Курсор?
>>1208128можешь считать общее количество записей в отдельную колонку аналитической функцией, если твоя субд позволяеттипа count(*) over () cnt
>>1207980hackerrank
>>1207980http://sql-ex.ru/Правда я там только до 8 упражнения дошел, считаю нужно больше задач на самые основы, что бы надрочиться нубам типа меня, а то после изичной хуйни сразу дают джойн и груп бай и сижу не могу постичь до сих пор что там как правильно решать.
>>1208102>>1208997>sql-ex.ruОтличный сайт, чаю.Поставил первый раз сразу рейтинговые и охуел от пикрила.>Правда я там только до 8 упражнения дошел, считаю нужно больше задач на самые основы, что бы надрочиться нубам типа меня, а то после изичной хуйни сразу дают джойн и груп байДошел до 9, так и не понял где там можно было GROUP BY использовать.Щитаю самые основы и вообще SQL должен сначала сам изучить, по крайней мере знать какие-есть возможности у языка в общем, а сайт чисто для практики и "набивания руки".Все таки туториалов по SQL в интернете вагон, в отличии от сайтов с практикой, так лучше пускай сосредотачиваются на ней, а не распылаются дополнительно на уроки. Те же примитивные упражнения есть на W3 или как-его там, но их очень быстро заебывает делать, если они совсем простецкие когда ты по сути пишешь по 20 раз один и тот же запрос только меняешь название столбцов и таблиц.
Хотя я сам соснул на 14 с GROUP BY и HAVING, помогите.
>>1207808>Почитай что такое план запроса и что и как СУБД вообще делает с момента запуска скрипта до момента выдачи результата. Это будет полезно в любом случае. Обязательно внимательно прочитай и запомни основные моменты про bind-переменные - это архиполезно.Есть советы, что почитать? Какие книги? Что-то типа 'Definitive guide to fast as fuck sql queries 300kk/ns'?
>>1209369Выведи ещё и тип продуктая не издеваюсь, просто сделай это, не удаляя ничего
>>1210156Так нельзя, в group by можно выводить только столбцы по которым идет группировка или агрегирующие функции.Я уже нарешал за 30+ упражнений, но это так и не осилил.
>>1210168Я тебе говорю, что можно сделать так, как я сказал. Я так сделал, и на форуме многие так сделали. Сиди и думай. Или не думай, мне то похуй.
>>1210174Ну не тролль, во-первых я конечно это попробовал еще на этапе решения своими силами, даже зная что-так нельзя, но мало-ли, вдруг благодаря HAVING COUNT(Distinct P.type) = 1 машина выводит возможность использовать атрибут в селект. Потому что, например, что-то похожее можно делать при использовании WHERE = (Query) если результат Query одно значение.Но нет, так нельзя.Не знаю что ты там пробовал, на форуме этой задачи я вообще не нашел.
>>1210371Не троллю, ты просто тугой. Я не говорю тебе вывести просто колонну type, конечно это не сработает. Я говорю вывести тип продукта. А как это сделать при такой группировке собственно и есть само задание. Хотя конечно можно и по-другому сделать, но будет больше текста и cost плана выполнения.Под форумом я имел в виду именно топик этой задачи, который становиться доступным после ее решения - кнопка 'обсуждение упражнения на форуме'
>>1210453>ты просто тугой.Лол, есть немного. Теперь дошло. Спасибо за наводку.
>>1210152Бамп бамп бамп.Хуле ваш тред самый тухлый из всех?
Народ, вкатываюсь в БД, с нуля. Скачал MySQL + pgAdmin 4 На сайте написано "pgAdmin is available for Windows™ 7 (desktop) or 2008R2 (server) and above. The packages below include both the Desktop Runtime and Web Application"Где он в десктоп рантайм? Почему блять у меня только ебучий веб. Неудобно пиздец, хочу обычное приложение. Помогите плс.
>>1212763Mysql workbench скачай и подключайся
>>1212448Bump bump bumpWhy the fuck is your thread the slowest of all?
>>1214015Количество постов в треде видишь? То-то же.
>>1214355Ну и что, это тематика, тут полтора анона, и 1.4 его сидит в нюфаг треде. Здесь небампанные треды годами живут.
ребята, каким необходимым минимальным уровнем знаний нужно обладать, что бы получить предложение о работе связанной с Базами Данных? Хочу вкатиться, запросы писать умею, но не сложные. Шапки у треда нет, поэтому был бы рад вашим советам.
>>1167018 (OP)привет всем задам тут неработают кнопки ине отображаются данные что делатьhttps://pastebin.com/zs3pvjsq
Кто-нибудь изучал SQL по книге "Learning SQL" от Alan Beaulieu? Как вам удалось подсоединить файл с примерами "LearningSQLExample.sql"? Мне выдает кучу ошибок, версия MySQL 5.7, шестой версии на офф сайте не существует.
>>1217093слишком дохуя.Знание архитектуры и работы бд, как таковой.Расширенный sql. ( pl/pg/t)Начальные навыки администрирования бд.Надрочка на какую-то технологию бд тоже норм.Обычно работа с бд, как основа, это проектирование, систематизирование бд. То есть ты должен понять, как работать с бд в качестве чистого продукта( полный цикл поддержки), знание объектных методов и глубокие понимания абстракции данных.Плюс тебе надо заточить что-то, что поможет писать API, GUI.У меня C++/ Pl/SQL. Уже пару лет горбачусь архитектором, и знаешь, иногда приходиться читать документацию самой бд. Многие книги по тонким моментам не доступны в интернете и приходиться платить 75 баксов( со стоимостью), чтобы тебе томик Бурлесона доставили в Московию.
>>1217272анон, можно с тобой контактками обменяться,с целью дальнейшего общения? Там телега, почта или ещё чего. Просто я на полном серьёзе хочу вкатываться в базы и уже много чего учу и прохожу курсы. Был бы благодарен тебе за такую возможность.
>>1217226Потому что ты какую-то хуйню делаешь, по ошибкам кажется, что ты ему html документ скормить пытаешься.Аноны, а помогите теперь вы мне с 118 задачей sqlex.Вот ее текст, мое решение и результат, а так же первое решение, что я нашел по гуглу и ctrl-c ctrl-v, чтобы проверить, работает ли.pastebin.com/MPt8U3J1pastebin.com/s9weVUQDЯ не могу разобраться в коде, который дает правильный ответ. Он невероятно большой. Но почему мое решение не катит? Поясняю: я беру каждый год и прибавляю ему от 0 до 8 лет. Насколько я понял из википедии, год високосный если делится на 400, или делится на 4 но не на 100. Так что среди года, и восьми последующих точно будет хотя бы один високосный. Потом я беру 6 первых дней апреля этого года, среди которых точно будет понедельник, и прибавляю к этому понедельнику 1 день. Беру битву, дату, и минимальный вторник апреля високосного года (ведь беру 8 лет подряд, может получится больше одной такой даты). И че не так то, два дня с этим ебусь
>>1217709СУКАБЛЯТЬ накатал эту огромную пасту, от безысходности решил просто так блять проверить не первые 6, а первые 7 дней апреля, и все заработало нахуй. Да пошло все блять в пизду
>>1217553humangdman на рамблере
Сап, аноны.В какой среде можно развернуть пикрил и сделать пару команд?хочу потренироваться по этим вопросам самhttps://www.jitbit.com/news/181-jitbits-sql-interview-questions/
>>1218166скачал MySQL с Wokbench. Там ты можешь развернуть такую бд, а потом построить схемку.У Oracle + TOAD такое же есть, да и вроде в стандартных тулзах оракла есть.
>>1218179>MySQL с Wokbenchспасибо.попробую.Мне тут советовали SQLite Studio и OpenServerСам еще думах ХАМПП попробовать. Решит ли оно задачи?
>>1167018 (OP)Посоветуйте литературу для совсем ньюфага по бз
>>1218189дунаева попробуй. тонкая.только там примеры на древней мs SQL, но ты установи что-то типа mysql или около того.или sololearn на телефон установи. там курс sql есть. весьма хорошо для нюфань. потом уже можно книжки от дядек читать и документацию по Ораклу или чему там надо.мимо ньюфаг после курса сололёрн
может кто объяснить, что такое local и remote представления, чем они отличаются?мимо даун начал познавать foxpro
Умоляю перекатите.
>>1218236> начал познавать foxproГде мой 1998, лол
Расскажите, как предотвратить добавление уже существующей записи в БД?Какие-то там индексы делать, или нет, не ебу вообще. В моем DB Browser ничего дельного, по идее, кроме каких то индексов нет.
>>1218182попробуй. Хуже не будет.
>>1218611Через 20 минут экзамен по этой залупе. Люблю свою шарагу
>>1218623сделай колонку со значениями unique.ALTER TABLE ALTER COLUMN
>>1218611видел эту бд в продакшене пару лет назад.
Есть кто решил 127 задачу с sql-ex? Я уже заебался, никак не проходит проверочную базу.
>>1167018 (OP)Сделал в постгре полю id тип данных SERIAL.Если при инсерте в поле с UNIQUE указать уже существующее значение, то произойдет ошибка (ожидаемое поведение), но этот id при верных данных уже будет недоступен, следующая запись получит id + 1, получиться последовательность с дыркой. Как это фиксить?
>>1218709В полку оплота российской ИТ индустрии прибыло. Блядь, что же там за преподавательский состав-то? Хорошо хоть не filemaker или ms access.>>1218711Я в кровавом ынтерпрайзе плаваю, окромя filemaker/mysql/постгре/оракл нихуя в жизни не видел.
>>1209297Прости что долго не отвечал - тупо на работу устроился и времени нету, первые 3 недели - чистый ад в плане налаживания режима и прочей мозговой нагрузки.Я мог ошибаться поэтому с тем на чем там завис.В общем первый пикрил - то что у меня пройдено.И соответственно попробовал сейчас решить 8е и вот такой вот посос.
>>1219047С первым пиком подобсрался, лол.
как жаль что прогерские треды такие медленные, в то время как какая-нибудь параша в вг или в /b перекатываются по разщу в денб
Анон, ну как решить 127, я уже не знаю че делать с этой хуйней. Второй день ебусь. После кучи проверок заметил подсказку о том, что cd это строка. И нет я не забыл про это, ебучая подсказка, но ведь и строки '12x' и '13x' будут сравниваться так же, как и числа 12 и 13 т.к. '2' как символ меньше '3'. Но окей блять, может у них там есть строки '12a' и '12b', а мне важно только число, сделал ебаучую рекурсивную CTE cds0 чтобы это число вытащить.. И все равно нихуя не работает. Добавил уже даже ебанутые проверки на p.model = 'fuck 127' потому что вдруг наврали и там есть одинаковые модели для разных типов ну, пк с моделью 123 и принтер с моделью 123, попробовал также и avg() и sum()/count() для требования "При расчёте среднего отсутствующие цены не учитывать.".Ну не работает блять вообще ничего и я не знаю что делать, бляяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя
>>1219603А почему у тебя в одном месте тип 'PC', а в другом 'pc'?И с CTE явно ты переусложнил, наверняка там просто хватит дополнить слева строку нулями до длины строки в 10 символов, скажем.
>>1219603>>1219635Ничего себе вы монстры, мб вы скажете что не так с моим 8 упражнением?
Пиздец, что вы дрочите на скл-ех? Меня эта хуйня вообще бан выдала почему-то года два назад, ну я и послал ее нахуй.Мимо ораклист. Пс. Кто-то сдавал экзамен на оракл программинг про?
>>1219635>А почему у тебя в одном месте тип 'PC', а в другом 'pc'?Потому, что я уже очень заебался с этой задачей. Но это и не важно, текст в sql case insensitive все равно.>дополнить слева строку нулями до длины строки в 10 символовИ как бы это помогло? Было бы например две скорости: первая - '20x', вторая - '1хуйпизда'. И хуйпизда бы тогда выиграла т.к. на втором месте у первой был бы ещё 0, а у второй уже 1. Может и в этом ошибка, это же ебаный varchar, откуда мне знать, что у них там записано. 'fast'? 'reallyfast'? 'sonicthehedgehoc'? Ты сам то решил 127ю?>>1219675Во-первых если у тебя except то distinct не нужен т.к. except сам уберет все дубликаты. Во-вторых в таблице product есть модели, не указанные ни в одной из таблиц printer, pc, laptop.
>>1218710Тоже думал насчет этого, но я помню, что как-то отсекал подобное на входе, когда посылался insert
>>1219745Ну решил, ничего хитрого там нет, делается обычным avg, рекурсия не нужна, джойны по типу тоже и вообще дело не в скорости CD - она задана в виде 2x, 12x (скорость и в конце икс, все элементарно сравнивается).Ошибка во втором блоке, нужно дополнительно проверять что prs.price is not null и prss.price is not null
>>1167018 (OP)Начал читать "Введение в системы баз данных" Дж. Дейта, чтобы понять теорию баз данных. Вроде все правильно, но как-то муторно. Есть ли книги как-то по-лучше или нужно дотерпеть и дочитать.
>>1220181ААААААААААААААААААААААААААААБЛЯЯЯЯЯЯЯЯ Я ПРОСТО ОРУЕщё и подсказка эта ебаная про cd, только о них и думал, а оказывается все из-за цен. Пиздец. Спасибо.
Такой к вам вопрос: Есть две вставки и две точки сохранения.INSERT INTO plsqll01_purchase VALUES ('Small Widget1, I, 44-JUL-03', 'CA');SAVEPOINT a;INSERT INTO pls'qll01_purchase VALUES ('Medium Wodget', 75, 44-JUL-03', 'BB');SAVEPOINT sp_2;Если я сделаю ROLLBACK a, то сохранится ли первая вставка? Проверить возможности, увы, нет
>>1220296Попробуй этоhttps://www.ozon.ru/context/detail/id/139953550/
>>1220745pl sql, если что.
Смотрите, что нашёлhttps://www.ozon.ru/context/detail/id/140212979/
>>1220745>Если я сделаю ROLLBACK a, то сохранится ли первая вставка? У тебя откатится вторая вставка, а первая пока что так и не будет зафиксирована, т.е. она будет видна только из-под этой сессии. Чтобы 100% сохранилась, нужен коммит.
>>1220296Попробуй Мартин Грубер Понимание SQL.
>>1220774Спасибо
Перекот, аноны. https://2ch.hk/pr/res/1167018.html#1218623
Мы можем создать два разных индекса (например битовый и б-дерева) на одну таблицу? Ускорит ли это как-то работу?
Уёбки, где перекат?
>>1219887триггер ставишь.и
>>1221159не дописал, кароче Merge можно юзать.
>>1218179Спасибо тебе анон за хороший совет
Ну рибят ну сделайте перекат
>>1221159Какой триггер? Я "работаю" через DB. Browser, там нихера подобного нет, только индексы какие-то.
>>1218179А для постгри что-то подобное есть?
>>1221274Есть navicat для всех, но там или платить или пиратить
В чем прикол? Вот во-первых, надо для каждой 5 записи найти среднее, но всего записей если я селектну max(n) 26. Т.е. каждых пятых записей должно быть пять, как у меня. А их три. И по чему надо искать среднюю цену? По типу модели? Ну тогда что за хуйня с принтерами, у которых 2 разных средних цены? Или по производителю? Непонятно в общем, мдааааааааа
Тяжело ли самому писать поисковый движок для сайта по продажам? Я так понимаю если я допустим хочу сделать веб-сайт интернет магазин то придется полностью писать платформу под него? Кто нибудь занимался, собирали ли тиму? Сложно ли делать одному платформу с базой данных итд?
>>1221382Спасибо за такоемимокрок
>>1218179Я так понимаю вручную никто базы данных не заполняет, все пишут интерфейсы и алгоритмы чтобы уже все готово было?
>>1221832Да, ты прав. Руками добавляют только редкие и внутренние таблицы "продукта"
>>1221462О, а эту я оказывается давно решал.Читай внимательно условие. С какого хуя ты решил, что записей 26? Посмотри сколько записей в табличке product.
>>1221986Ах ехидная дата база. Теперь понятно, по чему искать среднее. Спасибо. не, ну это пиздец, никогда не угадаешь, что они там наделалиТеперь можно пойти убить себя нахуй на рейтинговом
>>1221832>>1221940Еще при импорте, массовых загрузках могут вручную заполняться таблицы.
Анон, у меня есть таблица, допустим, товаров, и таблица категорий. Связаны они через пивот-таблицу (у одного товара может быть много категорий). В той же пивот-таблице содержится столбец с сортировкой (т.е. в разных категориях одни товары могут быть отсортированы по-разному). Плюс к тому у товаров есть какой-то столбец (допустим, "рекомендую" или ещё один сортировочный столбец). Вопрос: как мне выбрать первые сто товаров с сортировкой и по столбцу из пивот-таблицы, и из "основной" товарной (причем основная в приоритете), но при этом избежать сек скана?
Перекатhttps://2ch.hk/pr/res/1222346.htmlhttps://2ch.hk/pr/res/1222346.htmlhttps://2ch.hk/pr/res/1222346.html
Установил mariadb с помощью sudo apt-get install mariadb-server mariadb-client. Root пароль задать не предложили. Задал с помощь скрипта mysql_secure_installation. Вроде всё запускается. Но после перезагрузки субд шлет нахуй(первый пик).Снёс и поставил снова. Пока всё работало(до перезагрузки) сделал так:mysql -u rootMariaDB [(none)]> use mysql;Database changedMariaDB [mysql]> update user set password=PASSWORD("my-new-cool-password") where User='root';MariaDB [mysql]> flush privileges;MariaDB [mysql]> update user set plugin='' where User='root';MariaDB [mysql]> quit;Вроде как сначала всё заработало после ребута. А может мне и показалось, т.к я отошёл покушать на полчаса. Вернулся и всё опять поломалось.Попробовал сделать так - http://dedicatesupport.com/content/sbros-parolya-polzovatelya-root-v-mysqlОдин хер всё ломается после перезагрузки.В чем тут дело?
>>1186288двачую
>>1186288>>1224159Похоже на:http://dbdsgnr.appspot.com/либо https://www.dbdesigner.net/
гайз, хелпа нужна. Есть допустим запрос.select from tablewhere 1=1and field in (value1, value2, value3);Можно ли как-нибудь заебенить:set @variable = (value1, value2, value3);select from tablewhere 1=1and field in @variable;????
>>1241965Да, почти.declare @variable as table (value int);insert into @variable (value)select 1 union all select 2 union all select 5select from tablewhere 1=1and field in (select value from @variable)
>>1242920дело в том, что количество вэлью может меяться, Я так понял то, что я хочу в mysql нельзя сделать(
>>1242950Напиши функцию, которая парсит строку и превращает ее в table expression, который и будет возвращать. Используй это функцию в запросе.