Этого треда уже нет.
Это копия, сохраненная 28 июля 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Шардинговый реплицируемый баз данных тред. Бесконечный перекат Edition v1.1 /sql/ 1964573 В конец треда | Веб
Новый баз данных тред, теперь с альфа-версией шапки.

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

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

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

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

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

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

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

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

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

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

Предыдущий тред тонет здесь: >>1869616 (OP) (OP)
2 1964733
>>1964573 (OP)
Как файлы-то хранить, ммм?!
изображение.png77 Кб, 521x500
3 1964812
>>1964733
В hadoop
4 1965152
Если я учу JS и потом хочу вкатиться в Ноду, то стоит ли изучать базы данных? Если да, то как?
5 1965160
>>1965152
ВСЕ бекендеры должны знать базы данных. Иначе как эти самые данные хранить, в файлах с жсоном что ли?
6 1965170
>>1965160
Понял. Пару дней Кантора читаю, так что пока не в курсе дела.

А как вкатываться в базы данных? Допустим, я хочу научиться писать парсеры с помощью Ноды.
7 1965266
Сап, аноны.
Посоветуйте что-нибудь по изучению PL/SQL, желательно от простого к сложному, начиная с уровня "полный даун". В любом виде - литература, видеоуроки, циклы статей. Попробовал начать с Прибыла, но там какой-то невнятный смазанный старт: то какая-то бесполезная хуита, то сразу такой уровень материала, что уже теряешься. Сложилось впечатление что он не совсем для новичков.
8 1965274
Мужики, уже две недели ебусь с написанием своей недобд. Палю годноту, если кто-то тоже хочет начать писать\разбираться в архитектуре бд:
1. https://cstack.github.io/db_tutorial/ -- имхо маст рид (и маст код), челик объясняет с кодом как написать свой неполноценный клон sqllite, единственная проблема - серия статей слишком быстро заканчивается (собсна, дальше btree с фиксированной схемой автор не пошел)
2. DATABASE SYSTEMS The Complete Book -- охуенный справочник для теории любой глубины и на любую тему. Судя по тому, что пишут на реддите, так же является лучшим учебником по теме, но я не могу представить как это можно осилить блять.
3. Database Design and Implementation -- по сути очень схоже с первым линком, только пишется кастомная база и практически полноценная. Единственный минус (и критичный для меня) - используется жава и jdbc.

Если кто еще натыкался на схожий материал -- тоже поделитесь.
9 1965556
Решил я тут подтянуть Postgresql, начал заниматься по книге PostgreSQL. Основы языка SQL by Евгений Моргунов. И вроде все норм шло, но тут проблемы возникли когда началась робота с готовой базой данных по книге.
Так вот работаю на винде 10.
Прописываю команды
psql -f demo-small.sql -U postgres
psql -d demo -U postgres
База сама по себе работает, запросы обрабатывает. Но не могу менять некоторые таблицы, выдает ошибку, что Name не является таблицей. Хотя через команду \d Name можно глянуть поля и через селект инфу.
И после закрытия базы данных и перегрузки пк все изменения проделанные с базой не сохраняются.
10 1965561
>>1965556
Напиши, как ты пытаешься менять таблицы.
11 1965568
>>1965561
Ну например
ALTER TABLE airports
ALTER COLUMN longitude SET DATA TYPE numeric( 5,2 ),
ALTER COLUMN latitude SET DATA TYPE numeric( 5,2 );
ОШИБКА: "airports" - не таблиця, складений тип или внешняя таблица

В самой базе есть 13 таблиц, добавлял новые и меняет некоторые. А некоторые не хочет менять. Ну и не сохранят прогресс после закрытия. Добавлял 14 таблицу. Если просто закрыть консоль проблем нет, если перегрузить комп и заново прописать команды, то прогресс пропадет. Я
12 1965577
>>1965568
Погуглил и понял в чем проблема у тебя.
Короче, я не знаю почему, но у Моргунова неправильно описано как пользоваться демонстрационной бд. Я хз почему. Пиши вот эти команды.

$ sudo su - postgres
$ wget https://edu.postgrespro.ru/demo-small.zip
$ zcat demo-small.zip | psql

Затем логинься через
$ sudo -u postgres psql
\d demo
13 1965587
>>1965577
Это я так понял команды линукса. 1 для установки? 2 качает базу данных? 3 розархивовывает ее?
У него команды для винды в книги, они работают. В саму базу данных загружает и можно юзать ее. Но хз как будто она битая или хз.
Если я поставлю сигвин или баш на винду они будут работать? Хотя я и так скачал ее и запускаю подобными командами.

На винде
psql -f demo-small.sql -U postgres
этой загружает базу
psql -d demo -U postgres
этой логиниться в базу.
изображение.png26 Кб, 963x513
14 1965589
Я батники создал для удобства, вот после 2 команд все работает. Но нельзя менять некоторые из таблиц и не сохраняет прогрес.
15 1965602
>>1965589
Проверь права или попробуй название таблицы со схемой указывать. Вобще кончай дрочить консоль, поставь IDEdata grip мозга жида например
16 1965603
>>1965568
Додик у тебя воздушный порт не таблица, а представление.
изображение.png35 Кб, 577x569
17 1965706
В чём суть этого ограничения? Зачем нужно выделять создание функции в отдельный файл (сообщение с намёком на это появляется, если исправить выделенную ошибку), а не создать её вместе с таблицами? Хуйня же какая-то нелогичная.
Или я что-то не так делаю?
18 1965708
>>1965706
t-sql, если что
19 1965730
>>1965587

>этой загружает базу


Судя по всему оно не загружает базу, а просто использует то что находит внутри sql-скрипта, и может загружает базу во внутренний кэш или сорт оф, потому ты и не можешь ничего изменять в ней.
20 1965732
>>1965706
Ладно, понял, что нужно заюзать GO перед созданием функции. Хоть и не понятно, а почему тогда 2 таблицы создать можно разом.
21 1965735
>>1965603
Там именно таблица, а не представление.
другой анон
22 1965740
>>1965735
Пизжу, оно действительно представление, кек.
23 1965838
Помогите аноны, не уверен стоит ли создавать отдельный тред для этого.
Начал неспешно вкатываться в бд, но не до конца понимаю что и как. Задача примерно следующая - создать нечто, куда можно будет вводить ассортимент пришедших ноутов, просматривать весь ассортимент и возможность распечатать гарантию. Что мне нужно для достижения этого?
24 1965905
>>1965838
То есть тебе нужен интерфейс пользователя. Можешь сделать в виде простенького сайта, для этого нужно знать html/css (можно обойтись без JS) и какой-нибудь язык для бекенда с веб-фреймворком для него. Ну или в зависимости от требований в виде десктопной программы, там либо C++/Qt, либо C#, либо JS/Electron. И уже оттуда вызывай SQL-запросы.
25 1965982
>>1964573 (OP)
Решил угореть по хардкору и вкатится в суперБД Access. Посоветуйте годной литературы, чтобы я стал офисным Б-гом данных? Уже приобрел и поставил на полку "Системы баз данных. Полный курс", но чот приуныл от толщины мануала и поставил его пока на полку.
26 1965986
>>1965982

> 2021


> Файл-серверные базы данных

27 1966097
>>1965905
Спасибо.
Подскажи, за пару недель изучения можно написать программу, чтобы она работала и что стоит выбрать из предложенного тобой? Или же тут дело вкуса?
28 1966101
>>1965905
Бэкенд, фреймвойрк, КуТэ, хуетэ....
Access+VBA!!!!!
29 1966130
>>1966097
Ну тебе же написали. Что ты делать то собрался? Сайтик?
30 1966143
>>1966130
В том-то и дело, что я сейчас буквально пальцем в небо тыкаю.
С html/css немного знаком, а с остальным - нет. Хотел бы попробовать десктопную программу оформить, но во времени я ограничен немного. Если есть шанс начать учить язык и на нем уже написать программу, то я бы выбрал язык.
31 1966173
>>1966143
Ну просто ты с нестандартной позиции танцуешь. Есть абстрактная цель - тебе надо ее решить. Обычно либо конкретная цель, либо конкретный инструмент. Просто в базу потыкать можно и без ЯП. Если тебе надо десктоп - копай в сторону плюсов. Если веб без задротства - жс или пых. Если прям сервер написать хочешь - шарп и джава. В общем choose you fighter. Нужно сначала понять чем заниматься хочешь.
изображение.png166 Кб, 300x200
32 1966359
>>1966173
он хочет курсовую\дипломную написать
33 1966427
Поясните за postgresql, ставлю его, а как пароль то ввести? В установщике его нигде не запрашивают. После выбора места только 2 кадра и дальше установка. Что делать то с этим?
34 1966438
>>1966427
я поставил другую версию
35 1966576
>>1966427
alter user postgres set password '123'
36 1967684
Есть записи в таблице, нужно их последовательно апдейтить по N штук за раз, а потом в конце начинать сначала. Как бы это организовать?
37 1967738
>>1967684
Limit?
38 1967752
>>1967738
Не за один подход, а по расписанию.
39 1967781
>>1964573 (OP)
Шапка пизже предыдущей, можешь не переделывать
40 1968130
>>1967752
Записывать куда-нить ID на котором остановился, потом натравливаешь процедуру которая апдейтит кусками и обновляет ID по завершению.
41 1968160
>>1966427
Ты тралишь? Подними докер, а в нем постгре
42 1969634
Сап, аноны. Есть вопрос: существует что-то между sql базами и nosql базами, поясню: чтобы можно было задать статичную схему с типами данных (для оптимального хранения) и иметь возможность горизонтально масштабироваться как с nosql базами. Меня просто немного пугает оверхед от использования json и такого неструктурированного хранения данных.
43 1969646
>>1969634
Cockroachdb не то?
Cassandra?
44 1970150
>>1969646
спасибо, почитаю подробнее про них. На первый взгляд Cassandra понравилась
Стикер191 Кб, 281x440
45 1970378
>>1969634

> нужна масштабируемость как в nosql


> пугает что в nosql не сэкономили байты


> якобы в sql байты сэкономили

46 1970381
>>1964733
В файловой системе.
47 1970383
>>1965274
А зачем? Если у тебя нет идей что можно сделать принципиально лучше, зачем делать клоны того что уже есть?
48 1970386
>>1970383
Все, у кого такие идеи были, сначала писали свои недоклоны, чтобы хотя бы разобраться в разработке СУБД на практике, инфа сотка.
49 1970398
>>1970386
Как по мне, достаточно просто почитать про то как оно устроено в существующих СУБД. Писать своё очень долго. Ну разве что какое-нибудь keyvalue можно асилить. Там просто нет серебряной пули для всего, джойны будут тормозить, дедлоки будут случаться, транзакции будут не до конца честными, репликация будет упираться в CAP/PACELC-теоремы.
50 1970400
>>1970398
Если хочется попробовать for fun, почему нет?
Стикер127 Кб, 400x261
51 1970402
>>1970400
Ну попробуй, я ж не против.
52 1970804
>>1970383
>>1970398
Я писал в предыдущем треде, что у меня скоро будет очень базоориентированный проект (мб придется что-то существующее патчить для лучшего перфоманса), а про бд я знаю примерно нихуя. Ну и соответственно, если ты хочешь в чем-то разобраться -- лучше всего это написать. Оно офк не будет каким-то продакшн реди, но как альтернатива какому-нибудь BusTub от CMU -- самое то. Ну и плюс мне сейчас нехуй делать, а базы данных - одно из самых слабых моих сторон, будет полезно подкачать
53 1971068
>>1970804
Для начала нужно понять какие задачи твоя БД решает. Хранятся ли данные на диске или только в памяти? Если на диске, то можно ли рассчитывать что COMMIT спасает не просто от креша/остановки приложения, а от выключения света? Есть ли мультиклиентность? По какому принципу хранятся данные: реляционные кортежи, вертикальные столбцы, таймсериес, документы как в монге, графы, простой keyvalue? Под какие паттерны использования будешь затачивать? Что важнее, консистентность или скорость?
54 1971125
>>1970804
Ты как настоящий дегенерт мыслишь - не читал ни одной книги, но зато всем рассказывает что хочет написать свою.
55 1973479
Поясните, а у sqlite есть веб интерфейс или чёт подобное. Или только сосать бибу и работать из консоли?
56 1973485
>>1973479
Загуглил "sqlite gui", куча тулз, но сам не юзал. Да и небось можно dbeaver/datagrip/etc настроить.
57 1973486
>>1973479
sqlite это просто либа. Также официально поставляеться соснольный клиент.
А так никто не мешает кому угодно написать сторонний клиент, хоть веб, хоть невеб. Но он там и нахуй не нужон.
58 1973498
>>1973485
>>1973486
Благослови вас христос
111.jpg10 Кб, 401x251
59 1973516
Аноны, помогите ради аллаха.
Есть пикрил структура таблиц. Мне нужно получить все email'ы пользователей и номера из таблицы "значения полей", чтобы эти данные выводились в одну строку, типа [почта | номер]. Каждое значение поля хранится отдельной записью.
Например, есть элемент, его значения полей выглядят так: element_id, field_id, value. В значениях полей есть номер и ид пользователя.
Мне нужно как-то найти элементы, понять к какому пользователю они относятся, взять email этого пользователя и номер из полей элемента.
Наверное, делается это через джоины, но я в этом не силён.
60 1973579
Почему не юзают СУБД на основе Prolog?
Пролог-программу можно рассматривать как реляционную базу данных, т.е. описание некоторого множества отношений. Описание отношений присутствует либо в явном виде (факты), либо в неявном виде (правила).
Встроенные предикаты дают возможность корректировать эту базу данных (БД) в процессе выполнения программы. Это делается:
1)добавлением к программе (в процессе вычислений) новых фактов;
2) вычеркиванием из нее уже существующих фактов.
61 1973596
>>1973579

> Почему не юзают СУБД на основе Prolog?


Потому что никаких реальных преимуществ по сравнению с реляционными БД в этом нет, а если и есть, то только для решения узких задач. Учёт в виде таблиц появился задолго до появления реляционных БД, и на практике его достаточно почти всегда.

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


В реляционных БД под реляционностью понимают именно таблицы, а не какие-то абстрактные взаимосвязи. Так-то "отношения" описывает любые произвольные структуры данных, но есть устоявшаяся терминология.

> либо в неявном виде (правила)


Мир уже пришёл к тому, что хранить бизнес-логику в БД - плохая идея. Есть "базы знаний", где хранятся факты и правила вывода, но это в конечном итоге надстройки над обычными БД.
62 1974398
Спросил в треде пхп-шников, но это, наверное, не к ним.

Можно ли писать команды так, чтобы они одинаково подходили и к MySQL и к PostgreSQL? Или синтаксис совсем несовместим?
Вот живой пример:
MySQL
ROUND((price / $coefficient),2) AS price

PostgreSQL
ROUND((price::numeric / $coefficient),2) AS price
Если у постргеса не указать, что округляемое - нумерик, то будет ругаться и вернёт ошибку. А в майскул такую конструкцию не завезли, он просто округляет. Это можно подружить как-то?

Просто, везде говорят, мол, у нас тут круто всё, можно в конфиге фреймворка поменять используемую базу и всё будет норм. А когда меняешь - оказывается, что нихренашеньки.
63 1974410
>>1974398
Разные SQL-ы отличаются настолько, что никакими конфигами к одному виду не привести, и либо не пишешь запросы сам и генерируешь через ORM, либо никак.
64 1974416
>>1974398
Такое обычно через orm делают, и только в самых простых случаях обходятся без костылей.
65 1974442
>>1974398
Если использовать поменьше функций может и ничего не придется менять, зависит от сложности запроса. Вместо округления например можно кастить в интеджер или использовать свой костыль
66 1974564
>>1974410
>>1974416
>>1974442
У меня сейчас сайт на ларавеле. Есть таблица продуктов, для которых в отдельном поле указана цена в евро. Пользователь сайта устанавливает сам, в какой валюте ему нужно показывать. Сейчас в контроллере прописана команда запроса к модели с MySQL синтаксисом команды. Как это засунуть в саму модель, не знаю. А просто запрашивать модель и потом в контроллере пересчитывать нельзя, потому что по MVC логике нужно усраться, но передвинуть перевод цен в модель.

В принципе, можно, допустим, брать цифру, делить на коэффициент, тут же умножать на 100 и округля... опять приходим к тому, что округление и преобразование типов оформлено по-разному.
67 1974852
>>1974564
ХЗ гугль говорит что round() можно использовать и без второго аргумента, да и cast() должен быть одинаковым. Плюс ты можешь не использовать стандартные функции округление, а написать своё через if например.
68 1974967
>>1974564

> MVC


Пчел, если ты в контроллере ебашишь SQL запросы то твоему MVC уже пiзда. В построеном по MVC приложении слой моделей самый жирный (если конечно у тебя там нет какого-то кромешного пиздеца в разметке фронта). Если ты хочешь обойтись базой данных заместо модели, то тогда тебе нужно переносить бизнес логику в базу данных. Тоесть ебашить процедуры/сабрутины. Из контроллера ты вызываешь процедуру которая возвращает цену. А уже в каждой базе своя процедура.
69 1974982
>>1974967

>твоему MVC уже пiзда


В контроллере вызов метода из репозитория:
$paginator = $this->indexRepository->getWithPaginate(9, $selectedCategory, $currentExchangeRate, $cartId);

В репозитории indexRepository проверяем, выбрал пользователь категорию товаров или нет. Ну и обращаемся к модели, подставив в неё SQL-команду для перевода прайса в нужную валюту прямо при запросе. Я не знаю, это считается, что я работаю с базой из контроллера, или всё же нет?
public function getWithPaginate($perPage, $selected, $exchangeRate, $cartId)
{
#If a category is specified and it is NOT root, then the category is checked
if ($selected <= 1) {
$checkType = '<>';
$selected = 0;
} else {
$checkType = '=';
}

#Get data
$results = $this
->startConditions()
->select('id', 'title', 'slug', 'category_id', 'description', 'image_url',
\DB::raw("ROUND((price::numeric / $exchangeRate),2) AS price"))
->where('is_published', 1)
->where('category_id', $checkType, $selected)
->orderBy('id', 'ASC')
->with([
'category:id,title',//we will refer to the category relation
'cartItem' => function ($query) use ($cartId) {
$query->where('cart_id', $cartId)->select(['product_id', 'quantity']);
}
])
->paginate($perPage);

return $results;

}
Сама модель:
namespace App\Models;
use Illuminate\Database\Eloquent\SoftDeletes;
class Product extends BaseModel
{
use SoftDeletes;

protected $fillable = [
'title',
'slug',
'category_id',
'description',
'price',
'image_url',
'is_published'
];

public function category()
{
return $this->belongsTo(Category::class);
}

public function cartItem()
{
return $this->hasOne(CartItem::class);
}
}
69 1974982
>>1974967

>твоему MVC уже пiзда


В контроллере вызов метода из репозитория:
$paginator = $this->indexRepository->getWithPaginate(9, $selectedCategory, $currentExchangeRate, $cartId);

В репозитории indexRepository проверяем, выбрал пользователь категорию товаров или нет. Ну и обращаемся к модели, подставив в неё SQL-команду для перевода прайса в нужную валюту прямо при запросе. Я не знаю, это считается, что я работаю с базой из контроллера, или всё же нет?
public function getWithPaginate($perPage, $selected, $exchangeRate, $cartId)
{
#If a category is specified and it is NOT root, then the category is checked
if ($selected <= 1) {
$checkType = '<>';
$selected = 0;
} else {
$checkType = '=';
}

#Get data
$results = $this
->startConditions()
->select('id', 'title', 'slug', 'category_id', 'description', 'image_url',
\DB::raw("ROUND((price::numeric / $exchangeRate),2) AS price"))
->where('is_published', 1)
->where('category_id', $checkType, $selected)
->orderBy('id', 'ASC')
->with([
'category:id,title',//we will refer to the category relation
'cartItem' => function ($query) use ($cartId) {
$query->where('cart_id', $cartId)->select(['product_id', 'quantity']);
}
])
->paginate($perPage);

return $results;

}
Сама модель:
namespace App\Models;
use Illuminate\Database\Eloquent\SoftDeletes;
class Product extends BaseModel
{
use SoftDeletes;

protected $fillable = [
'title',
'slug',
'category_id',
'description',
'price',
'image_url',
'is_published'
];

public function category()
{
return $this->belongsTo(Category::class);
}

public function cartItem()
{
return $this->hasOne(CartItem::class);
}
}
70 1975227
Сап БДач! Пожалуйста, подскажи тупню как решить вот такое?

Есть БД из 4 таблиц:
stock (id PK, shopID (FK -> shop.id), markID (FK -> mark.id), quantity)
shop (id PK, name)
mark (id PK, name, manufacturerID (FK -> manufacturer.id))
manufacturer (id PK, name, country)

Для всех дилерских центров те модели (mark.name), для которых суммарное количество выставленных на продажу экземпляров больше 10 (stock.quantity). В этом же запросе для каждой модели указать центр (shop.name), в котором находится наибольшее количество моделей (если таких несколько, то отсортировать по имени центра в алфавитном порядке).

Запрос на больше 10 экземпляров делается вроде элементарно (group by mark.name having sum(stock.quantity) > 10), но как при этом отобрать магазины, имеющие максимум? Второе условие в having вроде не засунешь. Да и группировка по магазинам это не то.
71 1975331
>>1975227
Ну, вроде как частично сделал:
select Mark, Shop from
(
select mark.name as Mark from
stock inner join mark on stock.markID = mark.id
group by mark.name having sum(stock.quantity) > 10
) as s1 inner join
(
select shop.name as Shop, mark.name, dense_rank() over (partition by stock.markID order by stock.quantity desc) as rnk from
stock inner join mark on stock.markID = mark.id inner join shop on stock.shopID = shop.id
) as s2 on s1.Mark = s2.name
where s2.rnk = 1

Неясно только, как реализовать

>(если таких несколько, то отсортировать по имени центра в алфавитном порядке)


БДач, подскажи.
72 1975332
>>1975331
select Mark, Shop from
(
select mark.name as Mark from
stock inner join mark on stock.markID = mark.id
group by mark.name having sum(stock.quantity) > 10
) as s1 inner join
(
select shop.name as Shop, mark.name, dense_rank() over (partition by stock.markID order by stock.quantity desc) as rnk from
stock inner join mark on stock.markID = mark.id inner join shop on stock.shopID = shop.id
) as s2 on s1.Mark = s2.name
where s2.rnk = 1
73 1975531
>>1975331

>БДач, подскажи.


Понял, что спросил хуйню. Спрошу корректней:
Нужно объединить наименования центров имеющих одинаковый максимум mark.name в одну ячейку отсортированным перечислением.
74 1975580
>>1974982
Все сложно сказать потому что это же не какие-то стандарты, а так придумали хуйню. В твоем случае все еще и хуже, потому что у тебя очевидный конфликт апи двух субд, поэтому все выглядит донельзя тупо. Но задача форматировать данные под бизнес требования (что похоже на твои проблемы) бывает. К примеру у меня был шиз заказчик который хотел чтобы часть цен товаров выводилась с указанием центов, а часть просто целым числом. И при этом чтобы можно было менять вид отображения для каждого товара. В соответсвии с MVC это должна делать модель. Она вытаскивает из бд сырые данные. Преобразует их в соотвествии с требованиями контроллера или бизнес-логики. И отдает их контроллеру. У тебя в общем все ок. Контроллер вызывает метод репозитория, который уже является слоем модели. И там гдет-то у тебя должна формироваться цена. Возможно это действительно какая-то сабрутина под конкретную субд, возможно это метод екземпляра конкретного класса который возвращает нужным образом округленную цену (это ORM подход).
75 1975643
Аноны, приведите пример, когда в postgres'е надо использовать timestamp, а когда timestamptz.

Что-то не я понимаю большой разницы. Допустим у меня есть два столбца: один timestamp, второй timestamptz. В первый я записываю "2021-01-01 00:00" (не прямо строку записываю, а объект через orm) у меня с сохраняется "2021-01-01 00:00". Во второй записываю "2021-01-01 00:00", и при "Europe/Moscow" сохраняется "2020-12-31 21:00". Когда selec'чу, оба возвращают "2021-01-01 00:00". И вот вопрос: в каких случаях нам может пригодится то, что timestamptz при сохранении и при возврате перегоняет дату в UTC и обратно?
76 1975937
>>1975643
Это нужно когда клиенты обращаются с разных часовых поясов, им можно на фронте показывать их местное время.
77 1976163
Можно ли как-то сделать IN с шаблонами внутри?

Типа
WHERE
(
Nodes.Caption IN ('%pbx%', '%voip%', '%sbc%')
)

Вместо
WHERE
(
Nodes.Caption like '%pbx%'
OR Nodes.Caption like '%voip%'
OR Nodes.Caption like '%sbc%'
)
78 1976170
>>1975227
Оконные выражения
79 1976397
>>1976163
Регулярные выражения, есть во всех приличных БД, синтаксис зависит от конкретной.
Oracle: where regexp_like(Nodes.Caption,('pbx|voip|sbc')
Как человек с колоссальным опытом в БД, могу сказать, что вся эта хуета как правило работает медленнее, чем стандартные операторы типа like, поэтому решай задачу через like, если она решается через like. Не нужно заниматься украшательствами ради украшательств, не нужно бездумно пользоваться фичами только потому что знаешь, что они существуют.
80 1976399
>>1976397

>where regexp_like(Nodes.Caption,'(pbx|voip|sbc)')

81 1976445
>>1975227

select t.,
fitst_value(shopID) over(partition by markID order by sm desc, shopID) -- на самом деле вместо shopID его наименование, которое нужно было приджойнить в запросе, но мне лень таким заниматься
from
(
select s.
,
sum(quantity) over(partition by shopID,markID) sm
from stock s
) t
where sm > 10
82 1976448
>>1976445

>select t.,


fitst_value(shopID) over(partition by markID order by sm desc, shopID) -- на самом деле вместо shopID его наименование, которое нужно было приджойнить в запросе, но мне лень таким заниматься
from
(

>select s.,


sum(quantity) over(partition by shopID,markID) sm
from stock s
) t
where sm > 10
83 1976819
Без опыта реально вкатиться каким-то скуль/бд девелопером, или туда только с бекенда перекатываются? В резюме только на опыт смотрят, портфолио с работами же не сделаешь? Может лучше пытаться аналитиком?
Что учить дальше после всяких DWH ETL OLAP BI, внутренности конкретных бд, администрирование?
84 1976912
>>1975531
>>1975332
Ну вроде допетрил, хотя, наверное, коряво вышло:

select Mark, string_agg(convert(nvarchar(max), Shop), ',') within group (order by Shop asc) as MaxShop from
(
select mark.name as Mark from
stock inner join mark on stock.markID = mark.id
group by mark.name having sum(stock.quantity) > 10
) as s1 inner join
(
select shop.name as Shop, mark.name, dense_rank() over (partition by stock.markID order by stock.quantity desc) as rnk from
stock inner join mark on stock.markID = mark.id inner join shop on stock.shopID = shop.id
) as s2 on s1.Mark = s2.name
where s2.rnk = 1
group by Mark

>>1976445
Так у тебя же два запроса или я чего-то совсем не понимаю что не мудренно?
85 1976913
>>1976912
Ну, ясное дело, что джоинить по name вместо id - тухлый план.
86 1976918
>>1976912

>два запроса


Это запрос к запросу, макаба звездочки спизила
select t.[зведочка],
fitst_value(shopID) over(partition by markID order by sm desc, shopID) -- на самом деле вместо shopID его наименование, которое нужно было приджойнить в запросе, но мне лень таким заниматься
from
(

>select s.[звездочка],


>sum(quantity) over(partition by shopID,markID) sm


>from stock s


) t
where sm > 10

Если в таблице ровно одна строка для каждой комбинации марки и магазина, то подзапрос выделенный гринтекстом не нужен и вместо этого можно взять сразу таблицу stock, тогда получается аккурат в один запрос с моим гениальным использованием функции first_value()

select t.[зведочка],
fitst_value(shopID) over(partition by markID order by quantity desc, shopID)
from stock s
where quantity> 10

Ты точно сделал какую-то хуйню, потому что тебе не нужно делать string_agg для наименования магазина, тебе явно сказано, что если у магазинов количество одинаковое, нужно вывести первый по алфавиту.
87 1976928
>>1976819

>Без опыта реально вкатиться каким-то скуль/бд девелопером


Ну если тебе меньше 25, то да, а дальше уже начнутся вопросы, а чем ты занимался все это время. Ну и будешь тупым как вот этот персонаж >>1976912
С бекенда туда не перекатываются, разработчики бд это отдельная каста.

>В резюме только на опыт смотрят, портфолио с работами же не сделаешь


Да, портфолио тут нет, дают задачи на sql, спрашиваю про устройство конкретной бд, если работа сложнее джуновской.

>Может лучше пытаться аналитиком?


Да, выучил sql и в путь. Сразу в разрабы сложнее, потому что это хоть и хуевенькая, но все-таки разработка.

>внутренности конкретных бд, администрирование?


А нахуй тебе оно надо вообще? Укатываются во всякие питоны и бигдаты, точно не в администрирование. Ну и у БД-разраба и БД-админа совсем разный функционал, админу можно и sql не знать дальше простых запросов, но при этом быть замечательным админом. Туда скорее всякие сисадмины/эникеи перекатываются.
88 1976954
>>1976918

>тебе явно сказано, что если у магазинов количество одинаковое, нужно вывести первый по алфавиту.


rly?

> (если таких несколько, то отсортировать по имени центра в алфавитном порядке)


Я так понял, что если есть несколько магазинов с максимумом одинаковой марки, то нужно вывести все. Вот и думал как их вывести в одной строке.
89 1977142
>>1976928
Да пока что 99.9% вакансий разраба бд это мидлы с 3 годами опыта и мне естественно не отвечают. Вот и рассматриваю разные варианты через которые потом можно будет перекатиться в разраба бд. Мб через аналитика, может через админа или бекенд. Правда туда тоже время нужно чтобы вкатиться. Всякие питоны и дата сайенс не рассматриваю там вообще год-два дрочиться придется.
90 1977154
>>1977142
Лол. 99.99% вакансий в айти такие. Ничего нового. Кто ищет, тот найдет.
91 1977162
>>1977142
Ага, а вот в БД селекты научился писать и сразу попрет?! Это не так работает, тут тоже нужно жизнь положить, чтобы стать профессионалом. Но профессионалом становишься не от дрочки курсов, а от реальных задач. Вообще, я не знаю откуда БД-девелоперы берутся, это вообще не хайповая тема сейчас, так что всякие стажировки и тд можно не рассматривать.

Ты отличай chad db developer от virgin sql analyst. На второго может пойти любая мартышка, прошедшая sqlex, а разработчик это разработчик, тут еще учиться надо.

Еще гугли по конкретным базенкам, там же так обычно пишут, "Oracle Developer, MS SQL Developer". По вакансии "DB Deveoper" нужны скорее всего специалисты по всем БД сразу как я и вакашки там с прицелом на проектирование, архитектуру, выбор решений, а не просто загрузить табличку из точки А в точку Б.
92 1977187
>>1977162
По-моему, ДБ-девелоперы это древний тренд вроде современных микросервисов, или что там ещё было. Все начали хуевертить всякую йобу прямо в базах, а потом расхуяривать обратно, как мода прошла.
93 1977201
>>1977154
Отчасти да, но на бек/фронт я хотя бы видел стажировки и вакансии джуна без опыта. Понятно что там по сотне откликов, но мб есть хоть какой-то шанс за счет портфолио вывезти.

>>1977162
Да понятно что я червь без реального опыта, и никакие курсы и книжки его не заменят. По конкретным бд смотрел, то же самое. Ну хз, буду наверно в бек вкатываться, там хоть скл пригодится.
94 1977211
>>1977187
Конечно, мое время проходит. Но с оракла крупные конторы еще долго не слезут, например, так что без работы не останусь.
95 1977429
>>1975937
Под клиентами ты имеешь ввиду клиентов, которые к БД обращаются? Если ты пишешь про веб-серверное приложение, то я что-то не могу понять, как timestamptz поможет возвращать на фронт время в разных часовых поясах.
96 1977856
>>1977162

>virgin sql analyst


>может пойти любая мартышка, прошедшая sqlex


Подтверждаю, сам такой.
97 1977917
>>1977856
Сколько опыта, сколько платят? Если не из ДС, можешь не отвечать, нерелевантно будет все равно.
98 1977955
>>1977917
Опыт 10 месяцев. Платят сейчас 60к, на старте было 35к. Но это меня уже повысили. Это в ДС.
99 1978194
>>1977955
А всякие матстатистика, теорвер, регрессионный анализ, сопутствующие приложения, python нинужны?
100 1978210
>>1964573 (OP)
В postgres у таблицы employee есть 3 вида json-полей: fields, providedFields, optionalFields (хз зачем так сделали). В этих json-ах мне надо найти значение по ключу "preferences", оно может быть в каком-то одном поле, а может не быть ни в каком, как мне вытащить его оттуда чтобы не запускать 3 отдельных операции SELECT?

(вытаскивать его надо именно в таком приоритете: fields -> providedFields -> optionalFields; если значения нет то переходим к следующему полю)
101 1978289
>>1977955
В 2021 это мало даже для самого обоссанного джуна, я на такие деньги вкатывался в 2015
102 1978319
>>1978289
Ну вот, а сейчас джуны вкатываются на зп кассира пятерочки. То ли еще будет.
103 1978363
>>1978210
В чем проблема так сделать?

select employee_id, preferences
from (
select employee_id,
COALESCE(
COALESCE(fields -> 'preferences', providedFields -> 'preferences'),
optionalFields -> 'preferences'
) as preferences
from employee
) emp
where preferences IS NOT NULL
104 1978391
>>1978194
Python или любой другой язык полезен ("будет плюсом" как принято писать). Тервер и матстат лично мне на собесе нужны были на самом детском уровня. Эксель тоже.

>>1978289
А чего ты хочешь, зная только sql и не имея опыта? 100к с порога? Анон выше верно написал, что одно дело быть DBD, который знает хотя бы теорию БД, и совсем другое - sql-макакой, который вкатился после 50 задач на sql-ex (хотя я и теорию тоже вспоминал).
105 1978436
>>1978391
Я просто хочу за еду получать опыт.
Ну вот допустим прошел я материалы курсов от carnegie mellon, курсы Semistructured Data and XML, Development of a Database Application, еще какие-то бесплатные от зарубежных вузов. Прочел книги по подготовке к сдаче экзаменов для сертификатов майков а-ля Developing SQL-Databases, Implementing a Data Warehouse using SQL. Прочел книги по типу The Internals Of Postgresql, доки самих бд.
По вышке ну у меня говношаражка, так что не в счет теории множеств, логики, алгоритмов, ну и прочее, пару языков на уровне синтаксиса, ооп, простых задач.

Куда дальше сосать? Становиться няшным трапиком, найти деда с 30 лет опыта дбд и пытаться ему на хуй скакнуть?
106 1978531
>>1978436
По-моему, с таким набором можно искать работу полноценным DBD, если ты всё перечисленное освоил, конечно. Или аналитиком, или каким-нибудь ETL-разработчиком (но там своя специфика, насколько мне известно). А если у тебя ещё и диплом профильный есть, не важно шарага или нет, то это огромный буст тебе среди других вкатышей.
В общем, ясчитаю у тебя уже есть варианты, главное ищи и откликайся.
107 1978614
>>1978436

>допустим прошел


Так допустим или прошел? Я не верю, что нужно настолько хотеть вкатиться в БД, чтобы всё это изучать. На этом свет клином не сошелся. Почему именно это, если ты готов так много ресурсов потратить на вкат в айти? Обычно люди просто учат базовый SQL и ходят по собесам. Хотя мне кажется, что тебя по софт-скиллам отбракуют, ты какой-то ебанутый.
16056125054221.jpg28 Кб, 343x256
108 1978687
Аноны что можно почитать/посмотреть по data vault? Что-то попадались всего пару книг и те говно.
109 1978688
>>1978436
Ну тащемта помимо базового sql неплохо бы знать особенности конкретных диалектов/бд, обязательно транзакции мне кажется даже если не используют на собесе спросят. Если направления куда копать - BI\ETL\DWH либо Java\Python сплош9ь и рядом используют совместно с бд
110 1978689
>>1978687
или подскажите какой подход к организации данных можно применить. Вот условно прилетают данные по одному бизнес процессу из разных источников, надо их собрать вместе в новой модели. Если просто наваливать джоинами в одну сущность, в конечном итоге будет ли несогласованность данных, либо дупликаты, либо ещё какое-нибудь говно. Нужно сначала модель построить, что можно использовать помимо data vault подхода а у то у меня уж башка от этих всех сателитов взрывается?
111 1980459
>>1965160
Ты че, про Монгу не слышал?
Как там в 2006?
112 1980463
Можно ли в чистом sql сделать так: берем у некой таблицы Student поле phone (оно может быть написано коряво - то есть с присутствием плюсов, дефисов и других посторонних символов), убираем оттуда все посторонние символы и сохраняем его в жсон-поле attributes по ключу "cleanedPhone" ?
113 1980468
>>1980459

> Монгу


Как там в 2014?
ключевое слово - файлы, а не то что в них жсон
114 1980480
>>1980463
А "чистый sql" это какой? Так-то вроде у Oracle есть регулярные выражения, может можно что-то через маску where phone like ... изобразить. Но я вот этот тупень >>1976912
поэтому ко мне доверия никакого.
>>1978436
Допустим, я захотел по-хардкору угореть по БД, с чего вообще имеет смысл начинать? Что читать? Просто быстрое гугление выдаёт совсем уж древнюю литературу (ясен пень, что реляционная и объектные модели придуманы миллион лет назад и едва ли что-то фундаментальное открылось после).
115 1980481
>>1980480

>А "чистый sql" это какой


Постгрес

Про "чистый sql" я говорил, подразумевая что можно написать скрипт на питоне, если просто на sql такое сделать нельзя / заебно
116 1980561
>>1980481
Тогда в чём проблема просто прогнать через регулярное выражение, убрав всё не нужное (ну и практически плохой совет, но на этапе разработки можно просто замутить маску, чтобы пропускало только нужный формат записи), не?
Мб замутить функцию, которая будет прогонять содержимое phone и вытаскивать, например, только цифры?
117 1980569

>Стандарт SQL требует, чтобы тип timestamp подразумевал timestamp without time zone


Нахуя? Сейчас же хранить без таймзоны антипаттерн.
118 1980579
>>1980569
Так там есть отдельный timestamp with timezone
Ну а так есть же всякие нюансы с переходом на летнее время или принятием полученного значения в общемировое. Ну то есть проще по-умолчанию считать что время указывает без часового пояса и потом его явно добавить, чем выяснить, что в конечном итоге время тебе показывает по Гринвичу (а ты на Аляске).
119 1980756
Аноны, подскажите хороший GUI-клиент для PostgreSQL под линукс.
PGAdmin - глючное УГ, даже не показывает таблицы в базе.

Navicat - можно купить на торрентах, но только под винду
DataGrip - то же самое
120 1980812
>>1980561
Забил хер и написал скрипт на питоне...
121 1980911
Тут есть люди с опытом DBD или ДБА? Какие у вас зп? Где-нибудь кроме банков работали? Есть те кто сейчас хиптсерский кликхаус или вертику осваивает? МБ хадупы? Что думаете о современном стеке дбд девелопера и посыле нахуй АСИДа в угоду производительности?
122 1980913
Как по мне, именно так будут выглядеть вакансии будущего, тем более в рф.
https://hh.ru/vacancy/41469811?query=Vertica python
123 1981207
>>1980913
Да понял я намек, понял, учу уже ваш питон ебаный.
оракловщик-200к
124 1981959
>>1981207
Кроме тебя тут никого нет?
125 1982219
>>1975643
Бамп вопросу. Зачем хранить дату в tz и при записи конвертировать её в UTC, если во время чтения она будет конвертирована обратно?
126 1982221
анон, почему у меня 900 строк удаляется >часа+ ?
127 1982275
128 1982277
>>1982275
Кстати насчет локов:

>>1964573 (OP)
Мне надо обновить кучу записей в таблице (около миллиона), скрипт для этого есть однако Postgres лочит таблицу на момент UPDATE и у меня никак не выходит провести эти транзакции параллельно (ни асинхронно, ни с помощью тредов). Я понимаю что он ссыкует что данные могут скорраптится, но я знаю что у меня все обновляемые строки разные, как временно убрать этот лок?
129 1982498
Есть таблица
atr_1
1
2
3
4
5
Я её могу проранжировать
atr_1
1 1
2 2
3 3
4 4
5 5

Я могу это сделать роу_намбером

А если я хочу проранжировать её вот так
1 5
2 5
3 5
4 5
5 5
6 10
7 10
8 10
9 10
10 10
11 15
12 15
И тд. есть для этого какая-то надстройка или костыль нужно изобретать?
129 1982498
Есть таблица
atr_1
1
2
3
4
5
Я её могу проранжировать
atr_1
1 1
2 2
3 3
4 4
5 5

Я могу это сделать роу_намбером

А если я хочу проранжировать её вот так
1 5
2 5
3 5
4 5
5 5
6 10
7 10
8 10
9 10
10 10
11 15
12 15
И тд. есть для этого какая-то надстройка или костыль нужно изобретать?
130 1982540
>>1982498
Делай то же самое с desc
>>1982277
Гугли батч апдейт или меняй уровень изоляции транзакции
131 1982542
>>1982498
А бля долблюсь, не то хотел ты, но вроде роу тоже это умеет. Или кросс аплай попробуй
image.png23 Кб, 441x557
132 1982610
>>1982498
Фантазию включи, чел.
ceil - функция для целочисленного деления, в других диалектах будет другая, на картинке оракл.
133 1982616
>>1982610

>ceil - функция для целочисленного деления


Извините, исправлюсь, это не совсем целочисленное деление, ceil возвращает для нецелого числа наибольшее целое.
134 1982677
>>1982610
Я бы написал сам костыль. Я просто спрашивал - есть ли над аналитическими функциями надстройка для таких случаев.
135 1982920
>>1982540
Варик есть - update from
postgres сам снимает все локи и тестовый запрос вместо 140 секунд выполнился за 1.2 секунды (!)
136 1982965
>>1982498
SELECT ID, iif(round(id/5,1)=0,1,round(id/5,1))*5
137 1982967
>>1982677
А в чём тут аналитика? В твоём выражение даже в соседнии строки заглядывать не нужно.
138 1982998
>>1982275
А разве можно удалять данные без лока?
139 1983008
Сап, аноны.

Есть условная таблица:
Поле1 Поле2
1 4
2 5
3 1
4 1

Я хочу посчитать сколько например 1 было в каждом поле. Условно GROOUP BY NUM, COUNT(Поле1),COUNT(Поле2). Но у меня нет в исходной таблице этих 1-2-3, по которым надо группировать, они есть только в виде данных в ячейках, при том для групировки нужны учитывать данные из обоих ячеек, если в одной ячейки есть число 7, а в другой нет, то 7 должна присутствовать в итоговой агрегации.
140 1983010
Сегодня в ночь решил шесть задач на sql-ex.ru, пока впечатления такие, что sql не сильно сложнее экселя получается.

Вообще тема здоровская, уже в головушки мыслишки роятся о том, как например сделать БД по результатам переписи 2002 и 2010 годов. Отдельно туда добавить сборники ОКТМО от Росстата. Потом задрочиться запросами через селект, вывести все муниципальные образования в которых проживают чеченцы за исключением муниципальных образований Чеченской республики. Вывести все муниципальные образования в которых русские в доле населения составляют менее 50%. А если к этой херне прикрепить какую-нибудь графическую оболочку, чтобы прямо на карте дублировались данные вообще была бы красота.
141 1983035
>>1982677

>костыль


Не костыль, а умное и изящное решение!
Нет никаких надстроек и быть не может, это слишком узкий кейс, заебешься каждый пердеж в параметры закладывать.
142 1983040
>>1983008
x, count(*)
(
select Поле1 as x from t
union all
select Поле2 from t
)
group by x
143 1983044
>>1982967

>А в чём тут аналитика


Аналитическая функция - это любая функция, результат которой зависит от других строк, а не только от строки, на которой она вызвана. В данном случае результат зависит от порядка по столбцу.
Умник ебучий.
144 1983060
>>1983040
Таблица огромная, от таких пассажей порвётся что-нибуь. Всегда стараюсь тзбегать юнионов без острой необходимости, тут не вроде как можно избежать
145 1983087
>>1983060
Union all - безобидная операция, она не делает сортировку.
Реальность такова, что ты не можешь сделать в одном запросе две независимых группировки по двум разным полям.
Можешь рассказать бизнес-смысл задачи? Есть шанс, что ее можно решить по-человечески.
146 1983091
>>1983087

>не можешь сделать в одном запросе две независимых группировки по двум разным полям


На самом деле можешь, используя конструкцию group by cube(), но это ёбка какая-то, сам гугли, как это работает.
image.png16 Кб, 585x177
147 1983092
А как сделать, чтобы данные после апдейта применялись сразу?
Написал пикрил, но данные не обновляются в таблице до тех пор, пока я её не закрою. Можно как-то фиксить?
148 1983094
>>1983092
Включить autocommit.
149 1983103
>>1983094
оказывается надо было опять делать селект и после через fetchall получать данные
150 1983124
>>1983087
Если бизнесово:
Мониторинг оборудования, нужно находить отрезки когда оборудование было недоступно\Была высокая задержка. Одна строчка что-то вроде Отправлен-Получен-Обработан. Условно оператор смотрит - у кофеварки разница во времени Отправлен-Получен больше 20 секунд, и таких случаев час было 20, значит коферка хуёвничает, её нужно чинить.

Практически:
Есть огромная таблица с несколькими временными отрезками(в одной строке несколько таймстэмпов), я хочу её схлопнуть, чтобы проще было хранить и делать запросы. Отрезки небольшие, от 1 секунды. Собирать планирую по Час-Ид-Количество-(каждого вида отрезков.). Но просто группировку сделать не могу, т.к. нет поля со всеми значениями. Distinct тоже не подходит, он сортирует. Думаю над тем чтобы просто генерировать своё поле, со значениями от 1 до 300 например, а всё что выше помечать как 300+.

Знаю, звучит как задача для NoSQL, но его нет под рукой.
151 1983137
>>1983124
Сложно, чел. Хранить несколько тамйштампов в одной строке - это нахуя а главное зачем?
Если бы у тебя просто была таблица ИД оборудования / Отправлен / Получен, то ты считаешь для каждой строчки разницу Получен - Отправлен, округляешь ее, например, до целых секунд в большую сторону, и делаешь group by по этому полю и по ИД оборудования, получаешь на выходе таблицу ИД оборудования, Длина интервала и количество таких интервалов.
152 1983152
>>1983137
Еслиб мишки были пчёлками...
У таблицы источника другой владелец. Могу предположить что так хранится потому-что строка - законченная операция, показывающая весь путь пакета, возможно для того чтобы сократить количество строк.
153 1983629
Подскажите плиз.
Первый раз делаю питон проект с базой данных.
веб страничка где ты получаешь инфу из базы и выводишь ее. и кнопка где ты заносишь инфу в базу.
Разве верно получать данные из бд напрямую при каждой загрузке страницы?
Как правильно это сделать?
154 1983698
Насколько затратна в эластике операция создания индекса?
155 1983701
>>1983629
Запилить кеширование. ОЗУ не резиновая, поэтому обычно его делают не для всего подряд, а для сравнительно небольших, но часто используемых данных. Как конкретно его запиливать, сильно зависит от языков и фреймворков, плюс юзают Redis и его аналоги.
Ну и не забывать создавать индексы в БД.
156 1983963
>>1983629
Обычно базы сами кешируют запросы
157 1986235
>>1983008
А если в одном столбце 7, а в другом 2, то и в подсчете 7 и и двоек плюс один?
158 1986237
>>1981207
Анон расскажи как вкатиться с ораклом в 200к, что надо уметь и учить.
И насколько реально юзая только pl sql получать 300к в секунду
159 1986238
>>1980463
Ага можно, я недавно такое же делал в оракле для тех. коментария через регулярку.
Если юзать pl sql, вообще красота, можно написать функцию, что будет тебе каждый номер править на удобоваримый
160 1986256
>>1980463
Как то так будет:
select
regexp_replace(regexp_replace(str,'[^[[:digit:]]]*'), '^(7|8)[\d]{10}')
from t

Где str название столбца в котором храниться "грязные" номера, и t соотвественно таблица с этим столбцом

Описание:
Regexp_replace маской из регулярки вытаскивает нужное из стринга.
Что бы получить номер я сначало оставляю в строке только цифры, а потом из полученного считываю 10 цифр после 8 или 7

Огроничения: сработает только для мобил в России
Ну и еще я эту хуйню не проверял, так что наверное где то накосячил
161 1986289
>>1986235
Ну агрегацию я планировал считать отдельно, по каждому столбцу.
162 1986411
>>1986237

>вкатиться с ораклом в 200к


Сразу на 200 не вкатываются, 200к-250к это зарплата оракловщика с 5 годами опыта разработки (именно разработки, а не SQL запросов)

>что надо уметь и учить


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

>И насколько реально юзая только pl sql получать 300к в секунду


Нереально. С голым ораклом 250к потолок, и только если ты действительно хорош. Поэтому я понимаю, что мое время проходит и нужно в экстренном порядке учить питон и перекатываться в дата-инженеры, если я не хочу через 5 лет оказаться под карьерной лестницей и дрочить легаси со старперами.

И в очередной раз спрашиваю: а нахуя вам вкатываться именно в бд?
163 1986418
>>1986411

>И в очередной раз спрашиваю: а нахуя вам вкатываться именно в бд?



Потому-что sql простой, как залупа
164 1986442
>>1986418
В свое время заебался собеседовать вкатывальщиков, которые думают так же.
Он очень сложный, особенно когда речь идет об оптимизации запросов, особенностях конкретной бд... Выучить базовый синтаксис SQL — дело не хитрое, но человеком от этого не станешь.
165 1986456
>>1986442
Спорное утверждение. Переформулирую, sql проще других языков программирования. Средняя вебмака должна быть умнее sql макаки.
166 1986459
>>1986456
Нет, не должна. Клепатель формочек — низшее существо. Вот туда и вкатывайтесь. А в такие благородные отрасли как разработка БД не надо лезть.
167 1986484
>>1986459
Приведи пару конкретных примеров этой 'сложности'
168 1986488
>>1986484
Веб-макака, угомонись. Ты рисуешь формочку, ты видишь, что она работает, и тебе поебать, что дальше. Разработка БД предполагает детальное понимание того, как работают процессы внутри БД, недостаточно перевести логику на язык SQL, нужно еще позаботиться о том, чтобы этот SQL был оптимален.
169 1986493
>>1986488
Начались манёвры. По теме, скажешь что?
170 1986500
>>1986493

>По, теме, скажешь, что?


Нет, чел, я эксперт в одной области и очень поверхностно понимаю, как работает другая. Может быть, ты мне скажешь, почему считаешь клепание форм более интеллектуальной деятельностью, чем разработку БД?
171 1986503
>>1986500
Алё, я по твоей области и спрашиваю, пару кейсов экспертных которые делают дб-макакинг невьебенно сложным опиши.
172 1986508
>>1986503
В общих чертах уже ответил, приводить конкретные примеры я не буду, потому что без должной экспертизы их все равно невозможно понять. Поэтому я и спросил тебя, как должно выглядеть описание сложности конкретной профессии, чтобы непосвященный человек сказал "ух бля как сложно".
Короче, я устал с тобой разговаривать, пиздуй работать.
173 1986519
>>1986508
Этот эксперт порвался, несите следующего.

веб мака будет умней, потому-что конкуренция выше, стек технологий больше. Сейчас средней руки ньюфаг для вката в макакинг форточек должен уметь докеры,юникс, sql, и ещё кучу говен, в то время как бд-дауны до сих пор палкой по своему ораклу стучат
174 1986526
>>1986519
Если ты такой умный, то почему такой бедный?
175 1986669
>>1986411
А что плохого в легаси? Это типа как пару лет назад было несколько статеек, что есть много программ на забытом и древнем языке кобол, которые до сих пор надо поддерживать, а деды-колдуны начали умирать. Это же как слесарь на заводе. Сидишь в сласарке и по звуку закрытыми глазами определяешь, что сломалось и где надо подтянуть.

Мне кажется это прямо золотая жила. Легко в такую тему влезть? Буду платить в два раза больше чем по региону?
176 1986691
>>1986669
Оракл еще долго не умрет, так что не получится стать последним человеком на свете, который знает оракл, и грести миллионы.
Ну и в целом ничего хорошего в легаси нет. Это очень маловероятная ситуация, когда ты сидишь на легаси и изредка что-то правишь, скорее всего тебе придется активно дорабатывать чужой код, пытаться впихнуть свои доработки поверх чужих и стараться, чтобы ничего не поломалось... А даже если ничего не править, никто не даст кадру просто так сидеть без дела, будут запрягать всякой другой хуйней, которая имеет мало отношения к твоим непосредственным обязанностям.
Ну и психологически тяжело будет, никакие деньги не спасут, когда поймешь, что заебался.
Clip2net210408225526.png63 Кб, 959x873
177 1990614
Анон, что с меня она хочет? Создал 2 пользоватиля через консоль, не через команду createuser. Теперь не могу удалить, сменить роли и тп. Вот пример удаление других пользователей.
178 1990622
>>1986691
Не, ну править-то можно по разному.
Одно дело когда ты ломаешь мозг придумывая архитектуру нового проекта.
Другое дело когда ты после недельной переписки добавляешь один if и потом еще неделю гоняешь тесты.
179 1990836
>>1986508
Нихуя тебя опустили, это ж каким надо быть тупым, что бы тебя веб-макака опустила...
180 1991517
Анон, поможешь? Придумываю связи для таблиц, тема - автобусные перевозки. Я хочу связать как-то точку отправления автобуса и точку прибытия, это один ко многим? У одно точки выезда может же много точек прибытия, да?
181 1991526
>>1986503

>дб-макакинг невьебенно сложным



Читал инструкции по эксплуатации AS/400 или Оракл?
182 1991604
>>1991526
Долго же ты обтекал, эксперт, и всё равно высрал какй-то бред.
Давай по пунктам:
1) Опять примеры максимально общие. Я неебу что ты этим хотел сказать. Или для тебя чтение, это задача требующая экспертного знания?
Ууу, эээ, ты компьютер видел? Знаешь как работает? Инструкцию по эксплуатации читал?

2) AS/400, судя по гуглу какое-то серверное говно мамонта. Я бы ещё сильно подумал относить это дб-макакингу или системному администрированию.

3) Инструкции по эксплуатации Оракл. Дед тебе сколько лет? Ты таблетки принял? Ни разу не слышал чтоб так называли мануалы люди моложе 40. Ну читал немного и что дальше? Опять же ты примеров никаких не приводишь, так что хуй тебя разберешь. Единственное что могу сказать, сракл не сложный, он неудобный. Как условный бейсик на фоне других языков , тот же sql и сам не самый новый язык, но даже на фоне других диалектов оракл со своей дрисней умудрился всех обскакать. Например - ебанутая работа с датами. Сложно? Нет. Неудобно? Пиздец как, хуже нельзя было придумать.

А самое главное твоя хуета не развивается. Как конвертили дату через сраку 30 лет назад, так и щас делают, а за это время уже все летают на мэп-редьюсах, и подрачивают кэш в редисах, а считают спарками. И условная вебмакака 2021 должна знать больше чем аналогичная макака из 2020, а ты ораклисты так и сидят в своей пещере.
183 1991720
А картинки и видео хранятся в БД? Или они в отдельных папочках на сервере, а в БД хранятся ссылки на них?
184 1991739
>>1991604

>эксперт


Это не я, я тебе больше не отвечал, потому что с твоим манямиром бесполезно спорить.
185 1991759
>>1991720
лучше второй вариант
186 1991853
>>1986411
Анон, подскажи, кроме Кайта можно что-то ещё почитать по ораклу, чтобы кашу в голове разгрести и получить какое-то структурированное представление о синтаксисе, пакетах и прочих инструментах? А то взяли на работу разрабом, большую часть логики пишу в SQL или PL/SQL, но вижу, что базы не хватает. А Кайт ещё вроде не по уровню мне. Или только доки курить?
187 1991894
>>1991853
Кайт по уровню, там ничего сложного, просто нудно. Но Кайт это скорее про понимание того, как оракел внутри работает, процессы, файлы, вся хуйня. Тебе, как я понимаю, нужен именно PL/SQL - под это дело свой талмуд есть - Фейерштейн, который я тоже не читал.
Лучше нагугли какой-нибудь список вопросов на оракл сеньера и иди по нему, а то заебешься.
Ну и в треде спрашивай, не стесняйся.
188 1991901
>>1991894
>>1991853
Кстати хорошая тема для обсуждение. Что спрашивают на синьёров\мидлов?
189 1991916
>>1991901
Типы таблиц, типы индексов, виды соединения таблиц, виды доступа к данным, уровни изоляции транзакций, хинты, регулярные выражения.
Сеньера еще могут попросить пояснить за каждый ответ и сказать, что в какой ситуации лучше. SQL еще всякие надо писать, с аналитическими функциями и тп.
190 1991921
>>1991916

>виды доступа к данным.


Под этим что подразумевается?

>хинты


И вот под этим

>Типы таблиц


Временные/обычные?
191 1991926
>>1991921

>виды доступа к данным.


С точки зрения оптимизатора: full scan, несколько разных index scan

>хинты


Подсказки оптимизатору (соединять в определенном порядке, использовать определенне индексы и тд, тут конечно лучше погуглить)

>Типы таблиц


>Временные/обычные?


Виноват, имел в виду способы организации таблиц: heap, index-organized, cluster
192 1992144
База mysql (innoDB), в одной таблице лежит 10 000 000 строк , это фото к продуктам(пути, мета, и проч. инфо) . Появилась задача все это просчитать и сделать статистику - где используются, на каком продукте, сколько включено, выключено, не заполнено. И все это при одном заходе на страницу. Запросы написал, с вложенными и джойнами - просто вешают страницу на 5-10минут.. Как это оптимизировать( хотя бы 20сек) ? Реально ли это сделать на мускуле?
193 1992480
>>1992144
10м не так чтобы сильно много, так что да можно. Или кэшыруц рещультат в редисе.
194 1992604
>>1992144
Недавно читал статью по денормализации. Там было что-то подобное. Так вот там предлагали фото вынести в другую таблицу. Для статистики они тебе не нужны, а запрос это ускорит.
195 1992721
Как некостыльно сделать запрос, превращающий данные типа
Клиент Ид_Заказа В Клиент_1 Ид1,Ид2,Ид3?
196 1992729
>>1992721
Гугли group concatenation для своей базенки.
197 1992938
Изучаю sql, возникла проблемка с таким типом задачи: есть 3 таблицы (работники, пк, работник_пк). В "работниках" поля id, имя, фамилия. В "пк" id и производитель. В связующей id, id_работника и id_пк. Связь многие ко многим.
Задача вывести имена работников за которыми привязано больше 2 пк. К сожалению идей нет как делать это задачу. Понимаю, что надо как-то через джоины, но дальше хз. Помогите кому не впадлу)
198 1992975
>>1992938
Лучше изучай. Обычный запрос на group by и having
199 1992976
>>1964573 (OP)
Как писать модульные тесты для SQL?
200 1992993
>>1992975
Спасибо!
201 1994966
Аноны, есть один SELECT и два JOIN в нем, при выполнении запроса, накладываются локи на записи. Как бы мне избежать этих локов, ибо этот запрос всегда делает просто чтение без последующих апдейтов и т.п.
Все это в PostgreSQL 12.
202 1994967
>>1994966
В гугле не забанили, но на все мои запросы возвращается только информация о том как наложить LOCK, а мне такое не надо, это я и так делаю.
203 1994969
>>1994966
А. ну и лок - ACCESS SHARE
204 1995068
>>1994966
Лок не должен включаться, если ты принудительно его не включаешь. Где ты обосрался?
image.png46 Кб, 1836x220
205 1995162
>>1995068
Хуй знает.
Запрос идет как: ORM -> PGBouncer(session mode) -> PostgreSQL.
На на выполнение в БД попадает все без криминала и подливы - https://pastebin.com/cBnVG6Hh
206 1995163
>>1995162
Пикрил происходит при большом кол-ве запросов.
207 1995183
>>1995162
Этот тип блокировки в постгре - не эксклюзивный. Они никому не мешает. Он вызывается селектом. Относись к этому как к инфе о том, что кто-то в данный момент читает эту таблицу.
208 1995334
>>1995183
То есть если сразу N селектов захотят забрать одни и те же данные, то эта блокировка никак никому не помешает?
Бля, если так, то хули тогда этот запрос такой медленный, по 25-35мс на РДСе выполняется. БД пустая считай.
209 1995665
>>1964573 (OP)
Анончики, туплю.
Надо сделать регекс для LIKE (или NOT LIKE), чтобы выбрать все description, где есть кириллица
Подскажите решение
210 1995669
>>1995665
where description like '%[а-Я]%'
нихуя не возвращает в mssql
211 1995677
>>1995669
Я какбэ не шарю, но разве не ".[а-Я]." ?
212 1995678
>>1995677
Макакба сожрала звездочки после точек
Безымянный.png8 Кб, 551x239
213 1995685
Всем привет. Подскажите, как лучше сделать, не могу понять. Хочу сделать таблицу чтоб хранить количество свободных номеров в отеле. То есть можно сделать как на нижней таблице, но тогда категории номеров будет нужно вносить и изменять вручную, а не брать из таблицы со списком категорий номеров. Или в принципе так и норм?
214 1995755
>>1995685
Нужно три таблицы:
1)Справочник номеров
2)Справочник арендаторов(опционально)
3)Таблица бронь (если решил п2, тут же ИД арендатора):
ИД_Номера - НачалоАренды - КонецАренды

Потом делаешь запрос в бронь и смотришь какие из номер сейчас заняты.

Можно это конечно сделать и всё в одной таблице, но за такое дед препод твоё щёку для своего хуйца арендует, потому-что денормализовано
Или с ехидной ёбой спросить про нормальные формы
Безымянный2.png60 Кб, 1273x711
215 1995779
>>1995755
Ну у меня типа такого сейчас в общем. Но что с номерами и ценами пока хз. Ты типа предлагаешь просто при каждом бронировании пробегаться по всем броням и считать, сколько попадают в этот диапазон и если их больше, чем количество номеров, то значит все занято? Но вдруг там нужно будет зачем-то заблокировать номер например? Ну или в общем поставить количество на определенные даты вручную?
216 1995793
>>1995779
По схеме:
У тебя букинг уже со всем говном, так не рисуют, рисуют просто с ключами иди переделывай.

Рисуй звезду:

В центре таблица фактов, что я описал, он по ключами соединена со справочниками. В центральной таблице НЕ ХРАНИМ всё гавнизе, только ключи на справочники.

Строчка центральной выглядит примерно так:

УниальныйИД-ИДКомнаты-ИдКлиента-ВремяНачалоАренды-ВремяКонцаАренды. (ёбаный рот никто же на 1 день не арендует)

Потом делаешь представление, в котором на текущую дату проверяешь свободные номера. Можно вобще просто заджоинить левым джоином к справочнику номеров, таблицу с фактами по диапазону дат. Где заджоинится - заняты, где нуль - свободны. Ну если две даты там сначла нужно будет посчитать попадает ли текущая дата в диапазон, но думаю там можно придумать хитрый хинт с datediff, мол если отрицательное, пошiв нахуй.
217 1995823
>>1995779
Что за прога?
218 1995826
>>1995677
А-я же, строчные буквы после заглавных идут в кодировке.

И вообще есть хуиллион веб-сайтов для тестирования регулярок.
219 1995829
>>1995826
И вообще А-я тоже говно, потому что не берёт Ёё.
Делайте как нормальные люди [А-Яа-яЁё]
220 1995914
>>1995677
Не ебу. В моем скуле функцию точказвездочка выполняет знак процент.

>>1995826

>И вообще есть хуиллион веб-сайтов для тестирования регулярок.


Только сперва надо его написать

>>1995829
Справедливо, ну это ладно, у меня ё там точно нет
В любом случае, не работает
221 1996014
>>1995823
Drawsql сайт нашел в гугле.
>>1995793
Ну я понимаю, у меня там и есть внешние ключи в ней. Просто есть клиент в бд, а есть информация, которая приходит с сайта или из какого-то другого источника и там может быть какая-то рандомная инфа, типа написано латиницей или с ошибкой или не полностью. А в таблице клиенты уже точная информация, которая при заезде администратором из документа берется. Поэтому когда бронь делается сначала там данные, которые ввел пользователь при бронировании, а если он приедет и его информацию внесут в архив, то тогда она будет браться из таблицы клиентов.
222 1996057
>>1995914
where zaloopa like '%[А-Яа-яЁё]%'
Хочешь сказать, что вот так не работает?
223 1996069
>>1964573 (OP)
Тред, про базы данных и не слово про Google BigQuery.
224 1996097
>>1996057
Не работает.
Возвращает одну строчку, которая не особо релевантна запросу
(пик1)

А на пике 2 другой запрос, это чтобы просто показать, что строчки с кириллицей есть
225 1996113
>>1996097
А какой тип данных у поля Description?
226 1996114
>>1996097
И простое like '%месяц%', например, работает?
227 1996138
>>1996097
Норкоманы штоле, like это простейшие вайлдкарды.
228 1996146
>>1996138
Нет, дело в том, что в MS SQL нет отдельной функции под regexp like, условия с регулярками пишутся в обычном лайке и работают.
229 1996170
>>1996113
Вот такой

>>1996114
Кстати не, нихуя
230 1996222
>>1996170
Ну значит с этого и надо было начать, а не с синтаксиса регулярок.
Попробуй like N'%месяц%' или convert(varchar(max), Description).
Нет этой хуйни под рукой, чтобы наверняка сказать, сам ебись и гугли.
231 1996224
>>1996222
Так а в чем проблема-то тут НАХОЙ?
232 1996227
>>1996224
В кодировках.
233 1996237
>>1996227
Ну пиздец. (
234 1996491
>>1996097
полнотекстовый поиск же
>>1996014
Нет ты не понимаешь. В центральной таблице это говна быть не должно. Тебе нужна отдельная таблица с бронями. Что значит он там не то что-то набронировал? Это предоплата и вьезд по паспортам, если он заполнил неправильно форму, он едет нахуй, а не в отель.

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

Соотвественно, когда мы будет искать занятые номера, уже бахаем три таблицы=СправочникНомеров+Брони+ЗанятыеНомера. Второй вариант добавить сущность СОБЫТИЕ и сыпать все в одно место, и брони и заезды: Ид+ИдНомера+КодСобытия(бронь-заезд-выезд)+Дата. Тогда можно будет построить полностью таймлайн, и напрмиер выбрать все номера, у которых есть выезд, но нет брони. Тут опять же вопрос в нормализации.
235 1996495
>>1996491
Ну я сам в отеле работаю и там типа так. Вообще насрать, чего там человек заполнил на сайте, букинге или ещё где. Никто там паспортные данные не высылает, почти никогда заранее не платят. Иногда по телефону чего-то промямлют, ты запишешь кое-как и всё. Или другому человеку. Главное чтобы найти эту бронь при заезде и чтоб она квоту занимала. А уже когда заезжает человек, то берется у него паспорт, заносится в систему и он добавляется в архив уже с однозначными данными.
Думаю все-таки да, попробовать просто пробегаться по броням. А для технических блокировок мб создать какого-то клиента с именем "блокировка" и он будет создаваться когда надо на какие-то даты закрыть номера. Хотя в реальности можно обычно вручную задать количество номеров на каждый день, а значит эта информация хранится где-то.
236 1996500
>>1996495
>>1996495
>>1996495
Тогда придерживайся второго подхода - все сыпешь в одну таблицу с событиями:
Событие - 1 бронь. В нём Ид пользоватоля вобще не заполнен, вместо этого заполнен коментарий, или вобще можно json класть в стобец с коментарием.
Событие 2 - заезд. Ид пользователя заполнено.
Событие 3 - выезд.

Кстати с таким подходом, не нужно делать две даты, достаточно одной.

Абу заебал со своими плохими воротами
237 1996609
>>1996491

>полнотекстовый поиск же


Так и што
image.png936 Кб, 1280x1130
238 1996951
>>1964573 (OP)
Не пойму, почему считается, что кассандра это availability + partition tollerance, а big table это consistency + partition tollerance
У них у обоих consistency level конфигурируется. У big table по умолчанию всего лишь eventual consistency. Такой же и у кассандры
239 1997446

>почему PostgreSQL - не Oracle


почему?
240 1997942
>>1964573 (OP)
Делаю листалку-пагинацию (на бэке постгрес если вдруг кому интересно), если простой способ затребовать определенную страницу под номером page_num (начинаются с 0):
LIMIT page_size OFFSET page_size x page_num

Но как заранее узнать максимальное количество страниц? Так чтобы это не отнимало много времени
241 1997974
>>1997942
count(*), не благодари.
Кажется, вопрос не совсем про бд.
242 1998001
Короч аноны, контора платит, нужно выбрать какой-нибудь базовый sql курс, типа dba level 1
Не по инфраструктуре, а именно по запросикам.
Есть проверенные варианты с онлайн-курсами? Только с рашкискими школами, чтобы не ебаться с оплатой забугорному контрагенту
243 1998006
>>1998001

>dba


SLQ Analyst, скорее. DBA вообще не про то, можешь совсем ненужными вещами голову засрать.
Конкретных курсов не знаю, меня всему научила улица.
244 1998099
>>1998006
https://www.specialist.ru/trainer/сфа

Вот этот хорошо рассказывает. Ну и список курсов можешь там же посмотреть. Это его видео в шапке, можешь послушать для примера.
245 1998102
>>1998001
а блять, прормахнулся, это тебе >>1998099
temp.png110 Кб, 822x662
246 1998160
Кто что знает из пикрелейтед?
у меня 4 из 10, жидко пукнув, обтекаю
247 1998213
есть ли способы подсчитать и вывести число аккаунтов юзеров если их много на страницу админа?
248 1998285
>>1998213
Что ты несешь, долбаеб? Сформулируй вопрос еще раз.
Какую, нахуй страницу админа, каких нахуй аккаунтов юзеров? Сука, охуеть нахуй.
249 1998349
>>1998213
SELECT COUNT(*) FROM ACCOUNTS;
Но если аккаунтов очень много, может не подойти.
250 1998363
>>1998349
Если очень много, но есть primary key, все равно должно быть заебись.
251 1998364
>>1998349
'SELECT COUNT(*) as num FROM users'
252 1998649
>>1998213
ANALIZE SELECT * FROM ACCOUNT
(postygres)
изображение.png171 Кб, 271x303
253 1998770
Славик, ты до сих пор свой пискуэль теребишь? Посмотри на Ванечку, он вкатился в погромирование и у него зарплата как три твоих.
254 1999800
>>1975643
Ещё один бамп. Хотя бы скажите, где почитать про этом можно
255 1999801
>>1999800
Все нормальные люди перегоняют время в utc, а потом навешивают сверху таймзоны, если надо. В постгресе это сделали искаропки, вот и всё.
16026340034170.jpg61 Кб, 683x790
256 1999824
Дарова бандиты. Подскажите какие тулзы бесплатные есть для генерации подсказок индексов по плану выполнения? БД постгре. https://www.percona.com/blog/2019/07/22/automatic-index-recommendations-in-postgresql-using-pg_qualstats-and-hypopg/ уже нашел, но выглядит немношк муторно, вдруг еще что есть.
257 2000100
>>1999851
>>1999841

>ДЕАНОН МОЧИ


Кого эта хуйня может вообще волновать? Вам по 13 лет?
1926453647558914851.jpg70 Кб, 1080x814
258 2002631
https://www.ixbt.com/news/2021/04/16/google-logica-yedalog.html

Если я не умею программировать, но немного знаю скуль с питоном и хочу со временем развить скиллы по анализу данных, стоит ли сейчас вкатываться в Logica, параллельно уча скуль с питоном?
259 2002844
>>1964573 (OP)

>Clickhouse


>Пиздатая колоночная БД, дает прекрасные показатели по butch вставке и множественному чтению


>join-ы между таблицами сразу же херят всю производительность


Что это ха хрень??
260 2002982
>>2002844
Если ты дворовые реляционные БД осилил с трудом и анальными болями на уровне CRUD, то лучше не лезь.
261 2003004
mysql на винде раз в сутки выкидывает окно на две секунды с каким то прогрессом в консольке. Я за месяц так и не успел прочитать что оно делает. И не смог нагуглить. единственное успел прочитать слово initialize.
Что это за говно и как его отключить?
262 2003019
>>2003004
Небось ровно в полночь? Мда, за 5 лет так ничего и не изменилось.
https://dba.stackexchange.com/questions/138589/how-to-disable-annoying-mysql-update-console
263 2003027
>>2003019
Спасибо, похоже оно. Не знаю почему сам не смог нагуглить, так и думал что избитая какая то проблема.
264 2003031
>>2003027
Я как-то успел сделать скрин и прочитать сообщение, его и загуглил.
265 2003222
>>2002982
Чмондель, любой join в контексте КХ является антипаттерном
Ты збс по-твоему?
266 2003231
>>2003222

> антипаттерном


Хуя у вас там в носкл-манямирке костыли.
gtw7l4rzw9i61.jpg512 Кб, 2155x2833
267 2003372
Антоши, помогите с запросом

Есть колонка, в котором такой текст:
"To: xuil9HaoANUSpkpPizdaPUNCTUMcdErom,petuh@kurwa.com <br />рандомное количество рандомных букв"
1.Нужно удалить первый емейл-адрес xuj1PiloANUSpizd/kvaPUNCTUMc|:3om (он всегда такой) и запятую после него.
Т.е. получится "To: petrzUuhANUSkurWwXwaPUNCTUMco$x%m <br />рандомное количество рандомных букв"
2.Нужно вставить в конец строки "<br />BCC: xumk`iloANUSpizq7.daPUNCTUMcMIzom"
Т.е. получится "To: petEwVuhANUSkur*|/waPUNCTUMcoB\im <br />рандомное количество рандомных букв<br />BCC: x77TuiloANUSpMovizdaPUNCTUMcOI2om"
268 2003373
Забыл важное: вместо p+boetuhANUSkur8CzwaPUNCTUMc/_1om может быть любой рандомный адрес
269 2003514
А как сделать реплейс пустой строки на что-то?
REPLACE(PropertyValue,'','chto-to') не работает
270 2003792
>>2003514
Очевидно потому, что там нечего заменять
271 2003857
fdHc0dj[1].png8 Кб, 647x152
272 2004283
Есть запрос (на пикче). Нужно найти ошибку(логическую) в условиях where, которая будет тормозить выполнение запроса.

Единственное, что я тут изменил бы, это указал вместо where StateID in where <table1>.StateID in.
Есть еще варианты?
273 2004309
>>2003372
бамп
274 2004312
Назовите основные отличия pgsql от mysql. И посоветуйте что в первую очередь надо изучить перекатчику из мускля.
275 2004507
>>2004283
Не, ну это на 300к наносек вопросы, бесплатно не готов обсуждать.
Из жизненного опыта:
Когда ты пишешь where stateid in (select stateid from ...), то без алиасов sql считает, что stateid из внутреннего запроса относится к stateid внешней таблицы, то есть условие трактуется как stateid = stateid, всегда верное, возвращает все строки из таблицы. А в твоём случае ещё и переменная так же называется, что именно интерпретатор тут поймет вообще хуй его знает... Мерзкий говнокод.
276 2004510
>>2004507
С точки зрения логики, в максимальном приоритете интерпретатор должен брать именно тот stateid, который переменная, потому что ему невозможно прописать алиас... Ну опять же получаем условие вида 1=1 и все строки из таблицы. Ой, ну нахуй ты это принес, только расстроил меня.
277 2004536
А где вобще используются курсоры, кроме запросов из языков погромирования?
278 2004892
>>1964573 (OP)
У меня, как и большинства анонов, есть проблема - я забываю то, чем долго не пользуюсь. Вот и с sql сталкиваться приходится редко - чаще всего все мои задачи решает orm. Но забывать ни теорию баз данных, ни сам язык запросов не хочется. Что посоветуете, чтобы держаться на плаву?
279 2004971
>>2004536
в текстовых редакторах
280 2004997
>>2004892

>Что посоветуете


Сидеть в треде.
Можешь задачки решать на sql-ex или codewars, если тебе делать нехуй.
281 2005084
>>1964573 (OP)
Пытаюсь тут обновить одну таблицу в postgres (а точнее поле json), но при попытках обновиться эта падла мне часто ругается на знак "%" - это, якобы это "unsopported format character" - втф? С хера ли % не может быть внутри полей бля?

до кучи добавлю, что я вытаскиваю уже готовое поле где присутствует % (!) но когда обновляю его то postgres усирается
282 2006002
Неофит в БД, использую постгрю. Создаю таблицу для логов (user_id, operation_time, operation_date) встал вопрос в оптимальном подходе проектированию.
Нужно ле делить поля на два (время операции и дата операции), либо же делать одно поле?
283 2006009
>>2006002
Храни в одном. Если потом потребуется отдельно дата или время, ты всегда можешь юзануть соответствующие функции.
284 2006014
>>2006009
Спасибо, не знал, что можно их будет селектнуть отдельно друг от друга. Буду вкуривать.
285 2006142
>>2006002
Вообще-то дату нужно хранить в integer, равном числу секунд от рождества христова.
286 2006439
>>2004312
Бамп вопросу
287 2006633
>>2003372
Бамп
288 2006678
>>1999801
Так а в чём плюс то? Если я получаю ровно то, что записал?
Я понимаю, что если изменить таймзхону сервера (или соединения), то получу я другое время. Но я не могу придумать случай, когда такое может произойти
289 2006805
>>2006678

>когда такое может произойти


Когда сервер мигрирует из одной tz в другую. Ну офис у тебя переезжает, понимаешь?
мимо проходил
290 2007067
>>2006805
Понимаю.
Это такой частый кейс, что для него сделали отдельный тип?
291 2007409
>>2004510
Да я сам расстроенный сижу. Меня спрашивают, как оптимизировать этот запрос? Мой вариант - просто выкинуть его нахуй на помойку, хуйня какая - то.
292 2007951
Т.е. чтобы научиться работать с SQL для начала нужно было выучить бэк в виде геометрии?
293 2008703
дрочую этот ваш скулэкс, на каком задании следует остановится если я целюсь быть qa макакеном?
294 2008713
>>2007951
Полигоны и градусы такой себе бэк, уровня школы, вот когда вызовом 2 таблиц формируешь матрицу, и с ней надо работать, вот тогда мозги кипят добротно
295 2008717
>>2008703

> qa


На первом.
296 2008725
>>2008717
Да бля, ну без тралленка, я смотрел вакансию типа qa трейни/джун, там столько говна в требованиях, типа sql, xml, bash, vbs, JS и еще сотни всякого говна, сейчас я на 29 упражнении, по сути ничего кроме вложенных запросов и джоинов нормально не освоил.
Конечно если от меня будет требоватся только Select * from выдать, у меня жопа полыхнет.
297 2008737
>>2008725

> если от меня будет требоватся только Select * from выдать


Именно так и будет. Зачем ты вообще задрачиваешь это всё, если идёшь не на разраба? Даже меня, бэкендера, спрашивали только про джойны и нормальные формы, всерьёз с SQL ебутся только всякие ДБА. Тестеру от SQL нужно только уметь делать селекты, подставлять тестовые данные и подобное, причём не обязательно руками, можно мышкой через гуй. Даже уметь создавать таблицы не надо.

> xml


Понимать, что это такое, уметь читать и редактировать

> bash


На уровне ls/mkdir/find/cat/grep.

> vbs, JS


Ага, а ещё git, фреймворки, вёрстка и CI/CD, ведь там будут обязанности фуллстека за зарплату тестера.
298 2008742
>>2008737
Спасибо, укачусь в QA тред
299 2008840
>>2008713
И такую задачу не решить без знаний матриц в вышке чтоль. Или что.
300 2008910
>>2008840
Ну да, но ничего не мешает выучить матрицы прям сейчас
301 2009006
>>1964573 (OP)
анончик посоветуй годноты по администированию оракле, именно по администированию, настройке бекапов , примери и слееров , стендбаев и всего такого
9p79qa7dsti61.jpg420 Кб, 2175x2880
302 2009118
Есть колонка, в котором такой текст:

"To: xuilFW7oANUSpi!vNzdaPUNCTUMco7:Hm,petuh@kurwa.com <br />рандомное количество рандомных букв"
Вместо petugKBhANUSku``zrwaPUNCTUMc/N0om может быть любой рандомный адрес, а вот x3i'uiloANUSpY`&izdaPUNCTUMc#"yom всегда один

1.Нужно удалить первый емейл-адрес xu%njiloANUSpizd\LiaPUNCTUMc$S^om (он всегда такой) и запятую после него.
Т.е. получится "To: petuDIChANUSk.ueurwaPUNCTUMcoA+bm <br />рандомное количество рандомных букв"

2.Нужно вставить в конец строки "<br />BCC: xu%ZOiloANUSpizd#r@aPUNCTUMc\.eom"
Т.е. получится "To: p0pqetuhANUSkurw=3^aPUNCTUMcOX!om <br />рандомное количество рандомных букв<br />BCC: xuER|iloANUSpizmAfdaPUNCTUMco:hFm"
image.png67 Кб, 795x430
303 2009503
Аноны, есть один селект на постгресе. Подскажите, пожалуйста, можно ли его как-то замаппить в пары ключ-значение через hstore или другой дататип? Чтобы в итоге получилось [users, {select, select, update}], [vendors_communications, {select, select}], и т.д.
305 2009552
>>2009544
Да! Только я заюзал array_agg. Спасибо!
306 2010604
Читал про SQL, работал с sqlite как с мини-БД дял пет-проекта. Пришел на первую работку и тут PostgreSQL, постоянно фигурирует термин "схема" - как я понял это понятие близко к "таблице" но не тождественное ему? Че это блин такое?
308 2010616
>>2010604
В одной БД несколько схем, схема - это что-то вроде неймспейса/пакета/модуля из обычных языков. В одной схеме может быть несколько таблиц, индексов, процедур и прочего.
Ещё на будущее: под схемой в постгресе, мускле и оракле понимают три совершенно разные вещи.
309 2010730
>>2010616

>под схемой в постгресе, мускле и оракле понимают три совершенно разные вещи.


Забавно, что при этом ты дал определение схемы (ну описание) и не сказал, про какую схему ты именно говоришь - прогрессклную, мускульную или оракловую
310 2010739
>>2010730
Вопрос был про постгрес, я ответил про постгрес. Логично?
311 2011827
>>2004283
Слыш да, а нахуя вообще первый подзопрос?
Там же селект стейтАйди из т2, у которого условие на стейтАйди = константа.
Проще же сразу
...
Where stateid = stateid(переменная)
and (второй говнозапрос)
312 2012171
>>2011827
Если набор StateID в table1 и table2 разный, то это значит, что на запросе с картинки вернутся записи из table1 только в том случае, если они есть в table2, а если заменить подзапрос на константу, то вернутся записи из table1 с этим значением вне зависимости от того, есть они в table2 или нет. Понятно, что в здоровой ситуации набор значений там одинаковый, но в общем случае логика запроса меняется, поэтому нельзя так делать.
Senior SQL Developer
313 2012344
>>2012171

>Senior SQL Developer


Звучит как сеньёр HTML
314 2012475
>>2012344
Ты просто нюфаня и еще не знаешь, что SQL во многих реализациях (например постгре) является тьюринг-полным языком программирования.
image.png68 Кб, 218x231
315 2012575
>>2012171

>Senior SQL Developer

316 2012670
>>2012171
Тогда предлагаю заменить первый подзапрос на
Условие на константу + exists.

Тогда твой кейс обработаем и может быть быстрее, чем если в table2 хуиллион записей равных нашей константе тянуть
не Senior SQL Developer
317 2012680
>>2012344
Главпетух
318 2012700
>>2009118
БАМП.
319 2012942
>>2012670
Согласен, коллега, не доебаться.
320 2013539
>>1964573 (OP)
Реквестирую кроссплатформенную реляционную СУБД с открытым кодом и свободной лицензией.
321 2013542
>>1964573 (OP)
Анон, можно ли как-то из базы данных SQLite, сделать клиент-серверную СУБД?
Пока нашёл, вот здесь: https://qastack.ru/dba/21/is-it-possible-to-use-sqlite-as-a-client-server-database
некий SQLitening : https://sqlitening.planetsquires.com/index.php
но это для Windows. А для прыщей чёт не могу нихуя нарыть.
Хочу сделать говносайт, с базой данных SQLite, потому что она кроссфлатфоренная и код её открыт.
322 2013543
>>2013539
Вроде нашёл HSQLDB . Есть ещё чё-нить годное?
323 2013544
>>2013539
FirebirdSQL?
324 2013552
>>2013539
POSTGRESQL
325 2013567
>>2013543
MySQL? MariaDB? DB2 Express-C? CUBRID ? Sequel Pro? PostgreSQL?
326 2013572
>>2013567

> MySQL


Говорят, что это только формально опенсорс, а фактически его задушил оракл.
327 2013581
>>2013572
Oracle RDBMS? А она не опенсорец?
328 2013582
>>2013581
https://ru.wikipedia.org/wiki/Oracle_Database
Ааа, там мокрописечная копирастия обфусцированная, проприетарная.
Лицензия: коммерческая, для разработчиков
329 2013584
>>2013581
Нет, оракл - одна из наипроприетарнейших РСУБД.
330 2013589
>>2013584
Ну так а нафиг она тогда нужна, если сорца нету? Для понтов, мол смотри у нас тут есть скомпилированная РСУБД, она даже работает, а что там за вирусы, черви и бекдоры в коде - ебать не должно, код скрыт. Да?
331 2013598
>>2013589
Опенсорс ничего не гарантирует. В миллионах строк открытого кода тоже можно спрятать много интересного, и никто не заметит, потому что нет ни у кого времени полностью читать весь код. В линукс уже несколько раз коммитили бэкдоры, пруфы можешь поискать сам.
Да и оракл стал популярен в те времена, когда тупо не было полноценных альтернатив по возможностям, это как с линуксом, который но недавнего времени был неюзабелен на десктопе (и до сих пор вызывает вопросы). Сейчас же с использованием оракла написано слишком много кода, их нельзя быстро переписать на постгрес.
332 2013604
>>2013598
А как насчет запилить опенсорц оракл со свободной лицензией?
333 2013609
>>2013604
Оракл вряд ли на это пойдёт, он слишком жадный, и эта жадность может его погубить. У него и так кроме СУБД куча других проприетарных продуктов, и он не спешит их опенсорсить.
334 2013644
>>2013609
Да нет, ты не понял. Тупо взять деобфусцировать, декомпилировать, дизасеблировать, и/или воссоздать, дописать и портировать модули подпрограммные, которые выполняли бы всё то, что делает оракл, и назвать это оракл-опен-сорц-реверс-инженеред-портабле-еxe

>>2013539
Может ALTIBASE HDB? Тут пишут что код открыт https://datewiki.ru/wiki/Altibase
335 2013653
>>2013598

> их нельзя быстро переписать на постгрес.


А сможет ли постгрес справиться со всем тем, с чем справляется оракл?
336 2013664
Помогите написать SQL запрос для того что бы, после того как пользователь добавит товар в корзину, в списке выпадали только те размеры, которые есть на складе.

SELECT DISTINCT Склад.Размер
FROM Склад INNER JOIN Корзина ON Склад.КодТовара = Корзина.КодТовара
ORDER BY Склад.Размер;

Дошел только до этого, но оно не работает. Для курсача надо
337 2013671
Я тупой ок? и вопросы у меня тупые, но сжальтесь, как-то можно фильтровать запрос через CASE а не через WHERE или HAVING?
338 2013675
>>2013644
За это на бутылку посадят, ни одна организация не будет это использовать. Больше толку будет от портирования оракловых фич в другие БД.
339 2013677
>>2013664
WHERE склад.количество > 1
не?
image.png3 Кб, 279x121
340 2013688
>>2013677
На этот код

SELECT DISTINCT Склад.Размер
FROM Склад INNER JOIN Корзина ON Склад.КодТовара = Корзина.КодТовара
WHERE Склад.Количество > 1
ORDER BY Склад.Размер;

аксес выводит пикрил, а после тупо выводит все размеры со всех позиций на складе
341 2013693
>>2013671
Да, использовать case в where или having, но скорее всего тебе это не нужно.
342 2013710
>>2013653
Сложно сказать, сколько ни читал сравнения оракла и постгреса, везде одна субъективщина типа "а у нас есть merge и пакеты, а у вас?". С основными задачами они справляются примерно одинаково, и реальная разница в некоторых продвинутых фичах (наподобие репликации), которые нужны не всем.
343 2013744
>>2013710

>нужны не всем


Вот кому не нужны, те и слезают, а большие конторы сидят и будут сидеть.
344 2013745
>>2013688

>WHERE Склад.Количество > 1


У тебя нет поля Склад.Количество .

Может так:

>WHERE Склад.КоличествоНаСкладе >= 1


?
345 2013753
>>2013745
Это я понял, все равно корректно ничего не показывает
346 2013864
>>2013753
Нужно больше информации, алсо, попробуй реализовать через вложенный запрос, иногра обсалютно одинаковые логические запросы, через вложенный, выдают разные результаты
347 2013870
>>2013864
спасибо
348 2013871
>>2013864
>>2013753
Типа WHERE Склад.количествонаскладе IN (SELECT Количествонаскладе
FROM склад
WHERE количествонаскладе > 0)
349 2013873
>>2013870
Та я сам только ботаю на sql-ex и откуда у тебя форма лезет не ебу
Я конечно не представляю как это должно быть, но для каждой новой клиентской корзины я бы создавал отдельно таблицу ьипа <клиентАЙДИ>корзина (продуктайди, кодичествовкорзине)
350 2013879
>>2013873

>я сам только ботаю на sql-ex


А зачем тогда людям что-то советуешь?
Ладно этот чел, он свою лабу сдаст и забудет, но вдруг кто-то прочитает бред по типу этого и будет думать, что это правда

>иногра обсалютно одинаковые логические запросы, через вложенный, выдают разные результаты

351 2013908
>>2013879
Ну по тем задачам, не помню какая именно, так и было, где-то в начале, до 20 точно

>зачем


Потому что профи годны только говниться а не подсказывать
352 2013910
>>2013908

>так и было


Нет, не было. Это ты не понял, как оно работает.
353 2013911
>>2013910
Кстати, если принесешь задачу с примерами, я скажу, где ты обосрался.
354 2014401
>>2011827
Как оказалось мой интервьюер такого ответа и ожидал.
355 2016735
>>2007951
Думаю да, у меня образование 9 классов (гдя я проебывал уроки, особенно математику). Недавно пошел на собеседование в контору, где чисто на t-sql все делают. Мне дали тестовое, которое очень просто представить на системе координат. В итоге я его так нихуя сделать и не смог... Теперь собираюсь наверстывать упущенное через Khan Academy.
356 2017152
>>2016735
Я б таких собеседователей ногами пиздил. Второй год работаю, ниразу не одной задачи с матаном\геометрией не попалось. Если нужно что-нибудь более сложное посчитать, всегда приносят формулу.
357 2018373
>>1964573 (OP)
Как подключиться к файлу базы данных SQLite из браузера client-side, чтобы читать-писать данные там, используя SQL-запросы?
Вижу здесь: https://github.com/sql-js/sql.js
есть DEMO: https://sql.js.org/examples/GUI/
и оно вроде работает в браузере,
но оно где-то хостится на каком-то сервере,
а я не хочу вгружать и передавать свою базу данных, и сами данные,
на чей-то сервер, чтобы там кто-то колупался. Я хочу client-side.

Есть нечто подобное, чтобы работало, мм?
image.png19 Кб, 428x307
358 2018376
>>2018373
Всё, нашёл это: https://github.com/cyrilbois/Web-GUI-for-SQLite
Демо - здесь: https://extendsclass.com/sqlite-browser.html
Просто скачал (пикрил), и открыл Web-GUI-for-SQLite.html во вкладке браузера. Всё работает заебись, вроде.
359 2018380
>>2018376
Бля, оно вгружает всю базу, походу в память, а если там терабайт будет?
360 2018399
>>2018380
Терабайт данных в sqlite? Скорее всего, sqlite тебе не нужен.
image.png18 Кб, 672x303
361 2019204
Как сделать так чтобы запрос вывел только самый популярный месяц, т.е. 5
362 2019260
Я правильно понимаю, что firebase в РФ запрещена для использования в качестве авторизации?
363 2019262
>>2019204
Order by count и лимит 1 в конце.
image.png10 Кб, 594x108
364 2019267
>>2019262
Такой запрос вообще ошибку выдает

Error Code: 3029. Expression #1 of ORDER BY contains aggregate function and applies to the result of a non-aggregated query
365 2019274
>>2019204
... from moving_b group by "Месяц" order by count(*) desc fetch first 1 row only;
366 2019275
>>2019204
Посчитать COUNT(Месяц) where месяц =1
потом 2 и т.д.
или
valueCount
367 2019286
>>2019267
select mounth from ... group by mounth order by count (mounth) desc limit 1;
image.png20 Кб, 659x241
368 2019294
>>2019286

>select mounth from ... group by mounth order by count (mounth) desc limit 1;


На это выдает почему то 6 месяц, а не 5
369 2019304
>>2019294
Хотя ладно, хуй с этим запросом, пропущу его. Если уж всем тредом не смогли сделать, то проще забить
370 2019308
>>2019286

> limit 1;


земля тебе хуями слэйвянский недочеловек
371 2019326
>>2019308
Что не так?
372 2020054
>>1964573 (OP)
Я знаю, что любая реляционная база данных, состоит из таблиц взаимосвязей между ними.
Но для того, чтобы работать с базой данных, нужна целая, пиздатая СУБД, которая не всегда может поставится - это раз, во вторых, там могут быть бекдоры всякие и хрен знает что, в третьих лицензии могут быть несвободные, и всякое такое.
Вопрос. А возможно ли работать с базой данных, БЕЗ СУБД?
Скажем, вот, можно ли создать базу данных, в блокноте, и просто глазами смотреть где какое значение в поле какой таблицы, и так вот читать-писать-искать значения, производя CRUD?

Если да, то можно ли пихнуть всё дело - пхнуть в один бинарный файл, а вместо индексов, просто сунуть смещения на всякие данные,
и обходить всё это, потом, алгоритмом, в том числе и кастомным, вроде SQL-запроса?

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

В общем, реквестирую, минимально-возможную реляционную СУБД, такую, чтобы возможно, её можно было с нуля написать.
373 2020275
>>2020054
Зачем, если есть SQLLite?
374 2020674
>>2020054

> нужна целая, пиздатая СУБД, которая не всегда может поставится


Я бы не стал доверять данные серверу, на котором такие проблемы с окружением.

> там могут быть бекдоры всякие и хрен знает что


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

> лицензии могут быть несвободные, и всякое такое.


А могут быть свободные. Ты наугад выбираешь СУБД что ли, или всё-таки ищешь подходящую под задачи с подходящей лицензией?

> возможно ли работать с базой данных, БЕЗ СУБД?


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

> Скажем, вот, можно ли создать базу данных, в блокноте, и просто глазами смотреть где какое значение в поле какой таблицы, и так вот читать-писать-искать значения, производя CRUD?


Множество CSV-файлов. занимать будет дохуя места, запросы будут медленными, постоянная перезапись файлов быстро убьёт диск.

> Если да, то можно ли пихнуть всё дело - пхнуть в один бинарный файл, а вместо индексов, просто сунуть смещения на всякие данные, и обходить всё это, потом, алгоритмом, в том числе и кастомным, вроде SQL-запроса?


Примитивная СУБД так и будет работать.

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


Именно так, поэтому этого не делают.

> В общем, реквестирую, минимально-возможную реляционную СУБД, такую, чтобы возможно, её можно было с нуля написать.


Гугли 12 правил Кодда, это минимальные требования к релцяционной СУБД. Написать с нуля, конечно, возможно всё, но легко сдаться на первых сложностях наподобие реализации ACID-транзакций.

Короче, бери sqlite.
374 2020674
>>2020054

> нужна целая, пиздатая СУБД, которая не всегда может поставится


Я бы не стал доверять данные серверу, на котором такие проблемы с окружением.

> там могут быть бекдоры всякие и хрен знает что


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

> лицензии могут быть несвободные, и всякое такое.


А могут быть свободные. Ты наугад выбираешь СУБД что ли, или всё-таки ищешь подходящую под задачи с подходящей лицензией?

> возможно ли работать с базой данных, БЕЗ СУБД?


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

> Скажем, вот, можно ли создать базу данных, в блокноте, и просто глазами смотреть где какое значение в поле какой таблицы, и так вот читать-писать-искать значения, производя CRUD?


Множество CSV-файлов. занимать будет дохуя места, запросы будут медленными, постоянная перезапись файлов быстро убьёт диск.

> Если да, то можно ли пихнуть всё дело - пхнуть в один бинарный файл, а вместо индексов, просто сунуть смещения на всякие данные, и обходить всё это, потом, алгоритмом, в том числе и кастомным, вроде SQL-запроса?


Примитивная СУБД так и будет работать.

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


Именно так, поэтому этого не делают.

> В общем, реквестирую, минимально-возможную реляционную СУБД, такую, чтобы возможно, её можно было с нуля написать.


Гугли 12 правил Кодда, это минимальные требования к релцяционной СУБД. Написать с нуля, конечно, возможно всё, но легко сдаться на первых сложностях наподобие реализации ACID-транзакций.

Короче, бери sqlite.
375 2021264
>>2020674
Так просто поролить надо!

1 oracle
2 maridb
3 MSSQL
4 PostgresSQL
5 REDIS
6 CASSANDRA
7 CLICKHOUSE
8 SCILLA
9 VERTICA
0 SQL LITE

На дабл берёшь любую релиционню, 00 колоночную.
66 пишешь свою говнобазу на оркале
77 хранишь все в фс
376 2021266
>>2021264

>66 пишешь свою говнобазу на делфи


самофикс
377 2021573
Добрый день, господа, мне нужно получить в ближайшие полгода сертификат разработчика pl/sql, было бы неплохо чему-то научиться, но основное - получить корку. Стоимость обещали оплатить, но пределов ценовых пока не уточнял. Получал кто-нибудь такой сертификат в ДС?
378 2021575
>>2021264
Ролл
379 2021600
>>2020275
Да я уже заебался с ней, просто, пиздец как.
Нихуя документации, годной, в этом ебучем тырнете, найти не могу, блядь.
Там всё копирастическим и корпоратокративным языком написано, чтобы запутать анона, и чтобы он забил на это хуй поскорей.

У меня, здесь, короче, Windows XP, CSharp (C#), и .NET Framework 4.0. И ещё есть mono на ubuntu,
где можно запускать шарповый код, совместимый с .NET Framework 4.0.

Единственную норм приложуху для тыканья sqlite3 DB, что я нашёл -
так это мокрописька Sqlite Expert Professional 5.3 (x86), с кряком от васяна.
Да, там есть гуй, и куча всяких свистоперделок, но сореца нету нихуя.

Я вижу, что она использует sqlite3.dll , потому что она есть там, внутри, прекомпиленная.
А где её сорец и как её сбилдить, и как юзать - вообще непонятно нихуя.

Нашёл здесь: https://github.com/moneymanagerex/System.Data.SQLite
сорец System.Data.SQLite.dll вроде оно компилится на c# ,
и на выходе в папке System.Data.SQLite-master\bin\2010\Win32\Debug\System.Data.SQLite.dll
лежит многовесный файл 2,80 МБ.
Он, походу, содержит в себе System.Data.SQLite.Interop.dll, который просят всякие гуи,
и работает как sqlite3.dll
Другой файл \System.Data.SQLite-master\bin\2010\Debug\bin\System.Data.SQLite.dll
имеет меньший размер, и когда его кидаешь, просит SQLite.Interop.dll (а я ебу что это такое ваще).
Ещё, в папке \System.Data.SQLite-master\bin\2010\Debug\bin\ куча всяких других, непонятных dll-лок,
я уже заебался гуглить всю эту хуйню и закрывать вкладки, эти ебучие, а потом опять открывать, и закрывать, блядь.
Искал я как работать с этой хуйнёй на шарпе, наткнулся на это: https://devpractice.ru/sqlite-c/
И там, внутри, какие-то конструкции из кода нагороженные, нихуя не понятно что к чему.
Затем я искал нормальное API, и наткнулся на вот такую софтину: https://github.com/donet5/SqliteSugar
хоть она и компилится, но там многобукв в коде, ещё и по-китайски.

Хотелось, бы, блядь, одну dll-ку, из кода скомпилить, приложить её, и дёргать за апи-методы, и пхать туда sql-запросы,
а не писать в говнокоде ебические конструкции, каждый раз подключаться, блядь, к файлу базы, для каждой операции,
и развозить всю эту хуйню - на 10,000 строк.
Судя по сайту https://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki
там есть справка в формате CHM, как его открыть - вообще не ебу, у меня открывается окно, а там такое говно.
Короче, блядь, как заебал уже весь этот пердолинг ебучий,
да и нахуй мне все эти функции и свистоперделки сиквелайта?

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

>>2020674

>Я бы не стал доверять данные серверу, на котором такие проблемы с окружением.


А я бы напротив сделал софтины обратно-совместимыми даже с таким вот сервером, чтобы они были вообще пиздец какими кроссплатформенными.

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


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


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

>А могут быть свободные. Ты наугад выбираешь СУБД что ли, или всё-таки ищешь подходящую под задачи с подходящей лицензией?


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

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


ВОТ. Есть где-то вводная инфа, о том, как это можно сделать?

>Множество CSV-файлов. занимать будет дохуя места, запросы будут медленными, постоянная перезапись файлов быстро убьёт диск.


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

>Примитивная СУБД так и будет работать.


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

>Именно так, поэтому этого не делают.


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

>Гугли 12 правил Кодда, это минимальные требования к реляционной СУБД.


Годно, но них ещё врубиться надо, по хардкору, чтобы понять их.

>Написать с нуля, конечно, возможно всё, но легко сдаться на первых сложностях наподобие реализации ACID-транзакций.


Ну это вообще космос. А нафиг они нужны?

>Короче, бери sqlite.


А на sqlite существуют какие-нибудь сайты на шарпе?
Вот, например, какой-нибудь сайт с личным кабинетом, интернет-аукцион, скажем,
где юзер может зарегистрироваться и зайти в аккаунт?

>>2021264
Тут есть NoSQL базы данных, то есть, как-бы нереляционные.
А мне надо реляционная, потому что там можно взаимосвязывать таблицы.
И мне нахуй не нужны ебические СУБД со всякими проприетарными лицензиями, которые просят бабала, и ставятся прямо в систему из инсталлера,
или запускаются на сервере где-то, где могут спиздить данные, блядь.
В идеале, я бы хотел простую и легковесную СУБД, желательно свою, и чтобы она была портабельной на флешке, как сиквелайт,
и чтобы, тупо чтобы вязать всякую хуйню, наподобии пикрил.
Вот надо расписание, например, сделать тупо. Две таблички взаимосвязать, как на пик2.
Так что для этого целый постгресс вытягивать и инталлер распаковывать?
Или сервер поднимать с проприетарным мускулом, состоящим из прекомпиленных файлов, блядь,
и писать скрипты на PHP, и делать целый сайт и ещё и хостить его, блядь?
379 2021600
>>2020275
Да я уже заебался с ней, просто, пиздец как.
Нихуя документации, годной, в этом ебучем тырнете, найти не могу, блядь.
Там всё копирастическим и корпоратокративным языком написано, чтобы запутать анона, и чтобы он забил на это хуй поскорей.

У меня, здесь, короче, Windows XP, CSharp (C#), и .NET Framework 4.0. И ещё есть mono на ubuntu,
где можно запускать шарповый код, совместимый с .NET Framework 4.0.

Единственную норм приложуху для тыканья sqlite3 DB, что я нашёл -
так это мокрописька Sqlite Expert Professional 5.3 (x86), с кряком от васяна.
Да, там есть гуй, и куча всяких свистоперделок, но сореца нету нихуя.

Я вижу, что она использует sqlite3.dll , потому что она есть там, внутри, прекомпиленная.
А где её сорец и как её сбилдить, и как юзать - вообще непонятно нихуя.

Нашёл здесь: https://github.com/moneymanagerex/System.Data.SQLite
сорец System.Data.SQLite.dll вроде оно компилится на c# ,
и на выходе в папке System.Data.SQLite-master\bin\2010\Win32\Debug\System.Data.SQLite.dll
лежит многовесный файл 2,80 МБ.
Он, походу, содержит в себе System.Data.SQLite.Interop.dll, который просят всякие гуи,
и работает как sqlite3.dll
Другой файл \System.Data.SQLite-master\bin\2010\Debug\bin\System.Data.SQLite.dll
имеет меньший размер, и когда его кидаешь, просит SQLite.Interop.dll (а я ебу что это такое ваще).
Ещё, в папке \System.Data.SQLite-master\bin\2010\Debug\bin\ куча всяких других, непонятных dll-лок,
я уже заебался гуглить всю эту хуйню и закрывать вкладки, эти ебучие, а потом опять открывать, и закрывать, блядь.
Искал я как работать с этой хуйнёй на шарпе, наткнулся на это: https://devpractice.ru/sqlite-c/
И там, внутри, какие-то конструкции из кода нагороженные, нихуя не понятно что к чему.
Затем я искал нормальное API, и наткнулся на вот такую софтину: https://github.com/donet5/SqliteSugar
хоть она и компилится, но там многобукв в коде, ещё и по-китайски.

Хотелось, бы, блядь, одну dll-ку, из кода скомпилить, приложить её, и дёргать за апи-методы, и пхать туда sql-запросы,
а не писать в говнокоде ебические конструкции, каждый раз подключаться, блядь, к файлу базы, для каждой операции,
и развозить всю эту хуйню - на 10,000 строк.
Судя по сайту https://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki
там есть справка в формате CHM, как его открыть - вообще не ебу, у меня открывается окно, а там такое говно.
Короче, блядь, как заебал уже весь этот пердолинг ебучий,
да и нахуй мне все эти функции и свистоперделки сиквелайта?

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

>>2020674

>Я бы не стал доверять данные серверу, на котором такие проблемы с окружением.


А я бы напротив сделал софтины обратно-совместимыми даже с таким вот сервером, чтобы они были вообще пиздец какими кроссплатформенными.

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


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


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

>А могут быть свободные. Ты наугад выбираешь СУБД что ли, или всё-таки ищешь подходящую под задачи с подходящей лицензией?


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

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


ВОТ. Есть где-то вводная инфа, о том, как это можно сделать?

>Множество CSV-файлов. занимать будет дохуя места, запросы будут медленными, постоянная перезапись файлов быстро убьёт диск.


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

>Примитивная СУБД так и будет работать.


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

>Именно так, поэтому этого не делают.


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

>Гугли 12 правил Кодда, это минимальные требования к реляционной СУБД.


Годно, но них ещё врубиться надо, по хардкору, чтобы понять их.

>Написать с нуля, конечно, возможно всё, но легко сдаться на первых сложностях наподобие реализации ACID-транзакций.


Ну это вообще космос. А нафиг они нужны?

>Короче, бери sqlite.


А на sqlite существуют какие-нибудь сайты на шарпе?
Вот, например, какой-нибудь сайт с личным кабинетом, интернет-аукцион, скажем,
где юзер может зарегистрироваться и зайти в аккаунт?

>>2021264
Тут есть NoSQL базы данных, то есть, как-бы нереляционные.
А мне надо реляционная, потому что там можно взаимосвязывать таблицы.
И мне нахуй не нужны ебические СУБД со всякими проприетарными лицензиями, которые просят бабала, и ставятся прямо в систему из инсталлера,
или запускаются на сервере где-то, где могут спиздить данные, блядь.
В идеале, я бы хотел простую и легковесную СУБД, желательно свою, и чтобы она была портабельной на флешке, как сиквелайт,
и чтобы, тупо чтобы вязать всякую хуйню, наподобии пикрил.
Вот надо расписание, например, сделать тупо. Две таблички взаимосвязать, как на пик2.
Так что для этого целый постгресс вытягивать и инталлер распаковывать?
Или сервер поднимать с проприетарным мускулом, состоящим из прекомпиленных файлов, блядь,
и писать скрипты на PHP, и делать целый сайт и ещё и хостить его, блядь?
380 2021626
>>2021600

>00


Что это было? Сиквелайт, дабл, или колоночная?
381 2021660
>>2021600
Что ты несёшь? Что ты блядь несёшь?

Идёшь на https://www.sqlite.org/index.html
Качаешь, там же берешь документауцию. Потом обращавшся из своего ёбаного питушарпа к базе и пишешь данные. Если не знаешь как пишешь в гугле ПИТУШАРП СИКВЛАЙТ, читаешь и обращаешся. Что блядь сложного?
Какой нахуй xp? Какаой нахуй хелп локальный? Тебя что там разморозили: Как там в нулевых?
382 2021666
>>2021626
Ну там перенос тсроки проебался, на простой дабл берёшь что хочешь, на особые дабл берешь согласно списку. А то что она колоночная..НУ хули, ролл есть ролл
383 2021736
>>2021600

> Там всё копирастическим и корпоратокративным языком написано, чтобы запутать анона, и чтобы он забил на это хуй поскорей.


Нет, это чтобы не было разночтений, и дока была исчерпывающей. Невозможно описать сложную систему простым языков без опускания подробностей.

> Единственную норм приложуху для тыканья sqlite3 DB, что я нашёл -


> так это мокрописька Sqlite Expert Professional 5.3 (x86), с кряком от васяна.


Редко надо руками копаться в БД, обычно всё нужное делают сайты/программы, которые пишешь.

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


> Ну и, опционально уже, прикрутить туда возможность индексации/репликации, и всю хуйню эту вот.


> Но так, чтобы было опенсорец вообще заебатый.


Так и напишешь свои 100500 строк, будет ничем не лучше существующего.

> А я бы напротив сделал софтины обратно-совместимыми даже с таким вот сервером, чтобы они были вообще пиздец какими кроссплатформенными.


Если заниматься поддержкой всех некро-платформ с 3.5 пользователей, времени на разработку самой СУБД не будет вообще.

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


Зачем, если все исходники postgresql, mariadb и sqlite полностью доступны. То что сложно и многабукаф - это другой вопрос.

> Я хочу самую свободную и реляционную СУБД


postgresql, mariadb, sqlite.

> ВОТ. Есть где-то вводная инфа, о том, как это можно сделать?


Это сложная задача, которой обычно занимается толпа сеньоров с многолетним стажем. Читают талмуды на 1к страниц с лютой теорией, изучают архитектуру, документацию, опирацию на свой опыт юзания тонкостей существующих СУБД, много думают и пишут, лет через 5-10 что-то толковое может и получается.

> А если в архиве их хранить, чтоб дохуя места не занимали - это раз.


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

> Во-вторых, писать в оперативу, её скидывать в кэш, а из кэша потом обновлять их в архиве?


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

> Вот именно это и вертелось, и вертится на уме. Сделать примитивную СУБД, которая тупо работала бы с одним бинарным файлом. И что если писать прямо в конкретные смещения, на диске, не перезаписывая весь файл?


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

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


Экспоненциальный рост числа этих нуллов быстро сожрёт всё свободное место на диске. Если у тебя есть 10 таблиц, в каждой по 10 колонок и по 100 записей (сравнительноая небольшая БД), но при превращении в одну огромную таблицу это будет (10x100)^10 = 1000000000000000000000000000000 ячеек, каждая в лучшем случае будет занимать один байт.

> А на sqlite существуют какие-нибудь сайты на шарпе?


> Вот, например, какой-нибудь сайт с личным кабинетом, интернет-аукцион, скажем,


> где юзер может зарегистрироваться и зайти в аккаунт?


С расчётом на 10-20 не очень активных пользователей, может, и существует. Sqlite и друие подобные БД, где всё в одном файле, хреново масштабируются.
383 2021736
>>2021600

> Там всё копирастическим и корпоратокративным языком написано, чтобы запутать анона, и чтобы он забил на это хуй поскорей.


Нет, это чтобы не было разночтений, и дока была исчерпывающей. Невозможно описать сложную систему простым языков без опускания подробностей.

> Единственную норм приложуху для тыканья sqlite3 DB, что я нашёл -


> так это мокрописька Sqlite Expert Professional 5.3 (x86), с кряком от васяна.


Редко надо руками копаться в БД, обычно всё нужное делают сайты/программы, которые пишешь.

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


> Ну и, опционально уже, прикрутить туда возможность индексации/репликации, и всю хуйню эту вот.


> Но так, чтобы было опенсорец вообще заебатый.


Так и напишешь свои 100500 строк, будет ничем не лучше существующего.

> А я бы напротив сделал софтины обратно-совместимыми даже с таким вот сервером, чтобы они были вообще пиздец какими кроссплатформенными.


Если заниматься поддержкой всех некро-платформ с 3.5 пользователей, времени на разработку самой СУБД не будет вообще.

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


Зачем, если все исходники postgresql, mariadb и sqlite полностью доступны. То что сложно и многабукаф - это другой вопрос.

> Я хочу самую свободную и реляционную СУБД


postgresql, mariadb, sqlite.

> ВОТ. Есть где-то вводная инфа, о том, как это можно сделать?


Это сложная задача, которой обычно занимается толпа сеньоров с многолетним стажем. Читают талмуды на 1к страниц с лютой теорией, изучают архитектуру, документацию, опирацию на свой опыт юзания тонкостей существующих СУБД, много думают и пишут, лет через 5-10 что-то толковое может и получается.

> А если в архиве их хранить, чтоб дохуя места не занимали - это раз.


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

> Во-вторых, писать в оперативу, её скидывать в кэш, а из кэша потом обновлять их в архиве?


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

> Вот именно это и вертелось, и вертится на уме. Сделать примитивную СУБД, которая тупо работала бы с одним бинарным файлом. И что если писать прямо в конкретные смещения, на диске, не перезаписывая весь файл?


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

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


Экспоненциальный рост числа этих нуллов быстро сожрёт всё свободное место на диске. Если у тебя есть 10 таблиц, в каждой по 10 колонок и по 100 записей (сравнительноая небольшая БД), но при превращении в одну огромную таблицу это будет (10x100)^10 = 1000000000000000000000000000000 ячеек, каждая в лучшем случае будет занимать один байт.

> А на sqlite существуют какие-нибудь сайты на шарпе?


> Вот, например, какой-нибудь сайт с личным кабинетом, интернет-аукцион, скажем,


> где юзер может зарегистрироваться и зайти в аккаунт?


С расчётом на 10-20 не очень активных пользователей, может, и существует. Sqlite и друие подобные БД, где всё в одном файле, хреново масштабируются.
384 2022234
image.png103 Кб, 600x442
385 2022413
>>2021660

>Что ты несёшь? Что ты блядь несёшь?


Жопоболь свою несу, от пердолинга, заебало гуглить уже.

>Идёшь на https://www.sqlite.org/index.html


>Качаешь, там же берешь документауцию.


Ну и чё? Открываю вкладку, иду на Documentation, вижу кучу букв по-английски, и закрываю вкладку. И так каждый раз.
Там ни слова про System.Data.SQLite, и как его юзать, блядь.
Только вот здесь: https://devpractice.ru/sqlite-c/
я нашёл некие фрагменты кода,
но оно эта софтина: https://github.com/devpractice-repo/SQLiteAndCSharp
какая-то недопиленная, скорее тестовый пример, просто.
Там нет описания всех функций и методов этой длл-ки System.Data.SQLite.dll и прочих.
А вот здесь, хоть и есть описание длл-лок: https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
но там ещё больше букв, и не вижу описания методов и примеров их использования.

> Если не знаешь как пишешь в гугле ПИТУШАРП СИКВЛАЙТ, читаешь и обращаешся. Что блядь сложного?


Писал на github'e sqlite api, sqlite c#, смотрел кучу кода,
там блядь TargetNetFramework 4.5, 4.6.5, какие-то Sdk, nuget packages, хуй знает что ещё, но на .NET Framework 4.0 оно не стаёт и не компилится нихуя, в Microsoft Visual Studio 2010 кококонпелятор бьёт ошибок хуеву кучу, заебало уже вкладки с этими недопиленными репозитариями закрывать.
Обратная совместимость оставляет желать лучшего, это пиздец какой-то.

>Какой нахуй xp?


Каноничный, legacy, который.

>Какаой нахуй хелп локальный?


А вот тот CHM-файл, что внизу, здесь: https://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki

>Тебя что там разморозили: Как там в нулевых?


Я на XP-юше с 2002-го года, лол, Windows Vista не ставил, потому что.

>>2021666
Колоночная (00) - отпадает, пушо она не реляционная и там нельзя взаимосвязывать таблицы, блядь.
Значит либо пердолить свою СУБД (дабл), либо sqlite (0).
Хотя хз, может и есть где-то колоночные реляционные, лол.

>>2021736

>Нет, это чтобы не было разночтений, и дока была исчерпывающей. Невозможно описать сложную систему простым языков без опускания подробностей.


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

>Редко надо руками копаться в БД, обычно всё нужное делают сайты/программы, которые пишешь.


Ну, чтобы посмотреть те же view'ы в SQLite, надо запускать эту ёбу, а она ещё и памят жрёт немало. Два экземпляра запускаю - синий и экран смерти, выхватываю, блядь.

>Так и напишешь свои 100500 строк, будет ничем не лучше существующего.


Бля. А если минимализмом обмазаться, и низвести всё до таблиц, связей между ними, и CRUD, без индексаций, репликаций, транзакций, и прочих фич? Разумеется, с перспективой их допиливания. И сделать это кроссплатформенным и опенсорцным.

>Если заниматься поддержкой всех некро-платформ с 3.5 пользователей, времени на разработку самой СУБД не будет вообще.


Да блядь, я на XP столько софта видел, была самая популярная ось, пикрил. А ты говоришь 3.5 юзера, лол.

>Зачем, если все исходники postgresql, mariadb и sqlite полностью доступны. То что сложно и многабукаф - это другой вопрос.


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

>Это сложная задача, которой обычно занимается толпа сеньоров с многолетним стажем.


>Читают талмуды на 1к страниц с лютой теорией, изучают архитектуру, документацию,


>опирацию на свой опыт юзания тонкостей существующих СУБД,


>много думают и пишут, лет через 5-10 что-то толковое может и получается.


Бля... Ну пускай себе занимаются, тогда.

>> Вот именно это и вертелось, и вертится на уме.


>>Сделать примитивную СУБД, которая тупо работала бы с одним бинарным файлом.


>>И что если писать прямо в конкретные смещения, на диске, не перезаписывая весь файл?


>Ну, я где-то читал, что в наноборде изобрели что-то подобное, хранят бинарник и работают по смещениям,


>которые находят через самописный индекс. Не сильно интересовался темой.


Там тупо каждый нанопост имеет фиксированное число данных (читай что это одна строка одной таблицы),
и всё это пишется в db3-файл сыро, как raw-данные.
Отдельно, формируется индекс, в виде файла со смещениями,
https://github.com/username1565/nanoboard/blob/8f0edd8d02b9f680f7ce1f70ddd29b8f7c367110/nanodb.exe-source/Database/PostDb.cs#L28
И этот индекс быстрее загружается в память.
По индексу, уже, по ключам (хэшам), извлекаются уже смещения, а по ним - сами нанопосты из двоичного файла,
чтобы не вгружать весь двоичный файл в память.
Но, как я уже написал, весь двоичный файл - он как одна пиздатая таблица,
и там нет реляционной базы данных, как таковой, там нет множества таблиц, и их взаимосвязей.
Если сделать две-три таблицы взаимосвязанные или стопицот таблиц, то яебу как эту хуйню хранить в таком виде,
наверное надо кучу баз и кучу индексов создавать, а логику их обработки (sql-запросы, всякие), внутри кода вхардкодить, блядь.
Ебанина пиздецкая, короче, такая что даже в башке не помещается планирование этого действа.

>Но тут много других проблем возникает,


>например, что если при обновлении данные увеличились и не влезают в то место, где хранились раньше,


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

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


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

>Экспоненциальный рост числа этих нуллов быстро сожрёт всё свободное место на диске.


>Если у тебя есть 10 таблиц, в каждой по 10 колонок и по 100 записей (сравнительноая небольшая БД),


>но при превращении в одну огромную таблицу это будет (10x100)^10 = 1000000000000000000000000000000 ячеек,


>каждая в лучшем случае будет занимать один байт.


А нахуя ты в степень возвёл? Там примерно 10x10x100 ячеек будет, разве не?
То есть, около 10000 ячеек, получается на все данные, где-то,
и в одной пиздатой таблице это 10000 строк,
где одна ячейка - значение в каком-то поле каждой строки таблицы.
В таблице, с числом полей 1(ID) + 3(имя таблицы, имя столбца, тип данных) + 5 (если брать все типы всевозможных данных, у sqlite 5 типов данных);
и вот в такой таблице - 10000 строк, как-бы:
код, имя таблицы, имя столбца, тип данных, и сами данные в соответствующем столбце из 5-ти возможных типов.
Всего, столбцов 9, и 10000 строк - 90000 ячеек, получается.
image.png103 Кб, 600x442
385 2022413
>>2021660

>Что ты несёшь? Что ты блядь несёшь?


Жопоболь свою несу, от пердолинга, заебало гуглить уже.

>Идёшь на https://www.sqlite.org/index.html


>Качаешь, там же берешь документауцию.


Ну и чё? Открываю вкладку, иду на Documentation, вижу кучу букв по-английски, и закрываю вкладку. И так каждый раз.
Там ни слова про System.Data.SQLite, и как его юзать, блядь.
Только вот здесь: https://devpractice.ru/sqlite-c/
я нашёл некие фрагменты кода,
но оно эта софтина: https://github.com/devpractice-repo/SQLiteAndCSharp
какая-то недопиленная, скорее тестовый пример, просто.
Там нет описания всех функций и методов этой длл-ки System.Data.SQLite.dll и прочих.
А вот здесь, хоть и есть описание длл-лок: https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
но там ещё больше букв, и не вижу описания методов и примеров их использования.

> Если не знаешь как пишешь в гугле ПИТУШАРП СИКВЛАЙТ, читаешь и обращаешся. Что блядь сложного?


Писал на github'e sqlite api, sqlite c#, смотрел кучу кода,
там блядь TargetNetFramework 4.5, 4.6.5, какие-то Sdk, nuget packages, хуй знает что ещё, но на .NET Framework 4.0 оно не стаёт и не компилится нихуя, в Microsoft Visual Studio 2010 кококонпелятор бьёт ошибок хуеву кучу, заебало уже вкладки с этими недопиленными репозитариями закрывать.
Обратная совместимость оставляет желать лучшего, это пиздец какой-то.

>Какой нахуй xp?


Каноничный, legacy, который.

>Какаой нахуй хелп локальный?


А вот тот CHM-файл, что внизу, здесь: https://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki

>Тебя что там разморозили: Как там в нулевых?


Я на XP-юше с 2002-го года, лол, Windows Vista не ставил, потому что.

>>2021666
Колоночная (00) - отпадает, пушо она не реляционная и там нельзя взаимосвязывать таблицы, блядь.
Значит либо пердолить свою СУБД (дабл), либо sqlite (0).
Хотя хз, может и есть где-то колоночные реляционные, лол.

>>2021736

>Нет, это чтобы не было разночтений, и дока была исчерпывающей. Невозможно описать сложную систему простым языков без опускания подробностей.


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

>Редко надо руками копаться в БД, обычно всё нужное делают сайты/программы, которые пишешь.


Ну, чтобы посмотреть те же view'ы в SQLite, надо запускать эту ёбу, а она ещё и памят жрёт немало. Два экземпляра запускаю - синий и экран смерти, выхватываю, блядь.

>Так и напишешь свои 100500 строк, будет ничем не лучше существующего.


Бля. А если минимализмом обмазаться, и низвести всё до таблиц, связей между ними, и CRUD, без индексаций, репликаций, транзакций, и прочих фич? Разумеется, с перспективой их допиливания. И сделать это кроссплатформенным и опенсорцным.

>Если заниматься поддержкой всех некро-платформ с 3.5 пользователей, времени на разработку самой СУБД не будет вообще.


Да блядь, я на XP столько софта видел, была самая популярная ось, пикрил. А ты говоришь 3.5 юзера, лол.

>Зачем, если все исходники postgresql, mariadb и sqlite полностью доступны. То что сложно и многабукаф - это другой вопрос.


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

>Это сложная задача, которой обычно занимается толпа сеньоров с многолетним стажем.


>Читают талмуды на 1к страниц с лютой теорией, изучают архитектуру, документацию,


>опирацию на свой опыт юзания тонкостей существующих СУБД,


>много думают и пишут, лет через 5-10 что-то толковое может и получается.


Бля... Ну пускай себе занимаются, тогда.

>> Вот именно это и вертелось, и вертится на уме.


>>Сделать примитивную СУБД, которая тупо работала бы с одним бинарным файлом.


>>И что если писать прямо в конкретные смещения, на диске, не перезаписывая весь файл?


>Ну, я где-то читал, что в наноборде изобрели что-то подобное, хранят бинарник и работают по смещениям,


>которые находят через самописный индекс. Не сильно интересовался темой.


Там тупо каждый нанопост имеет фиксированное число данных (читай что это одна строка одной таблицы),
и всё это пишется в db3-файл сыро, как raw-данные.
Отдельно, формируется индекс, в виде файла со смещениями,
https://github.com/username1565/nanoboard/blob/8f0edd8d02b9f680f7ce1f70ddd29b8f7c367110/nanodb.exe-source/Database/PostDb.cs#L28
И этот индекс быстрее загружается в память.
По индексу, уже, по ключам (хэшам), извлекаются уже смещения, а по ним - сами нанопосты из двоичного файла,
чтобы не вгружать весь двоичный файл в память.
Но, как я уже написал, весь двоичный файл - он как одна пиздатая таблица,
и там нет реляционной базы данных, как таковой, там нет множества таблиц, и их взаимосвязей.
Если сделать две-три таблицы взаимосвязанные или стопицот таблиц, то яебу как эту хуйню хранить в таком виде,
наверное надо кучу баз и кучу индексов создавать, а логику их обработки (sql-запросы, всякие), внутри кода вхардкодить, блядь.
Ебанина пиздецкая, короче, такая что даже в башке не помещается планирование этого действа.

>Но тут много других проблем возникает,


>например, что если при обновлении данные увеличились и не влезают в то место, где хранились раньше,


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

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


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

>Экспоненциальный рост числа этих нуллов быстро сожрёт всё свободное место на диске.


>Если у тебя есть 10 таблиц, в каждой по 10 колонок и по 100 записей (сравнительноая небольшая БД),


>но при превращении в одну огромную таблицу это будет (10x100)^10 = 1000000000000000000000000000000 ячеек,


>каждая в лучшем случае будет занимать один байт.


А нахуя ты в степень возвёл? Там примерно 10x10x100 ячеек будет, разве не?
То есть, около 10000 ячеек, получается на все данные, где-то,
и в одной пиздатой таблице это 10000 строк,
где одна ячейка - значение в каком-то поле каждой строки таблицы.
В таблице, с числом полей 1(ID) + 3(имя таблицы, имя столбца, тип данных) + 5 (если брать все типы всевозможных данных, у sqlite 5 типов данных);
и вот в такой таблице - 10000 строк, как-бы:
код, имя таблицы, имя столбца, тип данных, и сами данные в соответствующем столбце из 5-ти возможных типов.
Всего, столбцов 9, и 10000 строк - 90000 ячеек, получается.
386 2022419
>>2021736

>С расчётом на 10-20 не очень активных пользователей, может, и существует. Sqlite и друие подобные БД, где всё в одном файле, хреново масштабируются.


Тут https://stackoverflow.com/a/3867722
пишут что 100к посетителей должен держать сайт с базой данных сиквелайт.
387 2022421
>>2021736

>хреново масштабируются.


А чё за масштабирование, и в чём именно возникают проблемы?
388 2022426
>>2022413

>А нахуя ты в степень возвёл? Там примерно 10x10x100 ячеек будет, разве не?


>То есть, около 10000 ячеек, получается на все данные, где-то,


>и в одной пиздатой таблице это 10000 строк,


>где одна ячейка - значение в каком-то поле каждой строки таблицы.


>В таблице, с числом полей 1(ID) + 3(имя таблицы, имя столбца, тип данных) +


>5 (если брать все типы всевозможных данных, у sqlite 5 типов данных);


>и вот в такой таблице - 10000 строк, как-бы:


>код, имя таблицы, имя столбца, тип данных, и сами данные в соответствующем столбце из 5-ти возможных типов.


>Всего, столбцов 9, и 10000 строк - 90000 ячеек, получается.


Это вариация god-table одного анона из предыдущих тредов, если чо, я тебя помню.
В первые строки подобной таблицы, можно вместить текстом,
имена таблиц, и имена столбцов внутри них, а также типы данных,
а чтобы не дублировать имена и типы в каждой строке этой таблицы - вставить ссылки на них, в виде кодов,
числами - так меньше текста должно быть продублировано.
Но вот поля для разных типов, должны быть отдельные,
потому что данные в них могут иметь разный размер,
например, какой-либо многовесный blob может быть размером в гигабайт.

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

Чем уже не самописная и главное - реляционная СУБД?
Быть может, можно заебенить всё это ещё более оптимально,
с минимальным числом строчек кода, чтобы не писать 1005000 строк, хз - это просто набросок.
389 2022430
>>2022413

>Но вот поля для разных типов, должны быть отдельные,


>потому что данные в них могут иметь разный размер,


>например, какой-либо многовесный blob может быть размером в гигабайт.


Можно сделать в 5 столбцов, походу:
Код данных, код таблицы, код столбца, код типа, сами данные.
При этом, как-бы, похуй какие данные, вообще, и какого они размера - писать их сырыми, да и всё.

>>Но тут много других проблем возникает,


>>например, что если при обновлении данные увеличились и не влезают в то место, где хранились раньше,


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


>а старые данные - затираются нуллями.


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


>Вот эта трабла там >>2022426 не решена. Когда нанопост удаляется навсегда одминчегом этой читалки постов,


>в двоичном файле, данные, просто филлятся нуллями, и индекс обновляется, но хэш сохраняется,


>а оффсеты в индексе обнуляются, и нанопост помечается что он удалён нах.


>Всё в коде есть, и расписано, но это не реляционная СУБД, и даже не БД,


>а просто одна таблица с постами и индекс для быстрой загрузки.


Если в блоб-е гигабайт, и он перезаписывается двух-гигабайтным блобом,
то индекс предыдущего блоба - обнуляется,
и пишется новая запись в большой таблице, уже с двух-гигабайтным блобом, и новым оффсетом в индексе.
Когда пишутся новые данные, они пишутся уже на место старого блоба,
и таким образом, база не растёт.
Но если не филлить нулями старый блоб, в базе будет мусор из байт старого блоба,
а если филлить нулями при каждом обновлении - вся хуйня будет медленно работать, и может убить диск.
Оффсеты мусора, можно отдельно помечать в индексе, чтобы на его место писать новые данные.
Но такая база будет фрагментированной, а как её дефрагментировать - хз.
389 2022430
>>2022413

>Но вот поля для разных типов, должны быть отдельные,


>потому что данные в них могут иметь разный размер,


>например, какой-либо многовесный blob может быть размером в гигабайт.


Можно сделать в 5 столбцов, походу:
Код данных, код таблицы, код столбца, код типа, сами данные.
При этом, как-бы, похуй какие данные, вообще, и какого они размера - писать их сырыми, да и всё.

>>Но тут много других проблем возникает,


>>например, что если при обновлении данные увеличились и не влезают в то место, где хранились раньше,


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


>а старые данные - затираются нуллями.


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


>Вот эта трабла там >>2022426 не решена. Когда нанопост удаляется навсегда одминчегом этой читалки постов,


>в двоичном файле, данные, просто филлятся нуллями, и индекс обновляется, но хэш сохраняется,


>а оффсеты в индексе обнуляются, и нанопост помечается что он удалён нах.


>Всё в коде есть, и расписано, но это не реляционная СУБД, и даже не БД,


>а просто одна таблица с постами и индекс для быстрой загрузки.


Если в блоб-е гигабайт, и он перезаписывается двух-гигабайтным блобом,
то индекс предыдущего блоба - обнуляется,
и пишется новая запись в большой таблице, уже с двух-гигабайтным блобом, и новым оффсетом в индексе.
Когда пишутся новые данные, они пишутся уже на место старого блоба,
и таким образом, база не растёт.
Но если не филлить нулями старый блоб, в базе будет мусор из байт старого блоба,
а если филлить нулями при каждом обновлении - вся хуйня будет медленно работать, и может убить диск.
Оффсеты мусора, можно отдельно помечать в индексе, чтобы на его место писать новые данные.
Но такая база будет фрагментированной, а как её дефрагментировать - хз.
390 2022462
>>2022413

>Колоночная (00) - отпадает, пушо она не реляционная и там нельзя взаимосвязывать таблицы, блядь.


Значит либо пердолить свою СУБД (дабл), либо sqlite (0).

Пожалуй начну костылить и пердолить свою личную СУБД, по даблу.
Не знаю, на сколько хватит энтузиазма, блядь. Вот черновой вариант, описания, пока-что: https://pastebin.com/HjWmbk5Z
Кода, разумеется, пока нет, но теория какая-никакая, уже есть, как-бэ, можете поправить, если чо.

Если из колоночной базы данных можно сделать релюцивонную, наверное и колоночная сошла бы, хз.
16195383834260.png28 Кб, 210x146
391 2022629
>>2022413
Можно потоньше плиз?
392 2023097
>>2022629
Тоньше уже некуда.
393 2024242
>>1964573 (OP)
Как в SQLite вставить строчку данных с произвольным числом столбцов, всех возможных типов,
данных, типы которые неизвестны,
ведь они могут быть в разном порядке и дублироваться?
394 2024247
>>2024242
Никак, это тебе не mongodb. Храни в text или blob, обрабатывай на уровне положения.
395 2024249
>>2024247
Всё, я понял уже. Надо просто вопросиков напихать, а параметры - уже потом приклеить. https://www.devart.com/dotconnect/sqlite/docs/parameters.html
396 2024253
>>2024249

>Надо просто вопросиков напихать


Хуёво выразился. Проясню:

>VALUES (?, ?, ?)


И число этих вопросиков - число столбцов, со значениями.
397 2024726
>>1964573 (OP)
Анон, какие ты знаешь ДЕЦЕНТРАЛИЗИРОВАННЫЕ базы данных,
такие, чтобы они не имели центра, который можно разбобить ракетами?
Быть может, есть какие-то зашифрованные базы данных на блокчейнах, или что-то наподобие этого?
Первое что приходит в голову, это тупо сделать ноды для раздачи таблиц, сконвертированных в CSV или JSON, чтобы можно было синхронить данные между нодами, и скачать с любой ноды, просто подключившись к ней.
Но гонять в открытом виде данные и шарить их кому не попадя - так себе затея, ведь данные могут быть и секретными, ну или приватными, конфиденциальными, скажем.
И хотя, ничто и не мешает зашифровать их, но при длительном хранении в общем доступе, даже в зашифрованном виде - растёт риск брутфорса ключа шифрования.
398 2025104
>>2024726
Cassandra
399 2025125
>>2025104

>NoSQL


А чтобы реляционная?
400 2026400
>>1964573 (OP)
Скачал отсюда: https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
Это: sqlite-netFx-source-1.0.113.0.zip (f2f89d1fc36658b1509bfa0ffa7ae31203b8f2a8)
Билдю на windows:

>set fdir=%WINDIR%\Microsoft.NET\Framework


>set msbuild=%fdir%\v4.0.30319\msbuild.exe


>%msbuild% System.Data.SQLite\System.Data.SQLite.Module.2010.csproj


>%msbuild% SQLite.Interop\SQLite.Interop.2010.vcxproj


>pause


На выходе получаю \sqlite-netFx-source-1.0.113.0\bin\2010\Win32\Debug\System.Data.SQLite.dll
которая содержит внутри себя - SQLite.Interop.dll

Как получить этт же файл, но на linux, из-под mono, используя xbuild или msbuild?
401 2026419
>>2026400
Запустил, короче, это:
\sqlite-netFx-source-1.0.113.0\Setup\compile-interop-assembly-release.sh
получил SQLite.Interop.dll.
Переименовал его в System.Data.SQLite.dll и попытался запустить на шинде - не робит.
Открыл его потом блокнотом, и вижу ELF в начале файла,
а внутри System.Data.SQLite.dll, где SQLite.Interop.dll содержится, там MZђ

Как получить MZђ?
402 2026422
>>2026400
На шинде, с этим батником, также работает минимальная сборка кода,
это папки "Keys", "Targets", "SQLite.Interop", и "System.Data.SQLite", плюс этот вот зелёный код в батнике build.bat .
При его запуске, сразу появляются две папки bin и obj,
и внутри многовесного файла на несколько метрабайт -
\sqlite-netFx-source-1.0.113.0\bin\2010\Win32\Debug\System.Data.SQLite.dll
содержится SQLite.Interop.dll тоже.

Но это всё на шинде. А как из под линуксом, с помощью mono, xbuild'ом/msbuild'ом именно эту вот, хуйню получить - хз.
403 2026804
>>2021600

>там есть справка в формате CHM, как его открыть - вообще не ебу, у меня открывается окно, а там такое говно.


Сравнил тот файл с этим:

https://github.com/moneymanagerex/System.Data.SQLite/blob/master/Doc/SQLite.NET.chm

И вижу отличия. В чём - не пойму, просто разные размеры.
Этот файл, вроде открывается, и там куча инфы по ангельски.
Пиздос объебос, буду терь грызть маны эти ебучие.
404 2027866
>>1964573 (OP)
Ну всё, теперь вы все будете числиться, у меня - в моей в базе данных.
405 2028741
>>1964573 (OP)
Аноны, нужно материалов, чтобы быстро заучить особенности sql и в частности постгреса. Синтаксис и как юзается знаю, а вот конкретные определения, например, форейн ключей, констрэйнтов итд нет. Надо чтоб особо не ебаться с длинными статьями или тем более книгами, подготовиться к собеседованию
406 2028807
>>2021600

>Судя по сайту https://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki


>там есть справка в формате CHM, как его открыть - вообще не ебу, у меня открывается окно, а там такое говно.


Закинул этот CHM-файл прямо на диск, в корень - открылось.
Он не открывался, потому что я его забросил в такие ебеня...

>Диск:\папка1\папка2\папка2\...\папка100500\SQLite.NET.CHM


что пути к html-файлам в архиве, уже просто - в память не лезли.

Сравнил с помощью WinMerge
Этот файл: https://system.data.sqlite.org/index.html/doc/trunk/Doc/SQLite.NET.chm?mimetype=application/x-chm
с этим:
https://github.com/moneymanagerex/System.Data.SQLite/blob/master/Doc/SQLite.NET.chm
И такие длинные названия у файлов увидел там, что охуеть просто.
image.png42 Кб, 512x318
407 2028847
>>2028741
Гугл же, не?
Главное ведь - это понять саму суть, и просто запомнить её.

Что там у тебя?
Constraint (констрейнт)...
Смотри сюда: https://www.techonthenet.com/sql_server/unique.php
Видишь строчку:

>CONSTRAINT constraint_name UNIQUE (uc_col1, uc_col2, ... uc_col_n)


Запомни её.
Вкратце, констрейнт - это список полей, которые однозначно идентифицируют каждую запись в таблице,
при этом, если значения других полей констрейнта в записи - уникальны для неё, то значения некоторых полей констрейнта - могут быть NULL,
в отличие от Primary Key (первичного ключа, PK), который содержит уникальные значения, но не NULL,
и как правило значения Primary Key присваиваются автоматически (Autoincrement).
Но существуют таблицы без Primary Key,
например: в таблице |Фамилия|Имя|Отчество|СерияПаспорта|НомерПаспорта|ИНН|
Можно не использовать уникальный номер для каждой записи, а идентифицировать каждую уникальную запись - по уникальным данным,
даже если ИНН или паспорт не указан (тогда, он может быть NULL).

Дальше... Что там у тебя?
FOREIGN KEY (Внешний ключ, FK). Смотри сюда: https://www.w3schools.com/sql/sql_foreignkey.asp
Видишь строчку:

>FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)


Запомни её, в частности - ключевое слово REFERENCES для FK.
Вкратце, Foreign Key, нужен для связи таблиц, позволяя формировать этими связями - сложные схемы данных: https://www.google.com/search?q=database+schema&tbm=isch
И главное то, что этим внешним ключем, может быть как одно поле, так и констрейнт (да-да, таблица может иметь много внешних ключей и связей с другими таблицами):
https://metanit.com/sql/mysql/2.5.php

В примере на пикрил, у промежуточной таблицы, реализующей связь "многие-ко-многим" - два Foreign Keys,
это поле "gengreID" - ForeignKey1, и он СВЯЗАН с Primary Key ("ID") - таблицы "gengre" ("жанры"),
и поле "filmID" - ForeignKey2, и он СВЯЗАН с PrimaryKey ("ID") - уже другой таблицы ("films", фильмы).
В то время как первичные ключи - уникальны, значения полей вторичного ключа могут повторяться у разных записей, поэтому он "вторичный",
а следовательно, при связи таблиц формируется связь "один-ко-многим" (одно значение первичного ключа - много значений вторичного),
а через две связи "один-ко-многим" и промежуточную таблицу (эту самую, среднюю), формируется связь "многие-ко-многим".
И действительно, один фильм ("8 первых свиданий") - может иметь много жанров,
но и один жанр ("боевик"), может быть для множества фильмов.
image.png42 Кб, 512x318
407 2028847
>>2028741
Гугл же, не?
Главное ведь - это понять саму суть, и просто запомнить её.

Что там у тебя?
Constraint (констрейнт)...
Смотри сюда: https://www.techonthenet.com/sql_server/unique.php
Видишь строчку:

>CONSTRAINT constraint_name UNIQUE (uc_col1, uc_col2, ... uc_col_n)


Запомни её.
Вкратце, констрейнт - это список полей, которые однозначно идентифицируют каждую запись в таблице,
при этом, если значения других полей констрейнта в записи - уникальны для неё, то значения некоторых полей констрейнта - могут быть NULL,
в отличие от Primary Key (первичного ключа, PK), который содержит уникальные значения, но не NULL,
и как правило значения Primary Key присваиваются автоматически (Autoincrement).
Но существуют таблицы без Primary Key,
например: в таблице |Фамилия|Имя|Отчество|СерияПаспорта|НомерПаспорта|ИНН|
Можно не использовать уникальный номер для каждой записи, а идентифицировать каждую уникальную запись - по уникальным данным,
даже если ИНН или паспорт не указан (тогда, он может быть NULL).

Дальше... Что там у тебя?
FOREIGN KEY (Внешний ключ, FK). Смотри сюда: https://www.w3schools.com/sql/sql_foreignkey.asp
Видишь строчку:

>FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)


Запомни её, в частности - ключевое слово REFERENCES для FK.
Вкратце, Foreign Key, нужен для связи таблиц, позволяя формировать этими связями - сложные схемы данных: https://www.google.com/search?q=database+schema&tbm=isch
И главное то, что этим внешним ключем, может быть как одно поле, так и констрейнт (да-да, таблица может иметь много внешних ключей и связей с другими таблицами):
https://metanit.com/sql/mysql/2.5.php

В примере на пикрил, у промежуточной таблицы, реализующей связь "многие-ко-многим" - два Foreign Keys,
это поле "gengreID" - ForeignKey1, и он СВЯЗАН с Primary Key ("ID") - таблицы "gengre" ("жанры"),
и поле "filmID" - ForeignKey2, и он СВЯЗАН с PrimaryKey ("ID") - уже другой таблицы ("films", фильмы).
В то время как первичные ключи - уникальны, значения полей вторичного ключа могут повторяться у разных записей, поэтому он "вторичный",
а следовательно, при связи таблиц формируется связь "один-ко-многим" (одно значение первичного ключа - много значений вторичного),
а через две связи "один-ко-многим" и промежуточную таблицу (эту самую, среднюю), формируется связь "многие-ко-многим".
И действительно, один фильм ("8 первых свиданий") - может иметь много жанров,
но и один жанр ("боевик"), может быть для множества фильмов.
408 2028852
>>2028847
Понятие constraint немного шире, это любое условие на данные в таблице, не только уникальность. Foreign key, внезапно, тоже constraint. Вот так вот научитесь по своему гуглу.
409 2028855
>>2021573
Бампую вопрос.
410 2028865
image.png17 Кб, 471x307
411 2031511
1.
SELECT DISTINCT maker
FROM product
WHERE type = 'pc'
EXCEPT
SELECT DISTINCT maker
FROM product
Where type = 'laptop'

2.
SELECT DISTINCT maker
FROM product
WHERE model IN(
SELECT model FROM PC
EXCEPT
SELECT model FROM laptop)

https://sql-ex.ru/learn_exercises.php?LN=8

Подскажите, почему второй вариант не верен? Разве что в таблице PC есть некоторые maker, которых нет в таблице product?
*/ Но это кажется невозможно по схеме бд
412 2031550
>>2031511

> есть некоторые maker


model, т.е.
413 2032218
>>2031511
Вы заебали со своими ссылками, там регу просит, нужно что-то делайте скриншоты.

Так что неебу что там в задача, но никто не делает EXCEPT ва таких селекатах\подзопросов.

Решаей через джоин с условием, либо через inner.
414 2034035
>>1964573 (OP)
Если любую реляционную базу данных,
со всеми её таблицами и взаимосвязями их,
можно представить в виде одной единственной таблицы,
то возможно ли эту таблицу,
хранить обычом одномерном массиве объектов с разными типами,
а пробегать, массив, как-то так:

>for(var cell=0; cell<arr.length; cell+= NumberOfCellsPerLine ){


> //arr[cell]; arr[cell+1]; ...; arr[cell+(NumberOfCellsPerLine-1)]; //ячейки этой универсальной таблицы.


>}


И чтобы ебались они конём эти проприетарные субд копирастические?
415 2034055
>>2034035
Господи, опять ты. Если тебе нужна некрофилия с Windows XP, лучше возьми C++ и компилируй sqlite под него вместо ебли с Mono.
Сделать-то можно, это как N-мерные массивы преобразуются в одномерные. Правда, твоя БД будет ощутимо тормозить уже на 1000 записях, занимаемое место будет быстро увеличиваться, малейший сбой при вводе-выводе приведёт БД в несогласованное состояние, схему придётся контроллировать программно, эффективное удаление и обновление записей будет невозможным, работа с БД будет однопоточной.
416 2034086
>>2034035
опять выходишь на связь мудило?
417 2034294
А как деплоить постгре? Раньше я использовал орм entity framework, которая сама из модели создавала таблицы, имела миграции. На работе еще не сильно вникал в настройку бд, но там дакпак с мсскл. Но ведь дакпаки есть только под мсскл, как вообще управляют не мссскл базой данных?
Или все тупо пишут самописные скрипты?
418 2034405
>>2034294
Смотря какой орм. Питухновский и пхпшный умеют кучу бд. Скорее всего ты не туда смотришь.
419 2034479
>>1964573 (OP)
Блин, нихрена не понимаю, в чем смысл кавычек в sql query? Вот например запрос в mysql:
SELECT "id" FROM "chattbale"

Кавычки есть. Но если такой же запрос сделать у меня в postgres то он ругается что "relation does not exist", работает только если их убрать. wtf это такое?
420 2034506
>>2034479
Кроме всего прочего, кавычки делают имя регистрозависимым. Имена в БД, как правило, называются капсом, и если в кавычках написать не капсом, имя просто не найдётся.
421 2034508
>>2034479
Кавычки делают имена регистрозависимыми.
422 2034522
Тоже недавно обосрался, назвал вьюху в оракле маленькими буквами, думал он автоматом перехуярит в капс как с таблицей, в итоге если название этой вьюхи было в запросе без кавычек, запрос падал с ошибкой, пришлось дропать её и переделывать.
423 2034598
Поспрашивайте меня по ораклу что-нибудь. Перестал с ним работать и очень скучаю.
424 2034609
>>2034598
>>2021573
Это главный вопрос который меня интересует по ораклу в данный момент.
425 2034660
>>2034609
Сори, чел, никогда этой темой не интересовался и никогда даже на собесах не спрашивали про этот сертификат, хотя я именно по этому профилю и устраивался раньше. А нахуя тебе?
426 2034697
2
427 2034786
>>2034598
Хуй сосешь?
428 2035272
>>2034660
Так и сказали на работе, получишь сертификат - компенсируем стоимость и добавим зп.
душный Sharepoint 429 2035395
Аноны подскажите плз, кто то сталкивался с такой еботней как SharePoint? темка такая, на нем построена система бухгалтерии, и самому бухгалтеру не приходит уведомление что заказжик залил какой то документ на сервер( я честно сказать вообще не вдупляю что происходит, но устроился на работу с умным ебалом сказал что я технического типа человек и вот дали такое задание). Как альтернативу вообще может накидаете мне литературы для изучения этой файлообменной системы. Вообще с чего начинать что бы понять как устранить проблему.(Еще существует вариант что этот бухгалтер как то отключил уведомления банально сам этого не понял, но я пока что ебал туда идти и спрашивать у этих бдушных бабок). КАРОЧЕ АНОН СПАСАЙ
430 2035516
>>2035395
А почему в этом треде, чел? Спроси в треде по C# или в общих.
431 2035556
>>1980756
Попробуй DBeaver. Вроде под линукс есть версия

мимо тестер
432 2035711
>>2035556
Даблую
image.png1,6 Мб, 900x900
433 2036379
Кто-то знает как хэшировать пароли в Access? Типа в форме вводим пароль, а он вносит в базу хэш.

И потом как-то замутить авторизацию и сравнивать введенные в форму данные с тем, что есть в самой бд?
434 2036413
>>2036379
В БД нет хешировпния и авторизаций, она просто хранит данные, которые ты пришлёшь из приложения, прислать ты должен уже хешированный пароль. Читай про функцих bcrypt, в зависимости от языка реализации могут быть разные, но суть в том, что она вычимлит хеш пароля, пришежшего из формы, хеш ты сохраняешь в БД, а затем, когда пользователь вводит пароль при входе, получаешь хеш из БД и с помощью специальной функции для сравнения сравниваешь значение в БД и переданное пользователем.
435 2036542
>>2036413
Вобще-то есть. У меня в MSSQL хранится хэш, делал не я, но я уверен что делалось на стороне бд.
436 2037042
>>2036379
Там вроде все делается через бейсик
437 2040144
Чет никак не пойму. Надо сохранить сущность, если в базе нет сущности с таким id, либо если сущность есть и выполняется какое-то условие. Как это все в один запрос впихнуть?
438 2040163
439 2040178
>>2040144
Зависит от СУБД, гугли upsert.
440 2040199
>>2040178
Upsert обычно делается если просто под условие ничего не подходит, это не то.
441 2040311
>>2040178

>Зависит от СУБД


Mongodb не бейте, лучше обоссыте
442 2040328
>>2040311
Нахуя тебе это говно мамонта?
db.huitas.update({query}, {update}, { upsert: true })
sage 443 2040339
>>2040328
Сука, ты ебаный тупорылый даун, который не в состоянии читать простые предложения и извлекать из них смысл, во всех тредах что ли сидит? Пошел нахуй блядь, долбоеб.
.jpg50 Кб, 600x600
444 2040354
445 2040494
>>2040354
произошёл подрыв, сделайте ему срочно insert огнетушителя
чот проиграл с шизика
446 2040773
>>1964573 (OP)
Куда перебазировать базу данных наших базовых предприятий, составляющих производственную базу на военно-морской базе?
447 2040789
>>2040773
Смешно.
448 2040846
Попытался прикрутить in-memory базу sqlite для юнит-тестов, а он почему-то ни один UPDATE не выполняет. Те же запросы в постгресе отрабатывают. ЧЯДНТ?
449 2040948
>>2040846
для in-memory бери redis
450 2040949
>>2040773
на базовую станицию на базовой полярной базе
451 2040959
>>2040948
Как я буду тестить скл-запросы редисом?
452 2041035
>>2040846
Может помимо подключения к базе (connection) , надо её ещё и открыть (connection open)?
453 2041112
>>2040948
In-memory там не самоцель, а для эмуляции в юнит-тестах обычной реляционной СУБД, чтобы подменить ораклы-постгресы
>>2040846
Возможно, у тебя условия where тупо вычисляются в false.
454 2041116
>>2041035
Create table/select/insert работают.
>>2041112
Точно такой же запрос пробую в sqlitebrowser - работает. В постгресе тоже.
455 2041968
>>1964573 (OP)
Работаю с Elastic, закачал репозитарий с докером, который ставит Эластик, вроде все работает как надо, создаю индекс, данные сохраняются и находятся
Но как только я останавливаю докер-контейнер и перезапускаю всё, данные обнуляются - созданного индекса больше нет и надо все делать по-новой. wtf?
456 2041996
>>2041968
у тебя данные все в контейнере, как только ты его останавливаешь все в пиздень схлопывается, и нихуя не остаётся, Тебе надо указать директорию для хранения файлов данных, т.е. всего того что должно остаться после закрытия контейнера. Покури доку, там опция котороя при запуске докера передаётся в контйенер, что-то типа храни данные бд в такой то папке за пределами контейнера.
457 2041997
>>2041116
Синтаксис лайта слегка отличается от T-SQL тогоже, RTFM
458 2042263
>>2041996
volume?
459 2042364
Как понять, что нужно нормализовывать, а что нет? Или вообще всё нужно?
Ну вот например мне нужно хранить не просто количество товаров в наличии, а количество товаров на каждую дату. Если это услуга какая-то мб. Я думал просто сделать таблицу, где будут дата, ид товара и количество. И складывать в неё все товары на все даты. Или нужно сделать ид даты, ид товара, количество? Просто как бы дата сама по себе уже как ид. Ну типа у меня не будет задачи изменить какую-то дату у всех товаров.
460 2042391
>>2042364
id количества еще можешь сделать, вдруг каких-то товаров будет одинаковое количество
461 2042395
>>2042391
А чем ид количества отличается от самого количества?
462 2042414
Сап, датабейсеры.
Есть задача - с как можно меньшим количеством усилий написать интерфейс для субд на mysql. Нужно разделение прав доступа(администратор/клиент) и отчетность по типу количество продаж того или иного товара из базы данных за месяц.
На чем это можно сделать эффективнее всего?
Изначально думал на питоне написать, но быстро там не получится.
Смотрел в сторону apex, но толковой инфы по нему в интернетах найти не смог.
463 2042417
>>2042364
>>2042395
У тебя будет таблица с датой, количеством и ID товара?
464 2042427
Аноны, есть ли способ заполнить таблицу одним и тем же значением (единицей или нулем) без перечисления этого значения в values? У меня в таблице 70 столбцов, и это проблема

очевидно я новичок, нагуглить не смог
465 2042434
>>2042427
У тебя столбцы уже есть и ты хочешь одно поле проставить определённым значением во всех строках?
update jepa set govno=100
чем не подходит?
466 2042447
>>2042427
Прописать default value.
467 2042453
>>2042434
У меня 70 столбцов, которым надо присвоить значение 1. По умолчанию у меня они 0, и это мне тоже нужно. Выходит что-то типа:
govno1 = 1, govno2 = 1, govno3 = 1 ... govno70 = 1
Еще могу сделать:
INSERT INTO JEPA
VALUES
(1, 1, 1, 1 ... (64 раза) 1)

Другого варианта нет, получается? Нельзя как-то взять диапазон столбцов или что-то такое и заполнить его нулями без этой писанины?
468 2042455
>>2042453
*заполнить единицами
469 2042537
>>2042453
Нет, нельзя.
470 2042618
>>2042417
Ну да
471 2042637
>>2042618
Судя по тому что ты это согласовываешь с анонами, а не с маняархитектором, это твоя личная поделка, так что можешь идентификатор записи не ставить. Условие уникальности по товару и дате ебани и охуенно будет.
472 2042659
Аноны, помогите вэб-макаке кое что понять.
Мне нужно помененять в базе данных даты со сдвигом по времени назад на 5 минут. Я использую такую команду:
... date = date - INTERVAL 5 minute
проблема в том что значение интревала - не статичные 5 минут, со сдвигом в 5 минут.
Тоесть первая запись приема с 08:00 до 08:20, вторая 08:20 до 08:40, потом третья 08:40 до 9.00 и так до 12 часов. Тоесть сдвиг в 5 минту.
Мне нужно уже существующие записи перекроить на 15 минутный интервал.
первый с 08:00 до 08:15,
второй с 08:15 ( тут минус 5 минут относительно прошлого значнеия 08:20 ) до 08.30 ,
третий с 08.30 ( а тут уже минус 10 минут относительно прошлого значения в ) до 08.45,
и т.д.
тоесть шаг изменения времени растет , и просто у каждой даты отнять 5 минут - не вариант
В принципе в рамках чистого sql можно ткое реализовать? Нужно что то типа переменной меняющейся после обновления каждой строки.
473 2042666
Проходим в вузе «биг дату» вот уже два месяца. На позапрошлой неделе нам объясняли кафку, а на этой ELK stack, но я вот нихуя не понял, что мы делаем и зачем. Можете посоветовать что-нибудь по теме вводное, где объясняют общую методологию всего этого без привязки к какому-нибудь конкретному решению? А то гуглил книжки по биг дате, почти про каждую пишут, что там «вода».
474 2042767
>>2042637
Идентификатор какой записи?
475 2042776
>>2042767
В таблице которую ты создаёшь с датой количеством и товаром.
476 2042815
>>2042659
Правильно ли я понимаю, что вместо 3 интервалов у тебя должно появиться 4?
Если это просто таблица с интервалами времени, то дропни все нахуй и создай заново. А если у тебя есть какие-то данные, привязанные к этому интервалу времени, то откуда же ты высрешь данные для новых интервалов? И данные для старых интервалов станут некорректны.
477 2042823
>>2042776
А, не знал про такое, лел. Собственно я думал, что ид этой записи - это и есть как бы ссылка на уникальную комбинацию даты и количества. Я прост Джанго орм юзаю ещё.
478 2042856
>>2040144
сам разобрался дауничи
image.png9 Кб, 312x198
479 2043024
Что означает вот такое описание типа из Elasticsearch?
Вроде как обычный text, но что дает вот эта приписка с fields?
480 2043086
>>2042815
Да, правильно, но это не страшно, так как конечное общее время сдвигается с 12 до 11 часов.
481 2043090
>>2043086
п.с.
не суть важна прикладная сторона, нужно именно передвинуть.
Вообще диапазон всего этого движняка - месяц, а значит еще и каждый новый день должен начинаться с сдвига в 5.
Чето мне думется без скрипта на ЯП это не решить.
482 2043279
>>2042414
Эффективней на веб приколхозить. Бахаешь веб приложение и всё. Говорят у лоровеля(пхп) очень удобный орм для sql.

>>2042427
SELECT INTO, сам селект можешь сгенерировать через какой-нибудь джоин на самого себя(cross apply\crossjoin)

>>2042659
Если уже существующие, тогда берешь таблицу календаря, с твоими временными промежутками и джоинишь к таблице фактов. Календарь генерируешь сам либо берешь готовый.
>>2042666
Без привязки к решениям, это дым из пизды. Попробуй покурить книжку с кабанчиком из ОП поста.
>>2042364
Нормализуются всякие справочники, в твоём случае ID товара. У тебя будет 2 таблицы, с фактами продаж и справочник товаров.
483 2043305
>>2043279

>Попробуй покурить книжку с кабанчиком из ОП поста.


Большое спасибо, почитаю.
484 2043491
Ребята, хз где спрашивать, мож найдутся знатоки. База сцилла.
почему при отключении нескольких нод 2 в локальном, 1 в удаленном, вначале все пашет как пахало по результаттам, но потом ноды не принимают на себя всю нагрузку и работают как будто в полсилы и сла не соблюдается, хотя ресурсы есть.
Состав кластера 5+5 вм, два дц.
После рестарта приложения и репейра нод сла по записи не достигается до того момента, когда все работало без укладывания нод.
485 2043498
>>2043491
Да, приложение, которое в базу пишет - черный ящик, так что рассматриваем только общие моменты.
486 2044396
Как в Elastic быть с поиском во вложенных (nested) полях?

Например есть поле типо этого:
'rates': {
type': 'nested',
'properties': {
'rateid': {
'type': 'long'
},
'txt': {
'type': 'text'
}
}

Надо найти фразу внутри rates.txt, как это намутить?
487 2045362
>>2044396
Самой query должно быть nested
488 2048916
Нужен совет, можно ли вообще нормально решить такую проблему.

Изначальные условия:
Есть объявления. Пользователи могут добавлять объявления себе в закладки или в скрытые (отдельная табличка user_id, объявление_id, категория_id). Все хорошо.

Задача:
На объявлениях у нас появляется некоторый признак, по которому мы можем сказать, что это дубли.
А дубли мы хотим визуально (именно визуально) схлопывать, когда выводим список.

Проблема А:
Мы не можем схлопывать на фронте, так как начинаются проблемы с пагинацией.
И еще нам надо чтобы это работало очень быстро, поэтому нельзя делать трехэтажный запрос с группировкой.
Тут мне кажется можно попытаться решить добавив специальную группирующую сущность или фейковую запись в саму таблицу объявлений, которая будет родительской. И соответственно в выборке будут участвовать родители ИЛИ объявления без родительской сущности. Звучит кривовато, но можно попробовать.

Проблема Б:
Нужно при этом еще уметь отфильтровывать по пользовательской категории (закладка, скрыто).
То есть получается, что когда мы видим группирующую запись, надо еще знать входит ли какое-то из объявлений под ней в категорию для конкретного пользователя.
Опять же, если делать через гурппировку, то запрос становится тяжелым.
И вот тут у меня уже нет идей, что можно сделать.

Короче, подскажите, может есть какой-то рецепт для таких задач? Или может быть можно выбрать другой интрумент (не реляционку), в котором это хорошо решается?
489 2049007
>>2048916
row_number()
490 2049017
>>2049007
Тигр?
Мультипаспорт?
491 2049028
>>2049017
Делаешь ров намбер убывающий, потом фильтруешь всё что больше 1. А ещё есть всякие Drill на фронте.
492 2049049
>>2049028
Блин, ты настолько не понимаешь проблему, что мне даже обидно, как-будто нахамили сейчас. Как-будто я это в пустоту писал.

Причем здесь оконные функции вообще? Нам нужен список
- A
- B
- [C, D, E]
- F
<[1][2]...[10] >

Где С подпадает под закладки пользователя, а D и E просто связаны.
493 2049083
>>2049049
Да, я не понимаю. в чём проблема.

У тебя список
а
а
b
c
d

Ты хочешь чтобы у тебя ВИЗУАЛЬНО схлоповались дубли, признак схлорывание в роу намбер. Схлопываешь через Drill up\Drill down. Я не вижу тут проблемы.
495 2049602
>>2049586
Внезапно, есть.
http://libgen.is/book/index.php?md5=B2077DD9120182DCE1B26A91E592416A

Но некоторые аноны не советуют, хотя сам не читал.
496 2049774
>>2049602
Ого! Спасибо
Untitled1.png49 Кб, 972x622
497 2050152
Аноны, помогите. Хочу сделать базу по витаминкам, нужно посчитать уровень веществ по разным препаратам. Получились такие таблицы:

pills: (таблетки)
id INT
name TEXT

agents: (вещества)
id INT
name TEXT
description TEXT
pros TEXT
contras TEXT

pills_agents: (связываем множество таблеток со множеством веществ)
pill_id INT
agent_id INT

Проблема в том, что у действующего вещества есть куча синонимов, к примеру: Биотин, Biotin, B7, Vitamin B7, Vitamin H, Coenzyme R, Biopeiderm - это все одно вещество. Ну и еще пачка на русском, латыни и в сокращениях, чтобы я мог корректно распарсить базу таблеток

Напрашиваются таблички:
agents_synonyms:
id INT
alternate_name TEXT

agents_synonyms_join:
agent_id (int)
synonym_id (int)

Насколько это корректно, городить такой огород? База в принципе не важна, я планирую делать на sqlite, но из астрала мне подсказывают, что я насосусь хуйцов и пока не поздно, надо взять что-то модное и молодежное, куда можно срать сразу json / arrays.

Еще момент: по большому счету мне надо просто забить базу, а потом из своих скриптов это мучать. Похуй в каком виде. Для забивания хотел сделать морду, чтобы начинал писать "Biope", а оно выкидывало подсказку-автозаполнение "Vitamin B7 (Biopeiderm)", а то я наделаю сам кучу ошибок. Можно конечно всю логику самому завелосипедить, но:
1. Наверняка есть какой-то паттерн на этот случай
2. Может быть даже есть готовый тул, чтобы свой пхпадмин не писать
3. Если же писать все равно самому, то как логически подружить поле "вещество" с по сути отдельной структурой "синонимы"? Т.е. я должен ввести именно "вещество", но при этом осуществлять поиск в том числе по "синонимы вещества". У меня это в голове плохо укладывается
Untitled1.png49 Кб, 972x622
497 2050152
Аноны, помогите. Хочу сделать базу по витаминкам, нужно посчитать уровень веществ по разным препаратам. Получились такие таблицы:

pills: (таблетки)
id INT
name TEXT

agents: (вещества)
id INT
name TEXT
description TEXT
pros TEXT
contras TEXT

pills_agents: (связываем множество таблеток со множеством веществ)
pill_id INT
agent_id INT

Проблема в том, что у действующего вещества есть куча синонимов, к примеру: Биотин, Biotin, B7, Vitamin B7, Vitamin H, Coenzyme R, Biopeiderm - это все одно вещество. Ну и еще пачка на русском, латыни и в сокращениях, чтобы я мог корректно распарсить базу таблеток

Напрашиваются таблички:
agents_synonyms:
id INT
alternate_name TEXT

agents_synonyms_join:
agent_id (int)
synonym_id (int)

Насколько это корректно, городить такой огород? База в принципе не важна, я планирую делать на sqlite, но из астрала мне подсказывают, что я насосусь хуйцов и пока не поздно, надо взять что-то модное и молодежное, куда можно срать сразу json / arrays.

Еще момент: по большому счету мне надо просто забить базу, а потом из своих скриптов это мучать. Похуй в каком виде. Для забивания хотел сделать морду, чтобы начинал писать "Biope", а оно выкидывало подсказку-автозаполнение "Vitamin B7 (Biopeiderm)", а то я наделаю сам кучу ошибок. Можно конечно всю логику самому завелосипедить, но:
1. Наверняка есть какой-то паттерн на этот случай
2. Может быть даже есть готовый тул, чтобы свой пхпадмин не писать
3. Если же писать все равно самому, то как логически подружить поле "вещество" с по сути отдельной структурой "синонимы"? Т.е. я должен ввести именно "вещество", но при этом осуществлять поиск в том числе по "синонимы вещества". У меня это в голове плохо укладывается
498 2050160
>>2050152
Для синонимов достаточно одной таблички.
id, parent_id, alt_name
499 2050201
>>2050160
Спасибо, ты прав. Непонятно о чем я думал.

А с поиском, я так понимаю, надо делать отдельную сущность "индексатор", и при индексации таблички "вещества" надо как-то в нее включать и ссылающуюся на нее табличку "синонимы". Ну и уже рисовать виджет для поля "вещества", а индексатор должен будет искать везде. Есть что-то, что можно почитать на эту тему? А то я явно изобретаю что-то готовое.
500 2050365
>>2050201
Совсем никто готовые тулзы для наполнения баз не юзает? Смотрю на всякие https://www.adminer.org/ и не пойму, подойдет оно или нет
501 2051501
>>2050365
Нахуя? Для этого есть ORM
502 2051529
>>2051501
ORM - это самому говно говнокодить нада, а мне лень. Мне надо тупо забить базу, а потом уже скриптами ебсти.

Но похоже, даже если оно и существует (как мс аксес?), то пока разберешься, проще набыдлокодить своё.
cda7ed356f7a4a0d6850adbeabb5a425.png13 Кб, 860x458
503 2052404
Подскажите, можно ли как-то при группировке выбирать любое значение в постгресе?
Типа
SELECT some(title) -- похуй какой, любой существующий сойдет
FROM projects
GROUP BY department_id

Понятно, что можно взять min/max. Но зачем лишняя сортировка, если похуй.
504 2052409
ПЕРЕКАТ >>2052408 (OP)
ПЕРЕКАТ >>2052408 (OP)
ПЕРЕКАТ >>2052408 (OP)
ПЕРЕКАТ >>2052408 (OP)
ПЕРЕКАТ >>2052408 (OP)
Тред утонул или удален.
Это копия, сохраненная 28 июля 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски