Этого треда уже нет.
Это копия, сохраненная 31 января 2020 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Снимок.PNG17 Кб, 374x474
Оптимизированный баз данных тред /sql/ 1502870 В конец треда | Веб
А вот и новый оптимизированный баз данных тред,
в котором мы
-Выслушиваем, почему в шапке по-прежнему отсутствует инфа для вкативания
-Разбираемся, почему PostgreSQL - не Oracle
-Пытаемся понять, зачем нужен Тырпрайс, если есть бесплатный опенсурс
-Обсуждаем, какие новые тенденции хранения данных появляются в современном цифровом обещстве
-Решаем всем тредом лабы для заплутавших студентов и задачки с sql-ex для тех, у кого завтра ПЕРВОЕ собеседование
-Анализируем, как работает поиск вконтакте
-Игнорируем конкаренси-шизика, не понимающего, зачем базы данных нужны
-И просто хорошо проводим время, обсирая чужой код, не раскрывая, как писать правильно

Поехали!
2 1502880
Кароч, народ, хелп.
надо вспомнить курс бд и задрочить скл до среднего уровня, тихонько восседая в техподе. Нужна ультрагоднота: посоветуйте 1 книгу и 1 онлайн-ресурс для решения задачек. С меня нихуя.
3 1502881
>>02880
Кстати

>-Разбираемся, почему PostgreSQL - не Oracle


Консенсуса еще нет?
Ну, кроме того, что постгрес бесплатнее.
4 1502885
>>02880
Есть даже доступ к адски медленной тестовой бд на oracle
5 1502886
>>02870 (OP)
Анонасы!

Я старый пердун, который 20 хуярит на РДБМсах всех сортов.
Поскольку я старый пердун, мне тяжело для поиска информации пользоваться модными стильными молодежными сайтами-простынями, поэтому спрошу здесь:

В чем каеф от noSQL баз?
Где их уместно применить, и почему?

Про key-value мне можно не пояснять, тут все понятно.
Про "азазаза можно не учить сложный sql и можно не думать о структуре данных" тоже можно не пояснять.
Даже агитки про репликацию и кластеризацию можно не повтрять.

Мне интересна польза noSQL именно с точки зрения задач по обработке и хранению данных.
Что это за задачи такие?
Там, где мне насрать на какую-либо вменяемую структуру данных?
Там, где мне насрать на целостность?
Там, где мне насрать на гибкость и скорость выборки?
Там, где мне насрать на возможность развития системы в части схемы данных?

Я без подъебки спрашиваю, мне правдо интересно.
6 1502903
>>02886
Пердун, помоги, плиз, с -2880
А покамест тебе кто-нибудь годный ответит
7 1502934
>>02881
Боюсь, что консенсуса нет, так как большинство юзает просто то, что первое им под руку попалось.
На работе MySQL? Значит, MySQL топ за свои деньги.
8 1503003
>>02886
Так вот, как раз, скорость выборки будет выше, когда ты просто объект по ключу забираешь.
9 1503460
>>03003
"выбрать всех пидарасов по фамилии Петров"
Как там у тебя в монгодб будет со скоростью такой выборки?
По какому ключу ты там что будешь забирать?
10 1503463
>>02903
понятия не имею про "1 книгу"

Почему вообще ты ограничиваешься 1-й?

https://www.geeksforgeeks.org/sql-tutorial/
и
http://www.sql-ex.ru/

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

Но нет способа лучше, чем сделать какую-нибудь систему самому.
Придумай, набросай схему БД.
Напиши скрипт для ее генерации.
Напиши CRUDы для нужных тебе операций.
Ну и селекты.
Потом прикинь, какие бы ты хотел отчеты получить от такой системы. Вот тебе еще десяток хитровыебанных запросов.
11 1503467
>>02934
Но мне интереснее обсудить этот вопрос с теми, ктро работал и с Ораклом, и с Мускл.
Мнение вчерашних школьников, натягивающих пхп-морду на очередной магазин сушеного навоза, сам понимаешь, стоит недорого.
12 1503630
>>03463
Спасибо за ответ.
13 1503718
>>02870 (OP)
Вы дауны, можно все в текстовых файликах хранить.
14 1503761
>>03718
поподробнее, пожалуйста
в какой кодировке?
а то лень сиквел учить
15 1503872
>>03460
Ты просто, видимо, не понимаешь, зачем нужны объектные БД.

Они не нужны для "where ... like ..."

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

Например, достаешь ты юзера "a.petrov", а у него куча говна в виде документов, докторских степеней, дипломов и сертификатов.

Если бы ты работал с реляционной бд, ты бы писал несколько запросов

select
id, name
from user
where user_login = 'a.petrov'

select

from dociments
where user_id = ...

select

from sertificates
where user_id = ...

и .п.

А с объектной бд ты просто достанешь юзера и все, что к нему относится, сразу.

{
id: 1,
login: "a.petrov",
certificates: [ ... ].
documents: [ ... ]
}
15 1503872
>>03460
Ты просто, видимо, не понимаешь, зачем нужны объектные БД.

Они не нужны для "where ... like ..."

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

Например, достаешь ты юзера "a.petrov", а у него куча говна в виде документов, докторских степеней, дипломов и сертификатов.

Если бы ты работал с реляционной бд, ты бы писал несколько запросов

select
id, name
from user
where user_login = 'a.petrov'

select

from dociments
where user_id = ...

select

from sertificates
where user_id = ...

и .п.

А с объектной бд ты просто достанешь юзера и все, что к нему относится, сразу.

{
id: 1,
login: "a.petrov",
certificates: [ ... ].
documents: [ ... ]
}
16 1503873
>>03718
какой формат файлика будешь использовать?

что будешь делать, когда несколько людей одновременно будут хотеть записать что-нибудь в файлик?
17 1503910
>>03872

>Ты просто, видимо, не понимаешь, зачем нужны объектные БД.


Приглашаю тебя еще раз перечесть мой исходный пост.

В частности, там написано:

>В чем каеф от noSQL баз?


>Где их уместно применить, и почему?



Также, там написано:

>Там, где мне насрать на гибкость и скорость выборки?


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

Если что, то всякие materialized view и витрины всех сортов есть и в реляционных базах. Как раз, чтобы держать "объекты в подготовленной форме", которые не особо оперативно меняются. При этом, благодаря дроблению на куски и языку запросов, эти "объекты в подготовленной форме" можно-таки удобно подбирать и искать.

Объекты в подготовленном виде вообще не требуют базы данных. Это файловая система. Тебе для выбора нужна только ссылка на нужное место. "Вот этом месте лежит куча говна про a.petrov".
Ну, это в моем понимании.
Вот я и пытаюсь разобраться, в чем дефекты моего понимания.
Пока безуспешно.
18 1503920
Где курить про оптимизацию и йоба-техники?
Читал как-то, что ForeignKey тру-батьки не пользуются пушо тормозит чтение и запись, насколько правда?
19 1503922
>>03920
Истинная правда.
Хуярят все сразу скопом в одну таблицу, бог потом разберет, что куда.
20 1504431
>>02870 (OP)

>отдельная таблица для юзеров


я может конечно что то недопонимаю, может так быстрее, может это просто рофл. НО ЧТО ЭТО БЛЯДЬ ЗА ХУЙНЯ?

Бтв, раз уж это скл тред, самое время спросить пару вопрос:
Как проще всего получить 3 последних поста, привязанных к thread по полю parent, при этом еще получить сам тред и его пост, который я достал относительно поля post_id в треде, то есть итог : (Thread, Post, [3; Post]), используетсч лишь две страницы, чекал вакабу, тайниб, везде на каждый тред делается еще один запрос к дб, то есть на один запрос юзера получить все треды в борде, будет выполнено 101 запросов в дб, есть варианты как сделать лучше? ну кроме уж очивидного wherein

Стоит ли хранить количество ответов в треде в виде поля replies_count, или все же count(*) from posts where... лучше?
21 1504432
>>04431

> страницы


таблицы, лол*
0fb0ac31c0b3a419fc7de0f5dcda0a3f.jpg55 Кб, 540x757
22 1504513
Уважаемые пиздюки, меня заебали разрабы. Наша компания предоставляет разрабам виртуальный сервер (CPU 4 ядра, ОЗУ 16 Гб, виртуальное дисковое пространство 2 Тб), они там варят БД какой-то информ. системы. Постоянно жалуются на высокий iowait. Он у них и правда есть 80% (highrst latency диска 25 млсек). Думают, что проблема в диске (виртуальный же), но наверняка это их хуевые БД являются узким местом. Подскажите как диагностировать проблему, а именно, что виновато: диск или их БД на Постгресе)
пик_рандом
23 1504546
>>04513
Просто запустить минипрограмму которая будет читать из файлов и писать в файлы, засечь сколько ей нужно времни и потом сделать то же самое через програму разрабов. Думаю проблема в разрабах, так как ты себе даже не представляешь что за дауны работают в компаниях. Но не в бд. Отпидарашеная бд довольно быстро всё делает, по 0.002 секунды на операцию. Проблема в кривожопости самих разрабов и их мусорной проги.
24 1504634
>>04546
Спасибо за ответ, братишка. Доступ к их серверу у меня ограниченный (там какой-то всратый русский дистр на основе Дебиана и они мне выделили порезанную учётку) + есть ещё средства мониторинга и анализа VMWare. Ну ладно, буду думать что да как.
25 1504635
>>04513

>на Постгресе


Очевидно!
мимо учу муську
26 1504677
mysql или postgresql?
Что быстрее?
27 1504787
>>04677
Муська
28 1504968
и тред незамедлительно скатился в говно
29 1505288
>>04431
Напиши структуру таблиц и входные параметры, по которым ты искать хочешь. Ни ухуя не понятно же.

>>04513
Кажется, что проблема в виртуалке. Плюс непонятно, что за диски.
Здорово, если под БД выделяется SSD, тогда все быстро работает.

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

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

Например, при разработке хранилища данных не принято использовать Foreign key, чтобы не усложнять и без того тяжелые инсерты.

Но стоит помнить, что, чем меньше у тебя связей между таблицами, тем менее целостной будет твоя система.

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

А в противовес этому у тебя есть просто объект "Юзер", с кучей атрибутов-массивов, который ты достаешь одним запросом. Это будет работать однозначно быстрее.

Я вообще не уверен, что есть какие-то дауны, которые считают, что надо только объектные БД использовать, патаму что удобнее. Просто в некоторых случаях удобно взять объект по ключу, который когда-то ты сохранил, тем более, что это будет быстрее. Эта скорость можно не замечать, когда у тебя 20 юзеров. Однако, если у тебя 20000000 юзеров, то тут каждая наносекунда может оказаться решающей.

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

Например, юзаешь ты google firebase, как объектную БД, на фронте, а для автоматизации основных процессов компании юзаешь SQL Server на бэк-е с констрейнтами и прочими блэкджеками.
29 1505288
>>04431
Напиши структуру таблиц и входные параметры, по которым ты искать хочешь. Ни ухуя не понятно же.

>>04513
Кажется, что проблема в виртуалке. Плюс непонятно, что за диски.
Здорово, если под БД выделяется SSD, тогда все быстро работает.

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

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

Например, при разработке хранилища данных не принято использовать Foreign key, чтобы не усложнять и без того тяжелые инсерты.

Но стоит помнить, что, чем меньше у тебя связей между таблицами, тем менее целостной будет твоя система.

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

А в противовес этому у тебя есть просто объект "Юзер", с кучей атрибутов-массивов, который ты достаешь одним запросом. Это будет работать однозначно быстрее.

Я вообще не уверен, что есть какие-то дауны, которые считают, что надо только объектные БД использовать, патаму что удобнее. Просто в некоторых случаях удобно взять объект по ключу, который когда-то ты сохранил, тем более, что это будет быстрее. Эта скорость можно не замечать, когда у тебя 20 юзеров. Однако, если у тебя 20000000 юзеров, то тут каждая наносекунда может оказаться решающей.

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

Например, юзаешь ты google firebase, как объектную БД, на фронте, а для автоматизации основных процессов компании юзаешь SQL Server на бэк-е с констрейнтами и прочими блэкджеками.
30 1505299
>>05288
Board:
id: integer unsigned primary key auto_increment not null

Thread:
id: integer unsigned primary key auto_increment not null,
board: id: integer unsigned not null,
post_id: integer unsigned not null //op post

Post:
id: integer unsigned primary key auto_increment not null
parent: id: integer unsigned not null // parent thread, 0 if it's op post
lasthit: timestamp not null

Вообщем надо получить все треды, к каждому по одному оп посту и еще 3 последних ответа к ним, отсортированных по lasthit.desc
31 1505300
бля, грин текст забыл

>>05288

> Напиши структуру таблиц и входные параметры, по которым ты искать хочешь. Ни ухуя не понятно же.


>>05299
32 1505324
>>05300
А СУБД какая?
тред и 3 поста должны быть в разных строчках или нет?
Например, в разных:
1. id = 1, thread_id = 1, is_thread = 1
2. id = 1, thread_id = 1, is_thread = 0
3. id = 2, thread_id = 1, is_thread = 0
4. id = 3, thread_id = 1, is_thread = 0

Если не в разныъ, тогда 3 строчки:
1. id = 1, thread_id = 1
2. id = 2, thread_id = 1
3. id = 3, thread_id = 1

Как ты хочешь?
33 1505330
>>05324

> А СУБД какая?


mariadb

первый вариант годный, да
34 1505334
>>05330
а вообще тут как раз парадокс, что хотелось бы все сделать максимально пиздато, но приходится изобретать велосипеды, хотя я понимаю что можно как то 4 раза на один тред вернуть
(одинаковые значения треда + разный пост) и потом отсортировать это самому
35 1505346
>>05330
select
p.id
,p.id as thread_id
,lasthit
,1 as is_thread
from Post p
where p.parent = 0
union all
select
p.id
,p.parent as thread_id
,p.lasthit
,0 as is_thread
from (
select
t.id
,t.parent
,row_number() over (partition by parent order by lasthit desc) as
RN_post
from Post p
where p.parent_id <> 0
) p
where p.RN <=3
36 1505350
>>05346
-- достаём только по-посты (треды)
select
p.id
,p.id as thread_id
,lasthit
,1 as is_thread
from Post p
where p.parent = 0
union all
-- достаем ответы
select
p.id
,p.parent as thread_id
,p.lasthit
,0 as is_thread
from (
select
t.id
,t.parent
-- пронумеруем ответы в порядке убывания
,row_number() over (partition by parent order by lasthit desc) as
RN_post
from Post p
where p.parent <> 0
) p
where p.RN_post <=3 -- выбрем по 3 ответа (или меньше) к каждому треду

Пофиксил наименования
36 1505350
>>05346
-- достаём только по-посты (треды)
select
p.id
,p.id as thread_id
,lasthit
,1 as is_thread
from Post p
where p.parent = 0
union all
-- достаем ответы
select
p.id
,p.parent as thread_id
,p.lasthit
,0 as is_thread
from (
select
t.id
,t.parent
-- пронумеруем ответы в порядке убывания
,row_number() over (partition by parent order by lasthit desc) as
RN_post
from Post p
where p.parent <> 0
) p
where p.RN_post <=3 -- выбрем по 3 ответа (или меньше) к каждому треду

Пофиксил наименования
37 1505360
>>05350
как я понимаю, это возвращает несколько строк типо

тред, пост?
38 1505361
>>05360
Да, выполни, увидишь
39 1505366
>>05361
что за RN_post?
40 1505369
>>05366
Я же даже прокомментировал, что это значит.

> пронумеруем ответы в порядке убывания


https://mariadb.com/kb/en/library/row_number/
41 1505375
>>05369
ок спасибо анон
42 1507102
Хочу стать администратором баз данных
SQL и всё такое
С чего начинать и куда развиваться?
Стартовые характеристики:
27 лвл бизнесхуй
Образование - менеджмент
Шарю за ИТ на уровне админа локалки, эникея, линух-дрочера
43 1507244
Пацаны, нид хелп.
Вкатывальщик тупит над задачей по СКюэЛь:

БД состоит из
Product(maker, model, type)
PC(code, model, speed, ram, hd, cd, price)
Laptop(code, model, speed, ram, hd, price, screen)

____________

Найдите номера моделей и цены всех имеющихся в продаже продуктов (любого типа) производителя B (латинская буква).

Мой солюшн:
SELECT CONCAT(PC.price, Laptop.price) AS price, CONCAT(
PC.model,Laptop.model) AS model FROM Product
INNER JOIN Laptop ON Laptop.model=Product.model
INNER JOIN PC ON PC.model=Product.model
WHERE Product.maker = 'B'

__________________

Результаты выполнения
Вашего запроса:
modelprice

правильного запроса:
pricemodel

1121850.0000
17501200.0000

Чую,косячу с иннер дойнами, по отдельности, вывожу по строчке.
43 1507244
Пацаны, нид хелп.
Вкатывальщик тупит над задачей по СКюэЛь:

БД состоит из
Product(maker, model, type)
PC(code, model, speed, ram, hd, cd, price)
Laptop(code, model, speed, ram, hd, price, screen)

____________

Найдите номера моделей и цены всех имеющихся в продаже продуктов (любого типа) производителя B (латинская буква).

Мой солюшн:
SELECT CONCAT(PC.price, Laptop.price) AS price, CONCAT(
PC.model,Laptop.model) AS model FROM Product
INNER JOIN Laptop ON Laptop.model=Product.model
INNER JOIN PC ON PC.model=Product.model
WHERE Product.maker = 'B'

__________________

Результаты выполнения
Вашего запроса:
modelprice

правильного запроса:
pricemodel

1121850.0000
17501200.0000

Чую,косячу с иннер дойнами, по отдельности, вывожу по строчке.
44 1507344
>>07244
судя по тому, что ты вхуярил concat, ты
1. не понимаешь, что тебе нужно сделать
2. не понимаешь, что ты делаешь
тут тебе не поможешь
45 1507557
>>07344
Да он перепутал просто конакт и коалис
46 1507606
SQL-господа, надо за два дня постичь основы SQL, чтобы написать тз (по основам JS, SQL и сисярп) и попасть на курсы. Подскажите, пожалуйста, как это реализовать? На всё у меня в сумме неделя.
sage 47 1507975
Что за уебаны в треде?
48 1508322
>>02870 (OP)
Что скажете за оптимизацию запросов в оракеле? Где есть нормальная документация?
49 1508663
>>08322
А чем оптимизация в оракле отличается от оптимизации в sql-сервере?

Кури гайды по чтению плана запроса.
50 1508809
>>05288

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


Т.е. требуя не поломать целостность. Для этого FK и нужен. Больше ни для чего. Чтобы красноглазик не объебался, и не засрал базу непонятными данными.

Не могу себе представить рабочую OLTP-систему, в которой кто-то не создал FK constraint "потому что придется каскадно удалять" или "потому что медленно".

Если какой-то второй уровень уже, типа витрины или хранилища, куда данные выгружаются из заведомо целостной (потому что там есть ФК) базы, то могу себе представить, что не делают целый ряд вещей, без которых немыслимо первичное хранение.

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


FK это НЕ СВЯЗЬ!!!!!!!
51 1508813
>>05288

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


>....


>А в противовес этому у тебя есть просто объект "Юзер", с кучей атрибутов-массивов, который ты достаешь одним запросом. Это будет работать однозначно быстрее.


Но мне (да и тебе, уверен тоже) почти никогда не нужен ВЕСЬ объект Юзер.
Что, если тебе надо взять просто ФИО и дату рождения?
А что если только ПОСЛЕДНИЙ по дате сертификат?
А что, если тебе надо взять Юзеров, у которых есть такие же сертификаты как у Пупкина?

Т.е., очевидно, я понимаю, что один кусок достать одним куском проще, чем собрать по частям.
Но посмотри же внимательнее на мои вопросы:
что это за ситуации, когда все всегда нужно одним куском?
Мне не приходилось таких систем видеть.
52 1508814
>>08322
Оптимизацию хранения ты уже изучил?
Индексы, партишенинг, вот это вот все?
53 1509654
>>08809
Почему фк не связь?
54 1509922
Почему инфы для вкатывания-то нет?
55 1510795
>>09922
Пидорасы, сэр. Кругом одни формошлёпы и асинхронные дрочеры.

Сам ищу чего бы почитать по логическому проектированию БД. Запросы писать умею, таблицы состряпаю, но хотелось бы чего-нибудь фундаментального.
56 1510836
>>10795
И я бы хотел. Вон там чувак сверху писал

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



Вот где прочесть как разрабатывать хранилища данных, чем эта абстракция или не абстракция? отличается от просто кучи таблиц в БД? НИПАНЯТНА
57 1510952
DBАноны, сам я пхп-макака, и недавно прочитал умные статьи с критикой ORM, решил упороться и изучить подробнее sql и базы даных, выбор пал на postgres. Сейчас на работе у нас все хранится в mariadb, около полумиллиона записей в 30 таблицах. Очень много ненужных колонок, нарушены нормальные формы, чувак думал в парадигме ООП, и засрал базу. Можно ли все это перенести в postgresql, и начать рефакторинг, и выжимать по полной из базы, удалив мусорный код, или это нереальная задача и стоит забить?
58 1510972
>>09654
fk это constraint. ограничение.
правило, которое определяет, что может, а чего не может быть в поле.
Новичкам кажется, что fk определяет какую-то связь, которая что-то о чем-то говорит, и чем-то может помочь при селектах.
Но это не так. Где-то там, в эмпиреях, это, может, и связь. Но на уровне схемы БД, инсертов, апдейтов и делитов, это просто правило, которое определяет возможные значения и правила удаления.
59 1510976
>>10795
т.е. Криса Дейта ты уже прочел?
60 1510978
>>10836
Кто мешает тебе заглянуть хотя бы в википедию?
The data stored in the warehouse is uploaded from the operational systems (such as marketing or sales). The data may pass through an operational data store and may require data cleansing[2] for additional operations to ensure data quality before it is used in the DW for reporting.

Разница в том, что "куча таблиц в БД" заточена под оперативную обработку, в которой любая ошибка может привести к битым данным. Поэтому любой вменяемый архитектор обкладывает базу всеми возможными констрейнтами, чтобы говнокодеры не засрали базу.

Хранилище данных строится поверх оперативной БД. Если ты объебешься и зальешь кривые данные в хранилище, это не очень страшно. Потому что исходные данные все еще целостные и правильные. Исправишь ошибку и перезальешь свое хранилище.
61 1511072
>>10972
Просто правило - это constraint
Когда создаешь fk, пишешь references, что переводится, как «ссылается». Так что не пизди тут про несвязь.
62 1511085
>>10952
Можно
63 1511128
>>11072
Ну, т.е. ты не понимаешь, что означает это "references"
Ок.
Пусть для тебя это будет связь.
64 1511192
>>11128
Ну да, связь - это же от слова «вязать». Никто же не вяжет ничего в базе данных, ниточек там нет, вот и связи нет.
Такая у тебя логика.
65 1511264
Товарищи,

Кто-нибудь писал парсеры логов БД? Прочитать бинарник - вернуть данные.

В частности интересует redo оракловый.

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

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

Для трэйла oracle gg получилось провернуть такую штуку, хочу с redo попробовать.
66 1511549
>>10976
Прочёл. Да, хорошая книга, но многабукав (воды), при том что это труд о БД в принципе. Много вещей которые и так интуитивно понятны, а вот эффективных запросов или построения моделей данных нет.
67 1511550
>>10976
Да и в принципе книжка очень старая. И примеров на реальных СУБД не хватает. А там за 20 лет кучу фич запилили.
68 1511618
Собираюсь запилить БД "склада" на строительном объекте. Думаю пилить на Access, но закрадываются мысли таки мутить на MS SQL или на MySQL. Таки посоветуйте нубу, на чом пилить?
69 1511626
>>11618
Мне кажется, недостаточно вводных.
MS SQL почти во всех изданиях платный.
Есть Express-версия с разрешенным объемом в 10 гб и незапускающимся агентом.
Есть Developer-версия, полностью работающая, но якобы только для разработки, как они это проверяют, я хз.

Access - это что-то уровня SQLite или Excel, если планируешь организовывать туда доступ разным пользователям с разграничением прав, то не уверен, что это то, что надо. С другой стороны, в Access есть встроенный редактор форм, так что, если не умеешь прогать, а хочешь создавать интерфейсы, то это будет самым простым вариантом.
70 1511629
>>11626

>если не умеешь прогать


это
Но пытаюсь учиться. Таки попробую в Access, если приспичит дальше развивать, буду изучать взрослые СУБД
71 1511654
Э бля а где шапка с литературой? Даже у презренных веб-макак есть, а у вас нет.
72 1511658
>>11618
Делай нормально, асес гавно мамонта какое-то. Бери май или мс. У мс есть экспресс бесплатная, если у тебя там не хайлоад разницы не заметишь. С мсовской в комплекте идет менеджмент студио, у май тоже есть из коробки инструменты все. Какой в очко ассес перекрестился
73 1511736
Анон, а поясни для суперньюфага, в чем разница между MySQL, MS SQL Server, SQLite, Postgres и всякими другими бд?
Я щас вот сижу учу SQL, всякие эти селекты-хуекты, и туториал меня ведет по SQL Server. Но я же так понимаю, SQL будет везде одинаковый? И во всех БД запросы выглядят абсолютно одинаково?
74 1511741
>>11736

>MySQL, Postgres, MS SQL Server


это все демоны, к которым ты можешь подключаться удаленно

>мускул


устаревшее говно, use mariadb instead

>постгря


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

>мс


говно

>Sqlite3


в синтакисе есть подьеб AUTOINCREMENT, а так годнота, особенно для игр, но для хайлоад прочих PoolConnection не поедет, так как не поддерживает несколько соеденений (онли одно).
75 1511752
>>11741
Т.е. по большому счету все равно, на какой ДБ учиться писать запросы? Я не планирую быть архитектором баз данных, вообще мечу в бэкэнд, так что мне, по сути, надо просто понимать, как и какие запросы писать в БД.
76 1511759
>>11741

>мс говно


Почему?
77 1511760
>>11654
Подключайся, помогай составить
78 1511793
Есть некие изделия с фиксированным диапазоном длин, ширин, высот и некоторых особенностей. Например: ящик 1х0.5х0.7м с отверстием/центральным отверстием/без отверстия Писать каждый экземпляр в таблицу или создать таблицы ширина, длина, высота и поле "отверстие" с выпадающим списком и вставлять данные из них в таблицу "Ящики"?
79 1511827
>>11793
Наименование-размер-отверстие(тру/фальш). Стоит ли размер разбивать на части зависит от условий, если разбить можно будет искать по каждой стороне.
80 1512227
>>11736

>SQL будет везде одинаковый


В основной своей массе - да.
У всех есть какие-то свои расширения.
У говна типа мускл есть еще и свои тупые ограничения.
Некоторые (типа того же мускла) херово умеют в стандарт.

Но это SQL.
Как только ты шагнешь в процедурность, у всех все будет разное.

Средства оптимизмации тоже у всех более-менее разные.
81 1512230
Решил вкатится в вашу парашу. Что за пиздец с литературой? Книги хер найдешь, а те что есть написаны хуй пойми как. По сранному виму наверное больше книг чем по скулю.

Есть ли есть что-нибудь годное покурить кидайте
изображение.png594 Кб, 1282x825
82 1512264
>>12230
Вот что это блядь такое? Какая-то бабка собралась учить SQL, они что там ебанулись в своей майкрософт? И так в каждом втором руководсвте\книжке, какая-то дичь. Неужели весь этот sql настолько некому в хуй не упёрся?
83 1512283
>>12264
У меня в вузике SQL преподавала женщина. И она в нем более-менее разбиралась.

>Неужели весь этот sql настолько некому в хуй не упёрся?


Уперся практически везде, особенно в вебе. Я рискну предположить, sql преподают всякие бабки, потому что это один из самых простых топиков it, по крайней мере что касается основ.
84 1512468
>>11752
да, если скл, то там везде синтаксис почти одинаковый

>>11759
микрософт по определению зашкварен как и их говнософт, с годами он еще стал и ненужен, так как появился mysql->mariadb, postgres
85 1512509
>>12468
Аргументация в уровня /b.
86 1512513
Правда ли что
SELECT COUNT(*) FROM table
Не атомарная операция и проходит по всей таблице?
В что там свитера, совсем ебанулись?
87 1512515
>>12513
Вероятно, зависит от реализации. Может какая-нибудь count(*) понимает как "количество строк с хотя бы одним не-нулл полем".

Попробуй select count(1) from table
88 1512524
>>12513>>12515
The basic SQL standard query to count the rows in a table is:

SELECT COUNT(*) FROM TABLE_NAME;

This can be rather slow because PostgreSQL has to check visibility for all rows, due to the MVCC model. (There have been improvements in PostgreSQL 9.2.)

If you don't need an exact count, the current statistic from the catalog table pg_class might be good enough and is much faster to retrieve for big tables.

SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = 'table_name';

Это во всех БД так или только в самых ебнутых? Или как обычно у свитеров полный разброд и никто ничего не знает и сказать не может наверняка?
89 1512528
>>12524
Свитеры это кто? Не понимаю ваш франузский.
90 1512739
>>12528
Это шизик, ему неинтересно, он просто хочет срач, игнорируй его.
91 1512991
>>12528
Лол, живой нюфак.
92 1512997
>>12283

>реляционная алгебра


>один из самых простых топиков


Сразу видно специалиста
93 1512999
>>12991
Лол, /б вместе с хуесосами протек сюда.
94 1513004
>>12999
Ну ты как подтверждение.
95 1513067
>>12997
Не передергивай, одно дело писать запросики уровня "Покажи всех студентов старше 20 плиз)))", другое дело реально в этом всем разбираться. Первого для повседневных задач хватает с головой и большинство макак и знать не знают, что там за реляционная алгебра, потому что им это нахуй не надо.
96 1513225
>>13067
Тебе видней, хуле, макака повседневная
97 1513226
>>13004
Жду, когда ты, умник, боевую картиночку подтащишь
98 1513234
>>13067
Реляционная алгебра в любом учебнике по БД, пусть даже строго написанном, это поверхностная глава из серии "вот есть базовые операции, их можно комбинировать и найти какое хошь отношение хахааа", то есть ничего умного или полезного, если ты серьезный кампустир саентист и тебе реально надо в этом какие-то теоремы доказывать, то надо статьи читать по теме, а то пафосно названный "реляционная теория" раздел из книжки как раз для тех самых макак-второкурсников.
изображение.png296 Кб, 350x296
99 1513267
>>13234
Чот проиграл
100 1513270
>>08813
Так оно и не для крудоговна нужно. Например представь микросервис в большой системе которому несколько раз в час насирают миллионы сообщений и которые он должен потом постепенно обработать, никакого смысла тут реляционки использовать очевидно нет.
101 1513373
>>13225
Как что-то плохое.
102 1513405
>>13270
Так я про то и спрашивал - где используется.

Но читая статьи зумеров для зумеров, я подозреваю, что они-то жаждут это использовать везде.
node.js + mongodb = 33 млн. в выдаче гугла.

>крудоговна


Не устаю проигрывать с непроходящей стадии отрицания у анонов.
"крудоговно" это то, на чем работает абсолютно все.
Это как свысока рассуждать о "дыханиеговне" и прочем обмене веществ.
Мол, я весь в эмпиреях витаю, я выше всего этого.
103 1514556
>>02870 (OP)
Аноны памагите плисс!!!
1 Выведите количество значений Customers в каждой
стране.
SELECT (CustomerID),
Country
FROM Customers
;
2 Выведите количество покупателей в каждом городе,
выравнивая по возрастанию их количества
SELECT (CustomerID),
Country
FROM Customers
ORDER BY ;
104 1514595
Аноны, какие есть годные книги по SQl (mariadb) для продвинутого уровня? Где подробно разбирают оптимизацию кода, разные фичи типо from (select ...) a и т.д?
105 1514619
>>14556

>плис


Плис в /ra
106 1514623
>>14595

>фичи типо from (select ...)


>для продвинутого уровня


лол
107 1514670
>>14556
Group by а помощь. Таблицы из нортвинда.
108 1514676
>>14623
А что не так? Все лютое говно как раз в селектах.
109 1514683
>>03718
nedb так и делает, в общем-то.
110 1514688
Подходит ли MongoDB для проектов с реляционными данными (через DBRef)? Хочу использовать в проекте Spring Webflux, но неблокирующих драйверов для реляционных БД пока не завезли, поэтому планирую использовать Mongo как основную БД. Это норм затея?
111 1514920
>>14688
Мы как-то должны угадать, что ты хочешь делать?
Снимок экрана от 2019-11-06 20-45-41.png232 Кб, 1853x1050
112 1514921
Аноны, помогите с laba2, пожалуйста

ругается на синтаксическую ошибку в месте вызова функции, которая возвращает селект. если вместо вызова функции вставить целиком селект, то все работает. чому так?
скобки вокруг EXISTS поставил от отчания, без них такую же ошибку выдает
113 1514924
>>14921
чо за лаба? где взять?
114 1514926
>>14920
Натягивать реляционную модель данных на вроде как нереляционную БД.
116 1515105
>>14926
Да, тогда все ок. Действуй, сестра!
117 1515107
>>14921
exists select * from select_time_intersection

чо, в гугле забанили, что ли?
или лень почитать, что означает returns table и как с ей жить?
OtO7me4FQgs.jpg211 Кб, 640x1136
118 1515141
>>14921
Как ты сюда попал?
119 1515211
>>15107
Спасибо большое <3
Нагуглить с разбегу не получилось, вчера заебался сильно, извини
>>15141
Из паблика ВК конечно
120 1515245
>>15211
Ты должен благодарить Аллаха за то что направил твой разум, а не кефира
121 1515389
Пацаны, есть поле с типом varchar(10)
И когда я туда попытался занести строку из 11 символов, мне выдало ошибку. ERROR 1406 (22001): Data too long for column
Я понимаю, если бы это был char(10), но это var ебать его в сраку char, он должон изменяться! Почему так?
122 1515486
>>15389
чтоб оно изменилось 10 не должно быть. Десяткой ты задаешь фиксированную длину, схуяли оно должно меняться?
123 1515489
>>15486
10 это максимум, если у тебя меньше, оно меньеш выделит памяти, а если больше, то ты пойдёшь нахуй.
124 1515497
>>15486
>>15489
Без вас, долбаебов, разобрался
125 1515504
>>15497
Почему тупые вопросы у тебя, а далбаёбы мы?
15680488684520.jpg55 Кб, 804x743
126 1515612
Есть ли альтернатива для хранения данных в большом количестве однотипных полей? Суть в том, что у меня есть таблица с игроками, где у каждого игрока свой уникальный id. Так же есть таблица с историей матчей, где у каждого матча есть уникальный id и 10 полей, содержащих id всех игроков, которые в нем участвовали. Насколько это практичное решение? Или можно как-то эти 10 столбцов заменить одним? Если нет, то нужно и можно ли эти 10 столбцов помечать внешним ключом?
127 1515622
>>15612
связная таблица {суррогтаныйИД, матч, игрок}
qwe.png8 Кб, 769x290
128 1515632
>>15622
Типа так? id_match и id_player - внешние ключи?
129 1515639
>>15612
Если матчи парные можно сделать две таблицы с победителями и с проигравшими, или сделать две таблицы Матч и Детали матча, к которой можно будет обратится если нужны подробности.
130 1515645
>>15639
Детали матча это уже третья таблица. Там будет много уникальных полей для каждого игрока в данном матче. А насчет двух таблиц с победителями и проигравшими, как это упрощает менеджмет бд? Это же вместо 1 таблицы с 10 столбцами - 2 таблицы с 5 столбцами каждая. Если я правильно понял.
131 1515657
>>15645
Ну тут зависит от такого насколько тебе подробные нужны результаты, можно просто сделать графу ПОБЕДИТЕЛЬ в главной таблице
132 1515665
>>15657
Не, подробные данные нужны для всех игроков, просто, когда много однотипных столбцов, хочется это как-то упростить. Если я этого анона >>15622 правильно понял, то так, наверное, и сделаю. Эта таблица >>15632 просто будет продолжена на 50+ столбцов, которые тоже бы, наверное, стоило как-то распределить, но и разрастаться таблицами тоже не хочется. К тому же, данные там почти уникальные.
133 1515677
>>15632
Так, да.
Потом у тебя случится замена, и вместо 10-ти игроков в матче будет 11.
А потом кого-нибудь удалят до стартового свистка и будет 9.

Можно, конечно, не делать суррогатный ключ, а сразу захерачить композитный на ид_матч и ид_плейер.
Это как удобнее. Про отдельный ПК я на всякий случай упомянул.
134 1515859
>>12524
Бамп вопросу, хули отмалчиваетесь?
135 1516012
>>02870 (OP)
Что за конкаренси-шизик? Я не в курсе, первый раз в треде, объясните пожалуйста.
136 1516013
>>08813

> Но мне (да и тебе, уверен тоже) почти никогда не нужен ВЕСЬ объект Юзер.


> Что, если тебе надо взять просто ФИО и дату рождения?


> А что если только ПОСЛЕДНИЙ по дате сертификат?


> А что, если тебе надо взять Юзеров, у которых есть такие же сертификаты как у Пупкина?


GraphQL
137 1516020
>>16013
но тебе из них нужны только фамилии
а ты все объекты будешь подтягивать

короче, я так пока и не понял этого дроча
138 1516028
Мы учим эту тему в универе, пишем по ней курсачи, кажется несложным. На этом можно зарабатывать какие-то деньги? Если да, то какие и где удаленно естественно студентота нищая
139 1516055
>>16028
В офисе сначала поработай, а потом уж лезь в удалёнку.
140 1516081
>>16028
Да иди ты нахуй. Почему мне кажется скл запросы и иже с ними самой сложной темой в погромиравании, завидую тебе пиздец...
141 1516233
Сап, запросач, посоветуй где и что можно почитать про хранимые процедуры и функции, если для совсем тупых и с примерами, то вообще шикарно.
Алсо, это я криворучка или консоль у Open Server не очень?

мимо делаю лабы
142 1516236
Сколько внешние ключи занимают места в БД? Нигде не смог найти ответа на этот вопрос. Они явно же не просто так придуманы были... И если они действительно меньше места занимают, то насколько примерно?
143 1516246
>>16236

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


А для связей между отношениями?
144 1516252
>>16236
1. что значит "занимают места в БД"?
2. "они действительно меньше места занимают" - меньше, чем что?

>>16246
Блядь, опять ебаные связи.
Анон вообще не понимает, что зачем нужно, ты ему пудришь мозги какими-то связями.


Пусть R1 и R2 — две переменные отношения, не обязательно различные. Внешним ключом FK в R2 является подмножество атрибутов переменной R2 такое, что выполняются следующие требования:

В переменной отношения R1 имеется потенциальный ключ CK такой, что FK и CK совпадают с точностью до переименования атрибутов (то есть переименованием некоторого подмножества атрибутов FK можно получить такое подмножество атрибутов FK’, что FK’ и CK совпадают как по именами, так и по типам атрибутов).
В любой момент времени каждое значение FK в текущем значении R2 идентично значению CK в некотором кортеже в текущем значении R1. Иными словами, в каждый момент времени множество всех значений FK в R2 является (нестрогим) подмножеством значений CK в R1.
При этом для данного конкретного внешнего ключа FK → CK отношение R1, содержащее потенциальный ключ, называют главным, целевым, или родительским отношением, а отношение R2, содержащее внешний ключ, называют подчинённым, или дочерним отношением.

Охуенная связь, ага
145 1516273
>>16233
Бамп
Обв я про sql
146 1516275
>>16252
Любая БД занимает место на носителе информации. БД хранит свои заголовки для интерпретации СУБД, названия таблиц, названия полей, сами значения полей. Размер значений зависит от типа данных, но помимо обычных полей, есть свойство полей - внешний ключ. Из того, что прочитал, так это то, что они позволяют искать данные в БД быстрее, а про занимаемое ими место ни слова. Ибо мне представляется, что раз они используются в качестве индексов, то и повторное их использование в таблицах по факту не должно занимать никакого места. Т.е. это примерно, как указатели в c/c++. Можно создать тысячи указателей на один объект, но при этом память выделяться для каждого указателя под размер этого объекта не будет. Вот я и хочу понять: так ли это?

Т.е. если у меня есть таблица peoples (id, name, country_id), где country_id - внешний ключ к полю id таблицы countries (id, name), то при наличии 100 записей в этом поле фактически будет выделено место только под размер таблицы countries, где всего может быть только 5 стран. А country_id будет только указателем. Как-то так...
147 1516276
>>16252
Злой ты, но спасибо за то что поправил, почитаю. Сам понимаешь >>12283
148 1516318
>>16275
Тебе нужно гуглить реализацию по конкретной базе.

Сильно сомневаюсь, что есть базы с реализацией fk через ссылки. Как минимум это выльется в массовый апдейт при удалении fk.

Fk относится к обьектам типа constraint, в oracle по крайней мере.
То есть по факту, это свод ограничений, проверок, которые срабатывают при добавлении/изменении значений в поле, на которое наложен constraint.
В случае FK в качестве вспомогательной структуры, для поддержи constraint используется уникальный индекс таблицы, на! котрую ссылается поле с FK.
То есть сам FK не создает доп структур с данными для своего функционирования.
Однако в поле с FK, хранятся полноценные данные, а не ссылки на данные из другой таблици. Просто при вставке нового значения в поле, дергается индекс таблицы на котрую ссылается поле, и производится проверка, есть ли там такое значение.

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

Все вышесказанное относится к бд oracle
149 1516322
>>16275
А. Понятно.
Ты не совсем понимаешь, зачем нужны ФК.
Экономить место на диске - их последняя задача.
Их главная задача не дать тебе насрать в базу.
В твоем примере - не дать тебе написать гИрмания там, где должна бы быть гЕрмания.
Выносить повторяющиеся данные так, чтобы они встречались в своей полноте лишь один раз - опять же не для того, чтобы сэкономить место на диске. Читай про нормальные формы.
150 1516324
>>16276
Не злой.
Это типичная ошибка начинающих - считать, что ФК дает какую-то связь.
Это приводит ко многим недопониманиям и недоумениям. Я сам через это проходил.
Поэтому, когда непонимающему человеку начинают рассказывать про "связь", я всегда одергиваю.
151 1516326
>>16233
https://youtu.be/Q1zdWO4xenI?t=8516

Привязка ~2 минуты
152 1516329
>>16275
Представь, что у тебя есть поле с типом char(1).
Сколько места в записи оно займет?
Теперь представь, что значения из этого поля ты вынес в отдельную таблицу. И сделал ФК на эту таблицу.
Очевидно, что запись будет занимать больше места. Ссылка просто тупо длиннее, чем char(1).

Зато, этим символом ты кодируешь пол (F/M), то используя ФК ты не обосрешься, вставив в запись любой другой символ. ФК нужны именно для этого.
153 1516390
>>16318

>Сильно сомневаюсь, что есть базы с реализацией fk через ссылки. Как минимум это выльется в массовый апдейт при удалении fk.


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

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


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

>>16322

>Читай про нормальные формы.


Хорошо, почитаю.

>>16329
Ну, насчет char(1)-то и так понятно. Конечно, не всегда есть смысл использовать ссылки, чьи метаданные весят больше значений на которые они ссылаются, если необходимо в первую очередь сэкономить место.

Меня просто интересует вопрос: как лучше организовывать таблицы в тех или иных случаях, чтобы БД в итоге не весила в 5 раз больше, когда могла весить в 5 раз меньше и при этом оставаться удобной в использовании.

Попробую привести пример того, чего я хочу понять о построении БД. Это касается "вложенных" данных, т.е. когда "что-то" может содержать в себе десяток "чего-то", а то в свою очередь сотню "другого". И получается такая ситуация, например:
Пусть есть таблицы
1. Таблица "производители автомобилей (id, name)", id - PK;
2. Таблица "филиалы производителей (id, id_произ_авто, name)", id - PK, id_произ_авто - FK;
3. Таблица "автомобили (id, id_произ_авто, id_филиал, name)", id - PK, id_произ_авто - FK, id_филиал - FK.

Т.е. есть производитель авто (ferrari), у этого производителя есть много своих салонов для продажи (филиалы), в каждом филиале есть N моделей. Теперь заполним данными эти таблицы:
1. Производители автомобилей
id(1) name(ferrari) 2
id(2) name(nissan)
id(3) name(lexus)

2. Филиалы производителей
id(10) id_произ_авто(1) name(ferrari shop 1)
id(11) id_произ_авто(1) name(ferrari shop 2)
id(12) id_произ_авто(1) name(ferrari shop 3) 12
id(13) id_произ_авто(1) name(ferrari shop 4)
id(14) id_произ_авто(2) name(nissan shop 1)
id(15) id_произ_авто(2) name(nissan shop 2)
id(16) id_произ_авто(3) name(lexus shop 1)
id(17) id_произ_авто(3) name(lexus shop 2)

3. Автомобили
id(100) id_произ_авто(1) id_филиал(10) name(ferrari auto 1)
id(101) id_произ_авто(1) id_филиал(10) name(ferrari auto 2)
id(102) id_произ_авто(1) id_филиал(10) name(ferrari auto 3)
id(103) id_произ_авто(1) id_филиал(10) name(ferrari auto 7)
id(104) id_произ_авто(1) id_филиал(11) name(ferrari auto 1)
id(105) id_произ_авто(1) id_филиал(11) name(ferrari auto 3)
id(106) id_произ_авто(1) id_филиал(12) name(ferrari auto 3)
id(107) id_произ_авто(1) id_филиал(12) name(ferrari auto 5)
id(108) id_произ_авто(1) id_филиал(13) name(ferrari auto 8)
... и т.д.

Из-за подобной структуры, если я правильно понял, с каждой последующей таблицей размер БД будет разрастаться с геометрической прогрессией. И получаем, что только для производителя (ferrari) будет будет отведено 50 байт (представим, что все поля во всех таблицах занимают по 1 байт каждое). Но! Если бы мы отказались от 3 таблицы "автомобили" и вместо нее расширили бы 2 таблицу "филиалы", добавив 4 поля: model_1, model_2, model_3, model_4 (я выбрал 4 по наибольшему ассортименту среди всех филиалов), то итоговый размер для информации о производителе (ferrari) был бы уже не 50 байт, а 42 байта. Это еще при том условии, что 7 полей в этой таблице для (ferrari) не будет заполнено, но я не знаю: занимают ли незаполненные поля какое-то мест оили нет.

Конечно, второй подход для данного примера крайне херовый, ибо кол-во автомобилей будет всегда меняться и для этого придется либо добавлять новые поля, либо брать сразу с запасом. Но факт остается фактом: в одном случае - БД практичная, но занимает больше места; во втором - БД не практична, занимает меньше веса.

Напомню еще раз суть вопроса: как понимать, когда и какой из этих случаев лучше? Или я вовсе не так представляю хранение в БД?
153 1516390
>>16318

>Сильно сомневаюсь, что есть базы с реализацией fk через ссылки. Как минимум это выльется в массовый апдейт при удалении fk.


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

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


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

>>16322

>Читай про нормальные формы.


Хорошо, почитаю.

>>16329
Ну, насчет char(1)-то и так понятно. Конечно, не всегда есть смысл использовать ссылки, чьи метаданные весят больше значений на которые они ссылаются, если необходимо в первую очередь сэкономить место.

Меня просто интересует вопрос: как лучше организовывать таблицы в тех или иных случаях, чтобы БД в итоге не весила в 5 раз больше, когда могла весить в 5 раз меньше и при этом оставаться удобной в использовании.

Попробую привести пример того, чего я хочу понять о построении БД. Это касается "вложенных" данных, т.е. когда "что-то" может содержать в себе десяток "чего-то", а то в свою очередь сотню "другого". И получается такая ситуация, например:
Пусть есть таблицы
1. Таблица "производители автомобилей (id, name)", id - PK;
2. Таблица "филиалы производителей (id, id_произ_авто, name)", id - PK, id_произ_авто - FK;
3. Таблица "автомобили (id, id_произ_авто, id_филиал, name)", id - PK, id_произ_авто - FK, id_филиал - FK.

Т.е. есть производитель авто (ferrari), у этого производителя есть много своих салонов для продажи (филиалы), в каждом филиале есть N моделей. Теперь заполним данными эти таблицы:
1. Производители автомобилей
id(1) name(ferrari) 2
id(2) name(nissan)
id(3) name(lexus)

2. Филиалы производителей
id(10) id_произ_авто(1) name(ferrari shop 1)
id(11) id_произ_авто(1) name(ferrari shop 2)
id(12) id_произ_авто(1) name(ferrari shop 3) 12
id(13) id_произ_авто(1) name(ferrari shop 4)
id(14) id_произ_авто(2) name(nissan shop 1)
id(15) id_произ_авто(2) name(nissan shop 2)
id(16) id_произ_авто(3) name(lexus shop 1)
id(17) id_произ_авто(3) name(lexus shop 2)

3. Автомобили
id(100) id_произ_авто(1) id_филиал(10) name(ferrari auto 1)
id(101) id_произ_авто(1) id_филиал(10) name(ferrari auto 2)
id(102) id_произ_авто(1) id_филиал(10) name(ferrari auto 3)
id(103) id_произ_авто(1) id_филиал(10) name(ferrari auto 7)
id(104) id_произ_авто(1) id_филиал(11) name(ferrari auto 1)
id(105) id_произ_авто(1) id_филиал(11) name(ferrari auto 3)
id(106) id_произ_авто(1) id_филиал(12) name(ferrari auto 3)
id(107) id_произ_авто(1) id_филиал(12) name(ferrari auto 5)
id(108) id_произ_авто(1) id_филиал(13) name(ferrari auto 8)
... и т.д.

Из-за подобной структуры, если я правильно понял, с каждой последующей таблицей размер БД будет разрастаться с геометрической прогрессией. И получаем, что только для производителя (ferrari) будет будет отведено 50 байт (представим, что все поля во всех таблицах занимают по 1 байт каждое). Но! Если бы мы отказались от 3 таблицы "автомобили" и вместо нее расширили бы 2 таблицу "филиалы", добавив 4 поля: model_1, model_2, model_3, model_4 (я выбрал 4 по наибольшему ассортименту среди всех филиалов), то итоговый размер для информации о производителе (ferrari) был бы уже не 50 байт, а 42 байта. Это еще при том условии, что 7 полей в этой таблице для (ferrari) не будет заполнено, но я не знаю: занимают ли незаполненные поля какое-то мест оили нет.

Конечно, второй подход для данного примера крайне херовый, ибо кол-во автомобилей будет всегда меняться и для этого придется либо добавлять новые поля, либо брать сразу с запасом. Но факт остается фактом: в одном случае - БД практичная, но занимает больше места; во втором - БД не практична, занимает меньше веса.

Напомню еще раз суть вопроса: как понимать, когда и какой из этих случаев лучше? Или я вовсе не так представляю хранение в БД?
154 1516401
>>16390

>id(1) name(ferrari) 2


id(1) name(ferrari)

>id(12) id_произ_авто(1) name(ferrari shop 3) 12


id(12) id_произ_авто(1) name(ferrari shop 3)

фикс
155 1516413
>>16390
А что ты так печёшся о размере? у тебя там биг дата чтоле?
156 1516417
>>16413
Уточню, есть база с которой работаем, и где нужно все БЫСТРО, она и пухнет, а есть всякие хранилища данных, в которых хранят и БЫСТРО им не нужно, во втором случае собирают все обратно в огромные таблицы, т.е. денормализуют. Все зависит от задачи.
157 1516418
>>16413
Нет. На данный момент ее еще даже нету. Я не пекусь, просто, если есть возможность уменьшить потенциальный размер БД в 5/10/20... раз, то почему бы и нет? Я не отношусь к ентерпрайзу какому-то. Просто пишу сервер на js для себя, который работал бы с этой БД для своих нужд. Если я могу выделить 5-10 гб для нее на своем диске, то как с этим будут обстоять дела с бесплатными хостингами - хз. У них наверняка будет ограничение на какие-нибудь 500мб.
158 1516419
>>16390
Как минимум у тебя лишняя ссылка на производителя автомобилей в третьей таблице. Ты ее можешь получить из второй таблицы. Это в нормальных формах описано, как избежать дублирования связок.

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

Данные хранятся в таблицах, и то - что ты называешь "дублированием" не решается с помощью ссылок на данные из другой таблицы. "Как-то там под капотом" , за счет fk. Fk - это ограничение, констрэйнт, его цель ограничивать допустимый набор данных.
1a1dca40e12d8466db8331a97034589d.jpg118 Кб, 750x1328
159 1516421
>>16252
Откуда вы лезете пидоры, даже на ебнном мейлаче умудряетесь обьянсять как дед-препод в пту. Унтермеши косноязычные.
160 1516440
>>16419

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


Я не проводил расчетов никаких, просто прикинул примерно график роста размера БД. Одно ясно точно: график будет с каждой таблицей все круче-и-круче.

>Ты ее можешь получить из второй таблицы.


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

>Тот оверхед, который ты получаешь при "дублировании" ключевых колонок, в реальных базах не значителен


В том-то и проблема, что все зависит от вида данных. Если это сотня матрешек, то в таких случаях, я думаю, основной объем БД и будут составлять эти PK и FK. Но сейчас думаю: если в каждой последующей таблице будет только один FK, с помощью которого можно обратиться к любой из предыдущих таблиц, то, наверное, эти FK действительно не так значительны...
161 1516448
>>16440
Покури про нормализацию, вот этот неплохо рассказывает
https://www.youtube.com/watch?v=1GWx5CZdSCg
162 1516490
>>16390

> как лучше организовывать таблицы в тех или иных случаях, чтобы БД в итоге не весила в 5 раз больше


Забудь об этом.
Вообще забудь.
БД (по крайней мере, реляционная) это не про размер.
А про целостность и доступных данных.
Внешние ключи именно про это.
163 1516493
>>16421
Прости, малыш.
Ты пришел в тред про БД, а не про пуляние козявками.
Тебе сюда: https://2ch.hk/pr/res/1511559.html (М)
164 1516502
>>16081
У меня отл по дискретке. Имхо есть связь
165 1516503
>>16493
Нет, ты просто уебок безмозглый, на трубе есть люди которые ВНЕЗАПНО могут рассказать доступно, в отличии от тебя. Значит дело не в бабине.
166 1516508
>>16502
Всем похуй тащемта, в продакшен тебя не кто не пустить без опыта, да ещё на удаленку, так что можешь пока разрабатывать только анус.
167 1516554
>>12524
Пидоры блядь ебаные как вы вообще в своих ебаных запросах разбираетесь если даже про самый простейший мыслимый запрос ничего сказать не можете?
168 1516558
>>16503
Ахахахахаха
Изучает программирование по видосикам на ютубе
Не умеет в текст
Не понимает, что италиком специально выделена цитата

>ррряяяяя, вы все мудаки, один я умный, мне на трубе объяснили


Бля, спасибо, анончик, пиши еще.
Что бы мы делали без третьеклассников в этом треде?
169 1516560
>>16554
Мы не разбираемся, мы сюда просто поссать зашли.
Иди своей дорогой, сталкер.
170 1516582
>>16558
Не, я как раз тупой, но ты ещё ещё тупее, потому-что тужишься что-то объяснить, но не можешь в объяснение.
15719974736730.jpg118 Кб, 918x578
171 1516588
ньюфаг в треде, есть какая-нибудь годная книжка или ресурс чтобы понять че такое субд как они устроены, откуда там какие то таблички высираются, как это все хранится в памяти в каких структурах? Но чтобы не погрязнуть во всем этом а быстро освоить, сам я с бд имею мало опыта, за жизнь вроде только несколько запросов написал на скюле и с хибернейтом чето из бд вытаскивал в джаве. Но умею в системное программирование ассемблер все такое, знаю на базовом уровне cs.
172 1516589
>>16588

>умеет в системное программирование ассемблер все такое


>спрашивает книжки у двачеров про sql

173 1516597
>>16582
Так может это не он не может в объяснение а просто ты

>как раз тупой


?
174 1516615
>>16508
Токсичная гниль, плес
175 1516619
>>16615
А что ты ожидал услышать? Конечно тебя сразу возьмут на удалёнку в энтрпрайз, мурмурмур
176 1516625
>>16582
Ахахахаха.
Зумер влез в чужой разговор, ни хуя не понял, закатил истерику.
Классика.
Если бы я собирался что-либо объяснять тебе, конечно, я бы объяснял на примере пчелок и бабочек. Но я не твой учитель информатики, мне на тебя насрать.

Я отвечал конкретному анону, который все, что ему надо, понял.

Когда ты вырастешь, может быть, ты научишься понимать определения из учебников. А пока, иди на хуй, давай, до свидания.
177 1516628
>>16589
"системное программирование" это маркер уебана
никто не знает, что это такое, но каждый уебан думает, что это что-то невъебенно крутое

с другой стороны, нет ничего необычайного в том, что кто-то, имеющий опыт ООП программирования, не сразу въезжает в функциональное, или в реляционную алгебру.
Это вещи идущие параллельными курсами, хули ты бугуртишь-то?
178 1516630
>>16615

>Токсичная


Зумер хотел услышать, что ему незамедлительно сделают приятно.
А когда не услышал, подорвался жопой.
И высрал единственное слово, которое выучил за последние два года.
179 1516633
>>16625
Ох блять плесенью потянуло, сьеби в свой совок пенсия, по твоим книжкам 70 года выпуска с зашоренными определениями уже никто не учится. Читни что-нибудь свежеее, и удивишься, что люди ВНЕЗАПНО могут доступно объяснять сложные моменты, а не просто срать цитатами из большой советской энцклопедии, и копипастом высирать матан.
180 1516643
>>16633
Смузихлеб, почему сложно и непонятно тебе, а виноваты в этом окружающие? Слышал что-нибудь про такие слова как полнота и однозначность трактовки?
181 1516648
>>16643
Большинство явлений можно описать несколькими способами, и очевидно что какой-то из способов описания будет лучше, а какой-то хуже. Совки не понимают что высирать термины, не всегда оптимальный путь объяснения не ну а чо вон же там в большой совесткой написано, значит это единственный верный способ донести.
182 1516650
>>16628
Ты говоришь, что знаешь ассемблер. Человек, который знает ассемблер - должен знать архитектуру процессоров устройств, под которые пишет код. Я это предполагал в тебе. А это значит, что въехать в архитектуру какой-то субд на ее прикладном уровне - как обоссать 2 пальца такому гику. Я уже молчу, что ты, видимо, еще и поиском пользоваться не умеешь. Вот такое парадоксальное мнение о себе ты у меня вызвал, потому и не понял тебя.
183 1516657
>>16650
Мнение среди кого? Среди бомжей на помойке? Зачем метать бисер перед свиньями?

мимкрок
184 1516659
>>16648
Соглы, а теперь распиши тот пост >>16252
по-зумерски и без совковых терминов
185 1516663
>>16657
Какое имеет значение "среди кого"? Ты жопой читаешь? Или хочешь лишний раз выплеснуть своего токсичного омежку наружу? Уебывай давай, мимокрок...
186 1516667
>>16440
Ты в принципе рассуждаешь в верном ключе.
Например про подзапросы, конечно это будет дольше, чем просто прочесть из таблицы, будет лишний запрос по индексу.

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

Но чтобы иметь возможность регулировать все эти вещи, тебе нужно знать устройство бд. Рекомендую документацию oracle по query optimization, как минимум. Там описано про способы доступа к данным: по индексу, сканы, про джоины и их типы. Когда этого будет недостаточно, придется лезть в исходники базы. Я использовал postgres, у него открытый исходный код на С.

После нормализации, тебе стоит почитать про денормализацию, и то для чего ее применяют)
187 1516673
>>16633
Ахахахаха
Школьник никак не успокоится
Да всем похуй, что ты ни хуя не понял
Одной макакой больше, одной меньше, всем насрать
Тебе никто тут ничего не пытается объяснить
Просто забавно наблюдать за твоими прыжками и ужимками
Продолжай
188 1516676
>>16650

>Человек, который знает ассемблер - должен


Смотрите, двачер рассказывает, кто ему что должен
Пиздец, опять каникулы, что ли?
изображение.png503 Кб, 480x360
189 1516678
>>16676
да тут весь тхреад каникулы, я кажется понял почему он тонет.
190 1516679
>>16676
>>16678
Семен Семенович, может перестанете вонять итт?
изображение.png1,1 Мб, 794x798
191 1516683
>>16673
Да не рвись ты так пенсия, тебе внуков надо нянчить, а не на желтом сайте сидеть.
192 1516691
Почему общаясь с большинством тех кто в SQL полез и читая их вопросы в интернете, создается впечатление, что в этот самый SQL лезут какие-то отбитые и ленивые люди? Индексы не юзают, строить БД так чтобы можно было отследить изменения во времени не умеют, а если им построят нормальные люди, то написать запрос который отобразит нужные данные в конкретный период времени не смогут и все в таком духе. Сколько вы хоть зарабатываете-то? Уверен, что немало. Так делаете свою работу нормально. Что в этом сложного-то? Выучил как декомпозировать сущность до третьей нормальной формы, научился включать индекирование, включил его для наиболее часто запрашиваемых данных, переодически перестраиваешь индексы, и напиши пару хранимок, которые попросят, чтобы не приходилось какой-то ужас из тащить на сервер, ну и посмотри план выполнения запроса, найду узкие места и подумай как оптимизировать запрос, чтобы не приходилось по всей таблице бегать и искать что ты там найти хочешь, вот все что от большинства из вас надо. Нет, блядь, даже этого сделать не можете.
tom-kruz-mem-smeetsya.jpg39 Кб, 500x333
193 1516694
>>16691
А нахуя, если и так платят?
194 1516695
>>16691
Какие курсы посоветуешь посмотреть, чтобы научиться всему этому?
195 1516705
>>16683
Ахахахахаха
ты ни хуя не понимаешь, что в треде написано, а рвусь я
пиздец, у школьников говна в череп налито.
Тебя-то видно, как нянчили, бггг
196 1516706
>>16691

>строить БД так чтобы можно было отследить изменения во времени не умеют


чо-чо?
изменения чего во времени?

давай послушаем, как ты версионируешь ERD, может, чего почерпну от умного человека
197 1516709
>>16695
ПОСМОТРЕТЬ?
"Спокойной ночи, малыши" иди посмотри, блядь
198 1516715
>>16691
Не раскачивай тут лодку, кто-то должен наговнокодить, чтобы за исправление потом хорошо заплатили
199 1516735
>>16706

> изменения чего во времени?


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

> давай послушаем, как ты версионируешь ERD, может, чего почерпну от умного человека


Ты будто меня на чем-то подловить хочешь.
Если ты про проектирование такой вот фигни, то тут довольно подробно описано как такое делается ручками с примерами кода http://www2.cs.arizona.edu/~rts/tdbbook.pdf
Если про готовые, то с MS SQL Server16 умеет из коробки https://docs.microsoft.com/ru-ru/sql/relational-databases/tables/temporal-tables?view=sql-server-ver15
200 1516743
>>16735
не понял магии с баклажаном
ты встречаешь людей, которые не знакомы с типом date, или что?
201 1516766
>>16709
Не понял, объясни...
202 1516828
>>16691

>Что в этом сложного-то?


Тем временем вопрос о самом простейшем запросе так и остается открытым более сотни постов. >>16554
203 1516917
>>16828
Потому-что вопрос ебланский.

Что в твоем понимании атомарная операция? Вопрос показывает полное не понимание принципов ACID.

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

В том отрывке что ты привел используется древнючая версия PG, и там описан нюанс, который решается операцией vacuum, из-за модели поддержания консистентности базы. И к самом count(
) имеет слабое отношение. И может вылезти на любом запросе.

Все эти вещи очевидны, если имеешь хоть малейшее представление, о внутреннем устройстве базы.
Нихуя не разбираются, ебланские вопросы задают, еще и вякают поьом что-то
204 1516929
>>16828
Там два вопроса.
Ни один не является вопросом про запрос.
Один - вопрос про реализации в разных БД.
Второй - какая-то хуйня на суржике, которую кроме тебя никто не понимает.
Как результат - никому на хуй не сдалось на них отвечать.
205 1517038
>>16917

>Что в твоем понимании атомарная операция? Вопрос показывает полное не понимание принципов ACID.


То что у одного слова могут быть разные значения в твою тупорылую бошку не лезет? Ясно что подразумевалось не атомарное из ACID, а то что в нормальной реализации количество строк должно храниться в одной переменно и из нее браться, а если есть другие реализации это просто запредельное ебланство. Т.е. я просто хочу узнать сколько строк у меня в таблице и все виснет нахуй / задумывается на несколько минут - вот это заебца придумали. Неужели есть ебнутые думающие что это не супер хуево?
206 1517039
Алсо, свитеркам покушать принес:
At GitHub we do not use foreign keys, ever, anywhere.
https://github.com/github/gh-ost/issues/331#issuecomment-266027731
207 1517042
>>16929

>твой вопрос - не вопрос


Ясн я привык уже
208 1517182
>>17038
Так возьми и сделай нормальную реализацию, хули ты пиздаболишь тут, еблана кусок. Возьми и напиши свою реляционку, с правильной реализацией, где количество строк хранится в переменной, раз все такие мудаки тупые и до тебя гения не додумались. Так ты усрешься блять.
Дибилоид тупой, я еще угадывать должен, что ты подразумевал из множества значений? Сука, мудак, не можешь вопрос сформулировать нормально, зато критик архитектур и решений нихуевый.
И еще, додик-недоучка, операция чтения переменной, может быть не атомарной, в зависимости от разрядности архитектуры и размера меременной.
Лучше свою энергию на обучение направляй, а не на дешевые выебоны
209 1517185
>>17038
Так а в чем проблема? Считаешь количество строк сам и записываешь куда тебе надо (тоже сам)
210 1517265
>>17042
Так ты не привыкай, а учись нормально формулировать свои глупые мысли.
211 1517271
>>17039
Ахахаха
mysql

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

Классика!
212 1517272
>>17038

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



Чо-то ни хуя не удивлен, что у таких ебланов проблемы с сиквелом.
213 1518005
Хочу изучить sql и pl/sql oralce
столкнулся блять с тем что в этой ебанине сукаблять не отображается демонстрационные база HR, для обучения. Не могу блять разобраться интернеты эти ваши, какую то ебанину выдают. Как я понимаю по дефолту они заблочены.
Проделал: "Кнопка Пуск –> Все программы -> Oracle Database 11g Express Edition –> Run SQL Command Line. Подключитесь как пользователь SYSTEM:
Напечатайте connect Введите имя для подключения: SYSTEM Введите пароль: <пароль-для-SYSTEM >
После успешного подключения (сообщения connected) введите следующий SQL-оператор:
SQL> ALTER USER HR ACCOUNT UNLOCK;
Введите пароль для пользователя HR с помощью следующего SQL-оператора:
SQL> ALTER USER HR IDENTIFIED BY HR;
Для выхода из редактора введите SQL-оператор:
SQL> EXIT"

Захожу sql developer и пишу:
"select from HR.employees;"

по итогу нихуя:
ORA-00942: table or view does not exist
00942. 00000 - "table or view does not exist"
Cause:
*Action:
Error at Line: 1 Column: 18
214 1518044
>>18005
Так у тебя нет такой базы, откуда ей взяться? Её сначало нужно залить в бд скриптом, или прикрептить через оснатску.

Не лезь блядь дибил сука ебанный
215 1518048
>>18044
Если база уже ГАРАНТИРОВАНО есть, вначале пишешь
USE HR
216 1518145
>>18048
Тебе русским языком напиали, что речь идет про Оракл, а не про говномускул.
Хули ты лезешь с советами, если даже вопрос прочесть не можешь?
217 1518146
>>18005

>Захожу sql developer и пишу:


Кем заходишь-то?
218 1518148
>>18005
Зачем ты приходишь на двач, если все подробно расписано у оракла?
https://docs.oracle.com/database/121/COMSC/installation.htm#COMSC001
219 1518165
>>17271

>говно говна


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

>сиквелом


Так говорят только ебнутые.
Аргумент что так когда то лет пятьдесят он на самом деле назывался и полоумные деды за ебаных пятьдесят лет никак не могут перестроиться и упорно делают вид что так правильно - аргумент ебнутых.
Кстати, отлично демонстрирует уровень умственных способностей свитероблядей.
220 1518205
>>18165
Ты ответы через генератор случайных чисел пишешь?
image.png663 Кб, 1024x1024
221 1518314
>>18165
Не устаю проигрывать с этого дауна

>свитер


>свитер


>свитеромирок


>Так говорят только ебнутые.

1379502562830.jpg40 Кб, 403x403
222 1518434
Чем Hadoop отличается от mysql?
223 1518440
>>18434
Эм, первая вебфреймворк, второе субд, не?
224 1518479
>>02870 (OP)
Хай двачата, помогите плиз с моим траблом:
Столкнулся с тем, что сайт невозможно редактировать. Кидает страшную ошибку "Software error:...". Оказалось база данных сайта переполнена. С помощью phpmyadmin я оптимизировал таблицы, но результата это не дало. Я полный чайник, искал инфу у гугла, но толковых мануалов не нашёл. Есть две таблицы на 1.5 и 1.3 гига: phpbb3_search_wordmatch и phpbb3_posts. Я нагуглил что первый это что-то связанное с индексом поиска, а второе сообщение на сайте. Как их почистить, есть мануалы?
sage 225 1518491
>>18440

> Hadoop


> вебфреймворк


Ты поехавший?
226 1518605
>>18146
под админа (если я правильно понимаю)
При установке, прикл 1 попросил придумать пароль. Потом пошел в прикл 2. Там вылазит прикл 3 вылазит окно, туда соответственно SYSTEM и пароль что вводил на прикл 1 при установке. Потом прикл 4. Там все сделал, ввел все тот же пароль при установке (чтоб мозги не ебать) и по этому всему подрубался через sql developer
изображение.png33 Кб, 926x608
227 1518607
>>18146
в продолжение к >>18605

сейчас тыкался и нажал некоротое дерьмо и вылезло окно, там есть знакомое слово HR. Так если я выберу его и поставлю галочку над "Use Existing", у меня заработает?
228 1518615
>>18434
дебил бляд загугли нахуй
изображение.png52 Кб, 929x739
229 1518620
попробывал и нихуя
изображение.png68 Кб, 1268x797
230 1518623
>>18620
вот тут получилось а через девелепер я хз
231 1518641
>>18605
зайди, блядь, юзером HR и перестань нам ебать мозги

в оракле, для нормальных (не сис и систем) юзеров, имя схемы по умолчанию == имени пользователя

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

ALTER SESSION SET CURRENT_SCHEMA = <schema name>

CONNECT scott
ALTER SESSION SET CURRENT_SCHEMA = joe;
SELECT * FROM emp;

я что, ебу, что ли, есть ли гранты у system на твой ебучий hr?

раз ты заходишь системом, посмотрел бы сразу, что у тебя там в схеме hr
может, там и впрямь, ни одной таблицы, а пустая схема
232 1518644
>>18620

>попробывал


бля...
233 1518816
>>18641
да все блять, через Toad for Oracle получилось, не ебу почему через ссаный девелепер не вышло, но собственно похуй уже на него
234 1518818
>>18641
но за ответ спасибо
235 1518853
236 1518930
>>18479
Надеюсь не на шинде сидишь?
Покажи больше логов
237 1518990
>>18479
Не надо чистить эти таблицы. Ощущение, что они нужндля нормальной работы.
Посмотри лучше, сколько места занимает transaction log.
238 1519252
>>18479

>phpbb3_posts


>1.3гига


Ебааааааааать. Это сколько вы там на форуме напиздели? 1.3 гига текста? Это же опизденеть как дохуя.
239 1519394
>>19252
Ну вообще то у нас форума-то нет))0))0)
Он не рабочий...
240 1519434
>>17042
Чувак, ты в каком-нибудь ебучим си-треде так вопрос задай, очередь к твоей матери метров на 10 выстроится.
241 1519829
>>19778 (Del)

>кококо, почему вместо того, чтобы пересчитать число оно пересчитывает число?


Ты какой-то ебанутый
242 1519890
>>18620
попробывал твою мамашку
нирикамендую!
243 1520505
>>02870 (OP)
бамперной
244 1520709
>>19890
У нее просто owerflow уже
245 1520904
Бля реляционку учить или ноСКЛ сук.
смотрел примеры CRUD в сравнении с муськой и монгой, на SQL показалось логичнее, чем на json
246 1520932
>>20904
не учи ни то, ни другое
пиши в файл, не иди на поводу у хайпа
247 1520955
>>20932
Да я бы с радостью в csv файлы писал, но требуют, суки.
248 1521149
>>20904
Азы скл и дальше носкл
0щд0.jpg150 Кб, 1698x1131
ТЕМА ДЛЯ ДИПЛОМА 249 1521183
>>02870 (OP)
Сап.
Входные данные: Хороший SQL, нормальный PL/SQL, знаю прилично теорию по проектированию/ нормализации и все вот эти реляционные вещи ( практический опыт тоже есть) Работа тоже с этим связана.
Заканчиваю вузик по Информационной безопасности, хотелось бы как можно больше связать его с БД, но нет ни одного препода на кафедре, кто мог бы помочь с темой, собсна возьмут только если поставлю конкретную тему сам
На ум приходит только разработка-проектирование бд и системы защиты информации и дать права/роли юзерам и зашифровать айдишники, но это больше на курсач максимум тянет, чем на ВКР.
Короч, ПОКИДАЙТЕ ИДЕЙ ДЛЯ ВКР ПО БД + ИБ
Или может почитать чего интересного по этой теме
250 1521193
>>21183

>Хороший SQL, нормальный PL/SQL


Ай насмешил
251 1521200
>>21183
Аналатичиские сервисы\кубы\проектирование хранилища данных
Не лезь дебил ебанный блядь
123.jpg127 Кб, 406x600
252 1521202
Антуаны поясните за звеоздообразный джоин, желательно с примером.
253 1521213
>>21193
что?
ну еще шарп и питон, суть в том что я по иб нихуя не знаю)))
254 1521219
>>21200
Ты про OlAP ? и чем эта модель больше связана с ИБ чем OLTP?
Мне бы скорее что то по админству СУБД
255 1521249
>>21219
А тебе прям непременно с ИБ нужно? Ну хз тогда что можно высрать по ИБ, шифрование, политика пользователей+прокси, огнестена, на курсовую не тянет как по мне. Хули там админить, то хуяк, пиздык и в продакшен....Разве что запилить отдельные таблицы аудита и сделать тригеры, ну что-то это всё развлечения уровня ебли осла с табуретки.
256 1522105
>>21183
Вуз в топе или нет?
15657803101590.jpg37 Кб, 500x442
257 1522683
Аноны, а что-нибудь из топовых курсов помимо sql-ex есть? Или его достаточно с головой будет, просто может за это время придумали еще чего поинтереснее.
На sql-ex просто дрочить учебник и решать задачки?
258 1522712
>>22683
NoSQL
259 1522771
>>22683
Я вот этого смотрю, хорошо объясняет
https://youtu.be/cRoTc8ONWSQ
Там еще один курс есть. Sqlex сделано совсем уж из говна и палок, у меня глаза от него вытекают.
260 1522915
Почему в интернете так дохуя курсов про основы, типа SELECT'ов, что такое индекс и как делать джоины, но нихуя толком нет кроме сухих статей про более глубокие вещи типа эксплейнов, хинтов, правильному обслуживанию и выбору индексов итд?
261 1522924
>>22915

> основы, как делать джоины


Ti tam ohyel??
262 1522950
>>22924
Я про то что это вообще такое и как одну таблицу к другой прихуячить
263 1523138
Помогите найти тему для магистратской работы!

Есть желание замутить что типо бд для хранения изображений/видео/аудио для мамашиного обучения с ETL, но не знаю как сформулировать тему, какие актуальные таски, проблемы, есть в этой области, которые можно решить. Можете что-нибудь порекомендовать? Какую-нибудь статью, которая, к примеру, рассматривает интересные задачи по компьютерному зрению или речевому распознаванию?
264 1523143
Аноны, помогите :(
Не могу понять, как смоделировать таблицы с ключами для лекарств и их аналогов, которые являются одним и тем же полем. Пользователю по 1 лекарству можно смотреть множество аналогов.
265 1523155
>>23143
Вынести лекарство и его аналоги в отдельное отношение?
>>23138
Чью мамашу ты обучать собираешься?
266 1523237
>>23155
Твою конечно. Всем тредом её обучаем продвинутой техники горлового минета.
изображение.png13 Кб, 556x822
267 1523276
>>23143
Эм, а в чём трабл?
Либо если таблица небольшая, просто все в одну пихать, а потом фильтровать. Либо составной ключ.
268 1523478
>>23143
а нельзя бахнуть одну таблицу для лекарств, просто всем добавить колонку "аналог", которое будет иметь запись ID лекарства в той же таблице, аналогом для которого является это лекарство?
мимо
animals.png13 Кб, 692x282
269 1523872
>>02870 (OP)
Ребятки-котятки, есть вопрос. В общем, есть такая схема состоящая из 4 таблиц. У нас есть таблицы владельцев, абстрактных животных, котиков, собачек. Котики и собачки являются подмножеством животных, если смотреть в ооп, то они наследуются от класса животных. Так вот, собственно говоря вопрос, как на уровне бд ограничить у одного владельца котов одного цвета. Если бы в таблице cats был бы owner_id, то я просто бы сделал составной уникальный индекс из полей owner_id и color, но owner_id доступен только в связанной таблице animals. Как решить этот вопрос? Либо я говно у меня архитектура говно (если так, предложите что нибудь лучше), либо можно как то сделать составной индекс с полями из связанных таблиц, а я и не знаю?
270 1523876
Стоит ли использовать ORM, если в базе данных и не пахло ни какими нормальными формами? Стоит ли пердолиться и настраивать классы, которые кое-как сгенерит маппер? Или проще просто сделать вручную нужные классы для нужных сущностей, которые предполагается дёргать из базы и вручную запилить в этих классах обращения к sql серверу?

База чужая, оптимизировать её нельзя.

Что посоветуете?
271 1523909
>>23872

Что если цвета и породы вынести в отдельные таблицы, а потом сделать составной ключ, как советуют тут: https://stackoverflow.com/questions/5835978/how-to-properly-create-composite-primary-keys-mysql устроит такое решение?
image.png31 Кб, 696x393
272 1523950
>>23155
>>23276
>>23478
Спасибо,остановился на таком варианте с 2 FOREIGN ключами
273 1524054
>>05350
ну все же может поздно, но стоит упомянуть что threads это отдельная таблица, привязанная к постуно не важно.

я нашел куда удобнее вариант чем то что ты написал, а именно select posts where in (select id from threads limit ?) -> сортировка на стороне сервера (не дб)
274 1524161
>>21202
Бамп вопросу
275 1524205
>>24161

Дык в русской википедии есть статья про схему звезда. Или тебе не это нужно? Или там не понятно?
276 1524264
>>24205
Хм, и правда есть, спс. Чуть подробней бы.
277 1524358
>>23876
Что-что.
Попробовать воспользоваться orm, если fk все есть, и посмотреть через профайлер, какие запросы орм генерирует. Если калл, то ебашь сам руками.
1E403A76-CDE4-48D8-8B3A-E30B8F623A49.png290 Кб, 2048x1536
278 1524362
>>21202
Что ты подразумевешь под звездообразным джойном?
Такое даже не гуглится, блжад.
Что это?
Cross join?
Организация основной таблички типом «звезда», чтобы потом джойнить справочники только на нее?
279 1524406
>>24358

Нету fk. Вообще нет ни одного. Хотя в таблицах есть поля типа table1_id которые по задумке автора ссылаются на примари ключ id таблицы table1, но самого ключа нет и создать его нельзя. Если я буду юзать orm, то это получается что мне всегда нужно будет аккуратно программировать хули там эта орм сохраняет и обновляет, чтобы база по пизде не пошла. Вот и думаю, может ну его, написать просто классы модели вручную и вручную закодить там загрузку и сохранение в базу.
280 1524428
>>23950
А если ты хочешь подыскать аналоги аналога?
281 1524530
>>24428
Разве есть проблемы? Аналоги - есть лекарства и наоборот.
282 1524641
>>24530
Извини, не сразу дошло, что у тебя в названии препарата могут и аналоги быть
283 1524767
Народ,хелп:

Найти производителей, которые выпускают более одной модели, при этом все выпускаемые производителем модели являются продуктами одного типа.
Вывести: maker, type
Схема БД: http://www.sql-ex.ru/help/select13.php#db_1

http://www.sql-ex.ru/learn_exercises.php#answer_ref

Мой солюшн:

SELECT maker,type FROM Product

WHERE maker =(SELECT maker FROM Product
group by maker
HAVING COUNT (distinct type) =1
AND COUNT (model)>1
)
group by maker,type

ПОд ответ подгоняется, на проверочной базе фейлит.
284 1524781
>>24767
За такое кривое форматирование, тебе нужно руки поломать, чтоб ты никогда больше не писал ничего.
285 1524868
>>24406
Если у тебя нет fk, не совсем понимаю, как орм будет работать, если только ты там где-то в конфигураторе пропишешь это. entity Framework, например, так не умеет, насколько я знаю.
286 1524894
>>24781
Да ты зайка)
287 1524911
>>04513
Там может быть какой-нибудь NFS и из за этого оно будет тормозить.
288 1526094
>>24054
Ни хуя не понял, но рад за тебя.
image.png52 Кб, 1599x251
289 1526208
Как сделать так чтобы выводилась только вторая запись? Можно ли как-то сделать метод IN строгим, чтобы он выбирал из тех записей, которые строго соответствуют заданным параметрам?
290 1526259
>>26208
А что не так с 1 и 3 записями?
291 1526321
>>26259
Мне нужно вывести запись второго типа то есть: чтобы там были параметры и 'lorefriendly' и 'big', а он выводит вообще все подряд, где встречаются это параметры. Как это можно реализовать при связи многие ко многим? Пытался через AND перечислять, так он никакие не выводит.
292 1526339
>>26321
Заджойни по олдскулу и расставь скобки, как-то так.
select * from t1,t2,t3 where (t1.zalupa = t2.zalupa_id and t1.huita = t3.huita_id) and t1.tag in('tag1', 'tag2');
293 1526839
хуле у вас шапки нет?
Как вкатится по нормальному? Посоветуйте книгу
294 1527111
>>26839
SQL не нужен, уёбывай в макакинг
295 1527124
>>24362

>Организация основной таблички типом «звезда», чтобы потом джойнить справочники только на нее?


Это.

Ну со звездой вроде по совету анона прочитал на вики, теперь не могу снежинку вдуплить. Если у звезды просто инерр джоин во все поля, то со снежинкой неясно, чем она отличается?
296 1527213
>>27111

>SQL не нужен, уёбывай в макакинг


ЧСВшное мудило, конечно, ведь sql так сложнее js, да?
297 1527349
>>27213
Мне, как знающему sql на пятерку, но так и не осилившему front, например, кажется, что нет.
298 1527365
Посоветуйте как вкатиться, мне он нужен для бэкенда, какую-нибудь книжку или видео курс, который поможет разработчику быстро освоить нужный минимум по работе с базами данных
299 1527368
>>27365
как вкатиться в sql

fix
301 1527449
>>27399
О найс, спасибо
302 1529641
>>11264
Привет. Не писал, только использовал logminer. Гуглится redo log dissecting, но статья старая.
303 1529686
>>29641
Угу, нашел какую-то дедовскую статью для 9 версии, дай бог здоровья людям.
Заголовки файла и магические числа вроде совпали для 12. Правда под винду все. Сами данные тоже локализовал, и описание длинны полей. С текстом просто, а вот числа довольно интересно хрянятся, суммы чисел умноженых на десятки в квадрате. Не могу пока с заголовком записи разобраться, длину ее найти, целиком. Все руки не доходят
0.jpg55 Кб, 627x393
304 1529690
Есть БД, и есть задача Вывести список всех пользователей, у которых за год с момента их регистрации (Users.RegistrationDate) было совершено более 30 транзакций в валюте USD (WalletSections.Currency = 1).

Как правильно сделать выборку за период по времени с Users.RegistrationDate по (Users.RegistrationDate + 1 год)?
С остальными параметрами проще, но вот к периоду даже не знаю, как подступиться..
305 1529765
>>29690
Разобрался
Select
U.userid, Count (t.transactionid)
From users u, wallets w, walletsections ws, transactions t
Where
u.userid=w.userid and
w.walletid=ws.walletid and
ws.walletsectionid=t.walletsectionid and
to_date(t.creationdate,'dd.mm.yyyy') between to_date(u.registrationdate,'dd.mm.yyyy') and add_month(to_date(u.registrationdate,'dd.mm.yyyy'),12)-1 and
ws.currency='USD'
group by u.userid
having count(t.transactionid)>30
306 1529935
Как вкатиться, что читать¿
307 1530022
>>29935

>Как вкатиться, что читать¿


sql-ex
308 1530033
>>30022
Спасибо, пупсик
1.jpg55 Кб, 627x393
309 1530355
Господа, как вот к такому запросу:

SELECT Employee.Age, Employee.Name
FROM Employee
INNER JOIN ProductEmployee ON Employee.ID = ProductEmployee.ID
INNER JOIN Product ON ProductEmployee.ID = Product.ID
WHERE Employee.Age > 50
GROUP BY Employee.ID
HAVING (COUNT(Product.ID) >= 10);

добавить вывод ещё одного значения после сортировки, самого последнего по дате:

(SELECT Product.Name ORDER BY ProductEmployee.Date DESC LIMIT 1)
1.jpg38 Кб, 628x440
310 1530360
>>30355
правильная схема
Yellowroom-artist-Blizzard-фэндомы-5545793.jpeg146 Кб, 725x1340
311 1530480
Где почитать внятных материалов по этим вашим sql'ям, чтобы подготовиться к собесу? Всякие btree, составные индексы, уровни изоляции транзакций и всё такое я знаю (или думаю, что знаю), но вангую, что меня спросят какую-нибудь хуйню вида "а как вакуум в постгресе работает и чем он отличается от аналогичных процессов в innodb" (реальный вопрос, спросили как-то раз) и я в лужу сяду.
312 1530494
>>30480
А куда и накого про вакуум спрашивали? Одно дело вопрос, что такое и для чего вакуум, а другое как работает. Да и тут могут бвть разные уровни детализации ответа. Для одного уровня достаточно доки, если подробнее, надо искать специализированные статьи или в исходники лезть. Боюсь по вопросам такого типа одного источника не найти, все нужно гуглить отдельно и иногда по исходникам
313 1530506
>>30494
Да я просто разработчик и мне вообще непонятно, зачем мне знать про вакуум, если я не собеседуюсь на администратора баз данных. Я должен знать интерфейс базы данных и особенности работы с ней, чтобы эффективно её использовать, не более.
314 1530558
>>30506
Ну если хайлод какой, то может быть полезно, хотя сам механизм работы все-таки непонятно для чего знать, в данном случае.
315 1530561
>>30558
Ну это понятно. А какие популярные вопросы вообще есть про бд? У меня личный топ часто задаваемых вопросов (сеньор левел) - это что такое индекс, как он работает, как работает при сортировке, уровни изоляции и напишите какую-нибудь хуйню с тремя джоинами.
А самым сложным заданием было написать запрос, который из колонки, в которой хранятся числа (1,2,3,5,6,7,10) выведет промежутки ([1,3],[5,5],[6,7],[10,10]).
316 1530563
Появилась необходимость написать синтаксический анализатор для MS SQL запросов. Найти описание грамматики в каком-нибудь вменяемом виде не смог (желательно БНФ). Имеется ли таковое в открытом доступе?
15657803101590.jpg37 Кб, 500x442
317 1530591
Аноны, посоветуйте плз годных бесплатных онлайн курсов по SQL (или книг). Учебник на sql-ex периодически падает на полчаса - час, чет херово это, когда почитать хочешь.
Знаю на W3C есть, но он вроде совсем для нубасов - так получить общее представление, хотелось бы что-нибудь посолиднее.
Guuwvd 12312312 318 1530835
Ywgsgfs
319 1530982
Предположим есть таблица "Сотрудники". И есть таблица "Отделы". Отделы-сотрудники - 1 ко многим. Куда мне запихнуть поле "Начальник отдела", где указывается айди сотрудника, ведь в этом случае появляется дополнительное отношение 1 к 1, что тупо?
320 1531012
>>30982
Сделай поле должность
321 1531019
>>31012
То есть не поле, ну ты понял
322 1531039
>>31019
Не поле, а тэг.
323 1531040
>>31012
По сути я так и думал делать табличку "Должности" и там одна из строк типа "Начальник отдела", но, в общем, спасибо. Хотя и нагуглил вариант, про который выше написал, но он мне не нравится.
324 1531257
>>30561
Ну еще про типы джоинов, nested, merge, hash. Как работают, когда лучше использовать. Типы индесков.
Если по ораклу: хинты, redo/undo, direct path операции, методы доступа к данным (типы доступов по индексу, сканирования), партиционирование, тэйблспэсы, устройство памяти, pga, sga, локи.
Оптимизация в зависимости от типа базы, oltp или olap.
Postgres - тот же вакуум, но это скорее про то, каким образом acid поддерживается в базе. Как можно влиять на план выполнения без хинтов. По конкретно по пг больше вспомнить не могу.
По mpp, как работают бродкасты редистрибьюции. Какой ключ дистрибьюции лучше выбрать.
По sql не помню, давно уже не спрашивали. Доводилось строить план выполнения по продиктованному запросу.
Это конечно далеко не полный список
325 1531409
>>31257
Он явно в курсе происходящего в движках бд, двачую этого ораклиста.
326 1531411
>>31040
На уровне структуры у тебя получится так, что может быть много начальников. Чтобы этого избежать, надо в отделах сделать айдишник руководителя.
327 1531425
>>31411
Пф, а ещё айдишник заместителя руководителя, заместителя заместителя, бухгалтера и всех прочих, кто может быть один, ага. Проще уж constraint'ом задать уникальность для тэга.
328 1531761
>>31425
Ну ты спрашивал про руководителя.
Начальник всегда один у отдела.
А бухгалтеров и замов может быть сколько угодно.
329 1533458
Аноны, почему плейсхолдеры быстрее сабселекта?

В случае с плейсхолдерами мой запрос что то типо
select form posts where parent in ?, ? и так далее..
Под ? идет индекс треда, их всего 250

В случае с сабселектом там что то типо
select
from posts, (select * from threads where board_id=? order by lasthit desc limit ?) as threads where posts.parent=threads.id || 2, 250

Итого: 350 всего/250 живых тредов , 700к всего/500к живых постов:
Плейсхолдеры: 4 секунды,
Сабселект: 14 секунд

Где я обосрался? Сами плейсхолдеры получаю тем, что написанно в сабселекте через другой запрос
330 1533459
>>33458
чуть не забыл, субд: mariadb 10.4.10
331 1533480
>>33459
>>33458
Похоже индексы пофиксили проблему:
плейсхолды соснули, теперь сабселект берет одну секунду
332 1533499
>>33480

>почему быстрее?


Открой план запроса же.

Второй запрос у тебя с САБСЕЛЕКТОМ написан просто ужасно, если что. Когда такое вижу, аж плохо становится.
333 1533503
>>33499

> написан просто ужасно


почему?
334 1533532
Аноны, щас зарабатываю тем, что просто пищу всякие хранимки для отчётов в MS SQL, но есть желание развиваться, а конкретно - развиваться в Биг Дата и Хай Лоад, хочу изучать Hadoop, Spark, вот это всё. Во многих вакансиях, ко всему прочему, просят знания ETL, OLAP, DWH и прочей аналитики на SQL. Собственно, тут возникает вопрос, на чём мне лучше всего это изучать? Остаться на MS SQL или начать изучать Oracle? Какая СУБД более востребована на нашем рынке в Биг Дате и аналитике? дс2
335 1533813
>>33532
На MS SQL точно оставаться не надо.

Еще определись с направлением. HighLoad это обычно очень большое количество мелких операций, которые требуется выполнять очень быстро.
Хранилища - это обычно грандиозная пиковая нагрузка, где оперируют большими объемами данных за раз. И там часто возникает вопрос отработает-не отработает и за какой период времени.

Сотвественно базы создаются и настраиваются несколько по разному для хайлода и хранилищ, и способы оптимизации различаются.
Bigdata и прочие hadoop-ы это идет обычно в связке с хранилищами(dwh) . Технологии отличаются от реляционок, хоть и чем-то похожи

Сейчас стараются строить хранилища по следующему принципу: на основе hadoop технологий как первичного слоя для хранения и превращения сырых данных в более менее подготовленные для загрузки в реляционки. В качестве реляционок стараются использовать MPP системы. GreenPlum хороший пример, есть и другие решения, Teradata например, Vertica помоему тоже MPP.

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

По хранилищам это изучение MPP баз. Я бы выбрал GreenPlum - открытые исходники, подробная дока, сдедан на основе postgres. Ну и отдельным стеком решения на базе Hadoop. Там целый зоопарк, но довольно часто можно встретить связку hadoop - yarn - spark, ну и что нибудь из эмуляции БД для hadoop по типу hive. Понимание oracle или postgres впринципе и тут также очень пригодится
336 1533827
>>33813
Спасибо за ответ, Анон

>На MS SQL точно оставаться не надо.


>GreenPlum хороший пример, есть и другие решения, Teradata например, Vertica помоему тоже MPP.


Почему на MS SQL лучше не оставаться? Только из за привязки по стеку Майкрософта? Вообще, у MS SQL вроде как есть SSAS, которые тоже позволяет работать с хранилищами, разве нет? Да и на HH почти во всех вакансиях, в которых упоминается DWH, требуют MS SQL, а тот же GreenPlum упоминается только в пяти вакансиях. Так в чём его преимущество?

> Понимание oracle или postgres в принципе и тут также очень пригодится


С постгрессом знаком не много, а oracke даже в глаза не видел. Думаешь, нормально продолжить погружаться в postgres вместо того, что бы начинать изучать oracle с нуля?

В общем, благодаря тебе у меня примерно сформировался стэк в голове, который мне нужно изучить:
1) hadoop - yarn - spark
2) postgres + GreenPlum
После этого можно идти стучаться на галеры или нужно что то ещё?
337 1533837
>>33827
Мне кажется просто он пидор с опенсорсом головного мозга. Я конечно хз чотам щаз в тренде, но BI на посгрес, звучит как анекдот.

А так и у мелкомягких и у оракла есть свои решений, и интерпрайз весь на них.
338 1533856
>>33827
На текущий момент не видел и не слышал, чтобы кто-то строил или планировал хранилища на MS, задчи миграции с него на другие решения, да видел. С оракла тоже стараются уходить там где это возможно. Желания такие по крайней мере часто слышал.

Достаточно, можно впринципе первое или второе изучить и начинать вкатываться, а остальную часть по ходу дела разбирать. Еще скриптовой язык не помешает, shell,python и работа с терминалом.

По поводу знания конкретной базы: тут суть не в самой технологии, а в базовых навыках и понимании. Тебе это сильно пригодится для решения многих задач, если будешь работать базами в принципе. Не сильно важно какая база, просто нужно хорошо знать, как она работает.
339 1533859
>>33837
Где ты увидел про BI на постгрес, еблан тупорылый?
340 1533933
>>33856

>На текущий момент не видел и не слышал, чтобы кто-то строил или планировал хранилища на MS


Ну на HH просто дохуя вакансий по MS, в том числе DWH. У GreenPlum всего 5. Может на западе его активно юзают, но, похоже, не у нас.

>Достаточно, можно в принципе первое или второе изучить и начинать вкатываться, а остальную часть по ходу дела разбирать. Еще скриптовой язык не помешает, shell,python и работа с терминалом.


Python знаю, а насколько нужно уметь с терминалом работать? На Баше скрипты писать?

Кстати,а не знаешь какие-нибудь площадки, которые предоставляют огромные объёмы данных, на которых можно тренироваться?
341 1533944
>>33859
Не рвись ты так красноглазый. Анон полный набор для BI в вопросе перечислил как бе.
342 1533949
>>33532
Не поверишь, но лучше всего изучать сам SQL, тот же етл, по сути состоит из сплошных sql запросов чуть более чем полностью. Хранилка имеет свои нюансы конечно, но в целом это та же бд. В нагрузку можно учить mdx/dax. Вобще есть мнение что все уже вернулись от кубов к табличной модели.
343 1533982
>>02870 (OP)
Кароче, есть необходимость сделать метрики для предприятия.
У предприятия часть необходимых данных хранится в 1С.
Хранение, очевидно, файловое.
1Сника у предприятия нет. Только-только уволился и ищут что-то новое.
Может кто подсказать, кто с 1С работал. Если я приду и скажу новому исполнителю который только пришел - хуяч мне SQL-сервак - он меня пошлет? Какие варианты есть еще тогда работы с бд 1С?
Или только заказывать csv у 1Сника с обновлением раз в сутки?
344 1533985
>>33933
Нет не знаю, может аноны подскажут, по площадке с данными сам как-то искал и не нашел.
Скриптовой язык обычно требуется для датаинженеров, если в hadoop стек углубишься. Да глубокие знания не требуются, просто уметь.

Я думаю далеко не все вакансии по ms это dwh. Открыл первые три попавшиеся по dwh, ни слова про ms.
И сама по себе работа с базой, это не всегда работа с большими данными. Если хочешь прокачаться именно в этом направлении, ищи проекты с объемами баз от 50 терабайт примерно, где множество систем источников и приемников, множество процессов загрузи и выгрузки данных. Сотовые операторы, те же мэйлы и яндексы, авито, банки крупные, ресурсодобывающие организации.
Иначе попадешь в болото из 10 табличек, и 5 отчетов с сервером на локалке. Думаю вакансии по ms в большей степени как раз про это. Потратишь время зря.
345 1534009
>>33982
Там в два клика 1с привязывается к базе данных. Так и говоришь, положи мне базу 1с в базу данных.
346 1534012
>>34009
Как я понял сейчас у предприятия вообще никакой бд нет, только 1С. 1Сник сможет SQL-сервак на его выбор поставить? Мне не принципиально к чему запросы делать.
Или это вообще вне его компетенции?
347 1534013
>>34009
Да но учти ставить и настраивать БД, это не работа 1сника, не исключено что он это умеет, но не обязан, так что может послать. Вобще серверами должен заниматься сисадмин. Он поднимает скуль, а 1сник просто указывет сервер-источник. Есть вариант на линуксе, которые бесплатны, но нужен человек который сможет настроить. Можно разово забашлять аутсорсерам чтоб сделали сервер, а потом 1сник пусть сам занимается.
348 1534017
>>34013
Спасибо, значит сисадмина буду пытать или заплачу 1Снику.
Ох уж этот оутсорс.
349 1534061
Пиздец, еле как нашел ваш тред... Как работают транзакции? Касаемо mysql. Вот, например. Есть одно соединение с бд на сервере, которое обрабатывает запросы пользователей, они могут вставлять свои данные в бд. Но проблема в том, что они не могут вставлять одинаковые данные. Как разрулить эту ситуацию? Советуют использовать транзакции. Но в чем их суть? Вот, как это понимаю я:

Пользователь A хочет добавить 'хуй' и пользователь B тоже хочет добавить 'хуй'.
1 ситуация: они это делают в разное время. Перед вставкой в бд сначала происходит проверка на наличие вставляемых данных и если их нет, то выполняется вставка. Итог: пользователь A добавил 'хуй' в бд, пользователь B захотел добавить, не прошел проверку, был послан на хуй.
2 ситуация: оба пользователя делают это одновременно. Для каждого из них проверка выполняется успешно - 'хуй'я нет еще в бд, соответственно, они оба вставляют два 'хуй'я в бд, чего быть не должно. Окей, используем транзакцию. Вместо обычного

>INSERT INTO...


пишем

>START TRANSACTION


>INSERT INTO....


>COMMIT


Транзакция должна заблокировать таблицу над которой выполняются операции? И отработает только одна из них? Или вторая зависнет, дождется завершения первой, после чего выполнит себя повторно, вставив 'хуй' дважды? Или как? Или что?
350 1534076
>>33985

>Иначе попадешь в болото из 10 табличек, и 5 отчетов с сервером на локалке. Думаю вакансии по ms в большей степени как раз про это. Потратишь время зря.


Ну сейчас я как раз на MS SQL работаю, и там в одной БД больше 1000 таблиц, а такая БД на сервере ни одна, да и инстанс тоже не один. А для бдшек с 10 табличками, по моему, MySQL используют, и врятли таким компаниям вообще DWH нужен.
351 1534101
>>34061
Оба вставляют хуй, первый хуй вставляется с успехом, но второй уже не лезет. Соотвествено идет отмена первого хуя, оба пользователя ловят ошибку, не один хуй не вставлен. Образно говоря как логическое И, вставляются или оба хуя, или ни одного. Оба хуя должны быть в одной транзакции офк.
352 1534102
>>34101
Ну и плюс пока хуй не вставлен, пользователь не получает сообщение о сукесе.
353 1534103
>>34101
Что значит в одной транзакции? Я что-то не понимаю. Т.е. транзакции не решают мою проблему? Мне надо как-то разрулить одновременные попытки вставки одинаковых данных.
354 1534109
>>34103
Перефразирую, транзакция обеспечивает выполнение запросов собранных в ней, т.е. если один из шагов рамках транзакции фейлится, отменяется вся транзакция.
355 1534112
>>34109
В твоем случае просто используй With lock, чтоб лочить таблицу во время вставки
356 1534113
>>34109
Ну, про это я читал. А что будет, если каждый из пользователей создает транзакцию? И не просто создает, а они одновременно их создают?
357 1534115
>>34112
Если я правильно понял, как только пользователь запишет что-то, то второй запишет после. Это никак не решает мою проблему с одновременной вставкой, ибо проверка уже прошла для обоих и сказала, что данные можно вставлять.
358 1534116
>>34115
А в чем проблеиа? Второй запрос ничего не запишет и вернет ошибку, как если бы он изначально не мог вставить, т.е. для пользователя разницы нет. Если у тебя списывается из таблице А и записывается в таблицу Б, то вот это и собирай в транзакцию.
qw.png53 Кб, 1506x784
359 1534118
>>34116
Нет, мне нужно просто, чтобы данные не дублировались. Я в одном из тредов уже писал про это, но там мне не сильно помогли. Проблема на пике.

А with lock нужно в транзакциях использовать? Блять, я запутался...
361 1534120
>>34119
А вобще зависит от бд, гугли свю бд на lock/lock table
362 1534124
>>34119
Не надо пока этих томов только, плиз... Я сейчас хочу понять, в том ли я направлении вообще думаю. И я не уверен, что вы вообще поняли что я хочу. Это первое. Второе. У меня mysql, толку от этих конструкций, их может и не быть.

Я хочу понять: две транзакции, они как-то блокируют друг друга? Вот одновременно их отправили на исполнение.. В обеих только вставка однотипных данных. Но какая-то из них все равно будет принята на исполнение быстрее. Так вот та, что быстрее начнет выполняться, она запретит остальным транзакциям выполняться?
363 1534125
>>34124
Да. Она залочит таблицу и все остальные пойдут нахуй, пока она не выполнится.
364 1534126
>>34125
А когда она выполнится, что будет? Залоченные транзакции начнут постепенно выполняться? Или они уже ВСЕ?
365 1534127
>>34118
Если иебе нужно, чтобы одинаковые данные не вставлялись, напиши запрос так, чтобы если хуй уже есть, то его вставлять не надо. В ms sql для этого есть merge.
Если merge нет, пиши insert если хуя нет, и update, если хуй есть.
И создай на табличку unique constraint на поле, в которое хочешь вставлять хуй, чтобы прям на уровне бд разруливать эти вопросы.
366 1534128
>>34126
Конечно, они выполнятся.
367 1534130
>>34127
Не получится, потому что хуй может быть и не уникальным по своей природе, но разным по длине.
хуй 25
хуй 14
хуй 6
- все это нормально, но
хуй 25
хуй 25
хуй 14
хуй 6
- не может быть. Поэтому unique запретит мне много хуев разной длины добавлять.
368 1534132
>>34126
Нет, они посыпятся с ошибкой когда увидят что база залочена. В майскуль есть отдельная функция lock. Но как писал анон выше мне кажется в твоём случае нужно действавать иначе, например добавить If exist какой-нибудь, чтоб оно проверялось перед вставкой, и уже в зависимости от результата действовал.
369 1534134
>>34130
Составной ключ?
370 1534135
>>34130
Забыл добавить: тут может быть еще и пизда со своей глубиной, по этому второй столбец тоже не может быть unique, ибо не получится записать
хуй 15
пизда 15
371 1534136
>>34130
Очевидно, задача на примере хуев и пезд - плохая задача.
Сформулируй понятнее, что тебе нужно, но уже сейчас видно, что транзакции - вовсе не то, что тебе нужно использовать для ее решения.
Ты можешь сделать уникальный индекс по нескольким полям, если что.
372 1534137
>>34136
Два чаю этому, для начала определи какие атрибуты тебе нужны для определения уникольнной позиции. Может вобще стоит нормализовать и хуи с пездами растащить по разным таблицам
373 1534138
>>34136
А вдруг он пишет магазин для взрослых?
374 1534139
>>34136
Окей, номер игровой сессии и сервер на котором она проходила. Может быть
gameId serverId
1 2
2 2
5 2
1 1
1 3

Мне лишь нужно, чтобы 2 юзера не сделали такую хуйню (на самом деле их сколько угодно может быть, дубликаты вообще не нужны)
gameId serverId
1 2
1 2
375 1534142
>>34139
Create unique nonclustered index IX_t_game_server on t_game_server (game_id, server_id)
Вот и все
376 1534143
>>34142
Эм, а при чем тут индекс?

мимокрок
377 1534144
>>34143
Не уверен, что констейнт можно ра 2 поля создать, пишу с айпада, проверять негде. А индекс точно можно.
378 1534145
>>34139
Композитный ключ же.
Ну будет индекс, а чо это даст?
379 1534146
>>34144
>>34143
Бля промазал, нутыпонял.
380 1534148
>>34146

>уникальный


Он даст тебе гарантию, что в твоей табличке не будет 2 строк с одинаковыми server_id и game_id

В твоем случае будет так:
Первый юзер заинсертит пару (1,1)
Второй юзер попытается заинсертить пару (1,1), и субд его пошлет, выдав ошибку (такая пара уже есть в табличке, хуй тебе)
381 1534149
>>34148
Я так понимаю, это >>34142 надо при создании таблицы указывать? И сработает ли такое в mysql? Пока проверить не могу, сейчас уйду. Завтра посмотрю про это подробней. Сразу спрошу, с таким ключом использование первичного бессмысленно? И еще: такие ключи сильно ударят по размеру бд?
382 1534150
>>34148
Хм, не знал что индексы и так работают, думал все это история для ускорения запросов. Я не тот анон с хуями, но за инфу спасибо.
383 1534151
>>34149
Ты можешь сделать primary key по этим 2 колонкам, но это не рекомендуется, потомучто ссылаться на такую таблицу будет заебно.

Так что первичный ключ лучше юзать на автоинкрементную колонку.
В mysql сработает.
Сильно ли ударит по размеру бд?
Нет, не сильно. Но имей в виду, что индексы имеют свойство фрагментироваться, так что их периодически надо реорганизовывать или перестраивать.
384 1534161
>>34061
Почитай про это:
Dirty read
Read commited
Serializable read
385 1534163
>>34076
Ну я поэтому и написал, "в большенстве случаев".
Предполагаю, что проекту около 10 лет или более. В общем выбор не типичный.
386 1534189
>>33827

>Да и на HH почти во всех вакансиях, в которых упоминается DWH, требуют MS SQL, а тот же GreenPlum упоминается только в пяти вакансиях. Так в чём его преимущество?


>


бля, где пять то?
В ДС на hh по greenplum сейчас 65 вакансий. И вакансия greenplum уже подразумевает DWH, потому что он больше нигде не используется.

Преимущество в том, что greenplum это именно BIGDATA. А хранилища на MSSQL это мелкие дрочь хранилища мидл сайз бизнесов. Или он просто упоминается в вакансиях, потому что много баз источников на MS SQL. Или иногда пишут что нужны знания реляционных баз и перечисляют просто базы распространенные.

Если хочешь вкатываться в DWH и Hadoopы, можешь просто ходить на собеседования. Просто пишешь знаю основы DWH/Hadoop, хочу вкатиться. Знаю хорошо реляционку. В болшинстве мест спрашивают только реляционку и если она ок, то берут и на месте прокачивают. Ну если ты конечно не на синьора претендуешь.
Чем сидеть год абстрактно читать книжки, можно устроиться гораздо раньше и на месте выучить гораздо больше вместе с практикой.
387 1534398
>>34142
Не знаю, что-то я для mysql внятного и понятного не смог найти. Нашел только про составные ключи и написал

>create unique index uniq_ind on test (gameId, serverId);



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

Затем я попробовал с помощью транзакций сделать тоже самое

>INSERT INTO test (gameId, serverId)


>SELECT '${gameId}', '${serverId}'


>WHERE NOT EXISTS


> (SELECT id FROM test WHERE gameId='${gameId}' AND serverId='${serverId}')`;


Этой проблемы уже нет, но я не уверен что постоянно блокировать таблицу в моем случае правильно. Поэтому как можно решить проблему первого способа? Или же лучше транзакции оставить? Вообще, я в них могу засунуть сотни запросов, которые зависят друг от друга, что будет гарантировать целостность бд.
388 1534471
>>34398

>фиктивное увеличение ключа


типа последний инкрементальный id был 3, а следующий при инсерте будет не 4, а 5?

>затем я с помощью транзакций


Не видно, что ты управляешь в запросе изоляцией транзакий - это во-первых
Во-вторых, я вообще не понимаю, что ты собираешься делать при помощи транзакций. Вот тебе простой пример того, как у тебя все сломается:
1. Инсертишь ты такой строку в базе, блокируя табличку.
2. И тут у тебя отваливается соединение с сетью. А транзакцию ты не закоммитил.
3. Все остальные сессии, заблокированные первой, будут висеть, пока подвисшая транзакция не будет закоммичена, то есть венчо.
389 1534553
>>34471

>а следующий при инсерте будет не 4, а 5?


Да

Насчет транзакций, я не знаю что такое "изоляция транзакций". А без транзакций тоже мало что приятного. Вот у меня есть такая ситуация:
Пользователь хочет записать всю информацию для одной игровой сессии, если этой игровой сессии нет в БД, то он вставит эту строчку (gameId, serverId), а после чего начнет заполнять 5 таблиц, которые содержат в себе необходимую инфу для этой сессии. И этих запросов с заполнением может быть несколько сотен. И вот тут проблема, если транзакций нет. На какой-то момент времени пользователь проверил, что (gameId, serverId) нет, он начал выполнять 10 запросов со вставкой, потмо еще 10, потом 20, а ему нужно еще где-то 100 запросов выполнить, и тут хуяк, сеть пропадает, все нахуй падает, 100 запросов не выполнились. Теперь у нас в БД "поврежденная" игровая сессия с частью информацией. А перезаписать ее повторно не получится, ибо связка (gameId, serverId) была записана и Бд считает, что для нее вся информация записана.

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


Это же как-то должно решаться?
390 1534562
>>34553
У транзакций можно настроить время блокировки
391 1534572
>>34398
Вроде это решается через констейнт по сути то же самое что и индекс, но проверяет перед вставкой, во стальном работает так же.
392 1534573
>>34562
Т.е. лучше делать с транзакциями без того составного ключа, но с проверкой на уже записанные данные + настраивать время блокировки, чтобы не было вечно висящих транзакций?
393 1534645
>>34573
Вот тебе решение, индекс на 2 поля оставь, по нему поиск будет работать.
И используй свой запрос для вставки с «where not exists».
Все.
394 1534647
>>34645
Так я же описывал проблему, которую надо тоже решить >>34553 Тут-то как поступить?
395 1534652
>>34647
Мне нужно, чтобы данные все гарантированно записывались. Т.е. либо все, либо ничего. Чтобы в случае с всевозможными сбоями в БД не было говна.
396 1534667
>>34553
>>34652

Да, это решается транзакциями, ты прав, не обратил внимания.
Все твои запросы должны быть в одной транзакции в таком случае:
START TRANSACTION
.... куча запросов
COMMIT

Но не забудь, что в таком случае ты должен разообраться с тем, что такое Rollback и как отлавливать ошибки.
Вот тут написано
https://stackoverflow.com/questions/30973002/try-catch-in-mysql-for-transaction
397 1534700
>>34667
А rollback для чего, если при возникновении ошибки транзакция и так не выполнит commit? И все же, как тут писали:

>Вот тебе простой пример того, как у тебя все сломается:


>1. Инсертишь ты такой строку в базе, блокируя табличку.


>2. И тут у тебя отваливается соединение с сетью. А транзакцию ты не закоммитил.


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


С этим как бороться? Вот так?

>У транзакций можно настроить время блокировки



Или лучше как-то иначе? Я бегло прочитал про какие-то ACID транзакции, которые выступают промежуточными, как я понял, между пользовательскими транзакциями, что дает возможность БД отлавливать зависшие транзакции и самой их разруливать как-то. Но это жрет дохуя ресурсов сервера, места на носителе информации и оперативной памяти. Короче, у меня есть чувство, что я лезу куда-то не туда и сам создаю себе проблемы.
398 1534721
>>34700
rollback и нужен для того, чтобы завершить транзакцию и все следующие, заблокированные ей, могли выполняться.

Бля, просто прочитай про транзакции.
399 1534727
>>34721
Я читал и там было написано, что rollback нужен всего навсего для отката изменений. Поэтому я не очень понимаю, как он связан с зависшей транзакцией после сбоя работы бд.
400 1534765
>>34189

>бля, где пять то?


В дс2
Зато если искать по запросу DWH, то почти в каждой вакансии пишут о разработки хранилищ на MS SQL
401 1534781
>>34765
Да такой же срач: грин пульм или мс скл, блжад, да похуй, вообще.

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

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

>В дс2


а ну тут ты попал в просак. На хоронища смысл идти только в большие конторы, там может быть 300к/сек.
А все большие конторы базируются в МСК, я имею ввиду энтерпрайз. В Питере есть разве что газпром-нефть, газпром(?), а дальше хз.
Тебя могут взять в сбер в Питере, но само хранилище в мск и ты будешь как бэ на вторых ролях всегда.

>Зато если искать по запросу DWH, то почти в каждой вакансии пишут о разработки хранилищ на MS SQL


это дрочь конторы, в которых мало денег
403 1535090
>>34842
лол, ты там ему уже карьеру построил, сразу на ведущего разработчика с 300к\наносек, все сидят и ждут, только его не хватает.
404 1535145
ClickHouse норм или гавно собачье?
tom-kruz-mem-smeetsya.jpg39 Кб, 500x333
405 1535150
>>35145

>разрабатываемая компанией Яндекс


А сам то как думаешь?
406 1535194
>>35145
норм, но надо обычно знать еще кучу попенсорс говна, которое вокруг
uXvod3Sv0kU.jpg73 Кб, 401x604
407 1535247
Анука быстро и решительно посоветуйте хорошую книгу по SQL для вкатывания.
408 1535338
>>35090
Да, ждут, толковых спецов в этом направлении не так много, а тех кто готов еще и все трудности кровавого энтерпрайза героически преодолевать, так и подавно.
409 1535494
>>35247
Ну, я читаю Алан_Бьюли-Изучаем_SQL-Символ-Плюс(2007).pdf Вроде, норм. Еще Бейли Л. - Изучаем SQL (Бестселлеры O'Reilly) - 2012.pdf неплохая. Если совсем даун, то лучше с нее начать, имхо. Там даже картиночки есть.
410 1535499
>>35494

>то лучше с нее начать


Наоборот, короче
411 1535500
>>35499
Блять... Короче, все правильно я тут написал >>35494
Надо идти спать...
изображение.png516 Кб, 552x650
412 1535504
>>35494
Ебать там страх во второй книге. Страх и ненависть в SQL
А первую дыбану, спс.
413 1536090
>>35504
Помню другую книгу из этой серии не стал брать только из за того что там какой то урод был изображён.
414 1536129
Стек LAMP все еще востребованг?
415 1536167
>>36129

Да, но апач почти нет.
416 1536178
>>36167
Нжинкс вместо него? Он сложнее в освоении?
417 1536184
>>36178

Да, он. Я бы не сказал, что сложнее.
418 1536335
можно ли ограничить колво записей для айди, который лежит в wherein?
ну допустим

select * from foo where id in bar, bar2

допустим на каждый из них дает 10, а нужно три (какой нить дистинкт с лимитом мб?)
419 1536344
>>36335
Какая СУБД?
420 1536567
>>36335
При помощи count?
421 1536575
>>36344
mariadb
422 1536690
Аноны, задача такова - запросом дописать в определенном количестве текстовых ячеек, в которых текст разной длины, в конце строки дополнительную информацию.
Подскажите пожалуйста как это реализовать?
Т.е. есть "столбец" с тектстовыми ячейками. В них нужно дописать доп данные.
423 1536696
>>36690
Не совсем понял что ты хочешь, но наверное RIGHT
.jpg39 Кб, 802x528
424 1537049
Какой ответ правильный и почему?
425 1537113
>>37049
Что такое one off by error, я не понял.
Но логично, что клиент не знает, когда перестать опрашивать, так что придется спрашивать до тех пор, пока запрос не вернет кол-во строк меньше, чем указано в LIMIT. Ну и, как я понимаю, если в таблице число строк кратно указанному в LIMIT (1000), например, 2 тыщи, то тебе придется 3 раза выполнить запрос вместо 2, чтоб понять, что больше ничего нет.
426 1537126
>>33827

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


>1) hadoop - yarn - spark


>2) postgres + GreenPlum


>После этого можно идти стучаться на галеры или нужно что то ещё?


Это как бы два разных профиля. Учи либо первое, либо второе. Я с командой работаю на хадупе, так про гринплюм только слышал. Коллеги работают чаще с ораклом.
427 1537134
>>37113

>Что такое one off by error, я не понял.


https://en.wikipedia.org/wiki/Off-by-one_error
Тут я полагаю намекается, что оффсет может быть некорректен.

> Но логично, что клиент не знает


Я отбросил этот вариант, потому что с моей точки зрения клиент знает, когда прекратить, как раз благодаря описанному тобой способу.
428 1537634
>>37134
Пошёл нахуй, пидарас
429 1537752
>>37126

>Это как бы два разных профиля. Учи либо первое, либо второе. Я с командой работаю на хадупе, так про гринплюм только слышал. Коллеги работают чаще с ораклом.


Блэт, ну я так понял Hadoop нужен что бы просто кучу данных собрать, а GreenPlum и прочие DWH нужны, что бы данные было проще анализировать. И для того, что бы перетащить данные из Hadoop или реляционки в DWH строится ETL. По крайне мере в вакансиях на Дата Инженера требует знания как Hadoop, так и OLAP с DWH. SQL тоже. Хуй знает, чем там в реальности нужно будет заниматься.

Кстати говоря, обязательно ли для освоения Hadoop арендовать сервак с огромным HDD(SDD)? А то брать больше 30Г как то жаба душит, может для обучения и их хватит?
430 1537783
431 1537831
>>37783
Нагулил что у них есть бесплатный сервак на год, ну там как раз 30ГБ, это хватит?
Ещё я слышал, что если занять места больше 30ГБ или нагрузить сервак сильнее дозволенного, то у тебя деньги начнут снимать, без спроса.
432 1537840
>>37831
Это в любом случае дешевле, чем покупать себе нахуй не нужный сервак.
433 1537844
>>37840
А вдруг я за ночь заполнится диск на несколько террабайт и придёт счёт на 1000 долларов. И что делать?
434 1537846
>>37844
Так это ведь пиндосия, а ты в пидорашке. Что они тебе сделают? Посадят? Штрафанут? Счёт в сбере залочат?
435 1537847
>>37049
Вот тут
https://use-the-index-luke.com/no-offset
читал что offset это медленна и вообще так нельзя. У меня просто в голове не укладывается по-моему это какой то полный пиздец. Но такое впечатление у меня от всего свитеромирка так что.. просто оставлю свои пять копеек, может это кому то будет полезным.
436 1537936
>>37752

>Hadoop нужен что бы просто кучу данных собрать


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

>Кстати говоря, обязательно ли для освоения Hadoop арендовать сервак с огромным HDD(SDD)? А то брать больше 30Г как то жаба душит, может для обучения и их хватит?


Нет. Поставь себе виртуальный сервак, погугли дистрибутив cloudera VM quickstart
Тебе не нужно дома для обучения 3 петабайта. Наполни 3-5 таблиц 10 стоками и напиши на скале проект, который матчит данные из них в новую таблицу, сбилди джарник и залей в VM, запусти, посмотри в ярне как работает. На этом можешь закончить. Я на деве тем же самым занимаюсь. Хорошо, если в таблице 50 строк, а не 0, как бывает. А на проде там терабайты лежат, вполне себе.
На собезе расскажешь, уже плюсом будет.
437 1537943
>>33827
Не верю, что на галерах нужен хадуп и прочая аналитика, это же продуктовая тема. На галерах просто реляционки или простенькие in-memory kv типо редиса или мемкеша для кеширования.
438 1540032
>>33827
Если хочешь опыта набраться и вкусить всю прелесть хранилищ, сюда попробуй влезть хотя-бы стажором, чтоб на жилье хватало и жрачку, пол года-год пересидеть.
Сам туда пойду скорее всего
https://hh.ru/vacancy/32678281
439 1540034
>>40032
В продолжение. Хранилище только начиначет строится. А это самый смак, на все грабли наступить, самое оно. Плюс там куча интеграций и ораклы и хадупы. Я думаю работы там года на 3 не меньше
440 1540035
>>37752
Hadoop это распределенный таскер по сути.
Огромный storage для изучения - абсолютно не нужен.
441 1540384
>>40032
Сбер плохое место для начала карьеры.
442 1540462
>>40384
почему?
443 1540497
>>40384
От проекта очень много зависит и начальства.
444 1540499
>>40384
Но да, там довольно жостко может быть. Кровавый энтерпрайз во всей красе
445 1540614
>>40032
Блэт, нихочу в москву ехать, я в дс2 уже нормально устроился и щас всё сначала начинать. Охуенно, чо. Да и из текущей галеры я щас свалить не могу.
446 1540751
>>40614
Ну смотри сам, я для себя вообще режим кочевника выработал - год два на проект, и на съебы. По моим наблюдениям, вся веселуха обычно на старте, потом когда решение стабилизируется начинается болото: скрамы, митинги бесконечные, однотипные задачи.
447 1540915
>>40462
>>40497
>>40499
Потому что там есть ограничения на карьерный рост и на рост зп. Вас не могут апнуть больше, чем на какой-то процент от вашей зп в год.
Туда надо идти на ведущие позиции.
448 1540999
>>40384
Сбер это пиздец
449 1541015
>>40999
А что там не так?
450 1541017
>>41015
да это ваще пздц
Можно устроиться и потом месяц выбивать себе рабочее место

Я слышал историю как чувак так и не успел получить себе комп до увольнения
451 1541019
>>41017

>Можно устроиться и потом месяц выбивать себе рабочее место


Ну, зп же платят.
452 1541085
>>41019
Охуенный ты опыт там приобретешь

Другая история:
- работали со сбертехом
- предложили написать им скрипт инсталляции
- они отказались
- написали им инструкцию, подробную, для дебилов
- выполнили с ошибкой(ами) на каждом шаге
453 1541588
Аноны, у меня проблема:
Использую DB Browser for SQLite. Удаляю таблицу с данными. Размер файла не уменьшается. При открытии фалйа через ноутпад вижу удаленную таблицу с удаленными данными. Приходится конвертировать импортируя .db в .sql и экспортируя обратно, так как при таком действии можно выбирать нужные таблицы.
Что я делаю не так? Или всё так и по-другому никак? Что я не понимаю в работе sql и почему данные с таблицей остаются в файле после удаления?
454 1541598
>>41588
https://www.sqlite.org/lang_vacuum.html

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

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


Это типично во всех движках.
Дешевле пометить страницы как удаленные и потом поверх них писать, чем .. что ты предлагаешь? нулями забивать?
455 1541628
>>41598
У меня база используется в программе для смартфона, размер программы 100 мегабайт, вместо 20, это минус, например.
В любом случае большое спасибо:

>Если SQLite не работает в режиме «auto_vacuum = FULL», когда большой объем данных удаляется из файла базы данных, он оставляет пустое пространство или «свободные» страницы базы данных. Это означает, что файл базы данных может быть больше, чем строго необходимо. Запуск VACUUM для восстановления базы данных освобождает это пространство и уменьшает размер файла базы данных.


Поставил фулл.
456 1541729
>>41628
Ты поосторожнее с автовакуумами
Лучше периодически проверять и делать принудительно, чем на автомате
Автовакуумы обычно приводят к тому, что все данные валяются хрен знает как : кусочек того, хвост другого, тут еще какая-то х-ня

Впрочем, если база мелкая - то пофигу
457 1542501

>>15028868


Приведи лучше ты пример хайлоад проекта с реляционной бд в качестве рантайм хранилища
458 1542504
459 1542514
>>02886
Я тоже старый пердун
Если ты думаешь, что NoSQL - это какой-то писк моды, то ты от жизни отстал

Можешь свой пафос уносить
460 1542537
>>16588
Если знаешь английский то cmu лучший курс по базам данных.
нагуглить эти три три буквы и найдёшь курс Andy Pavlo
461 1542541
>>40915
СберТех был кадровой помойкой какое то время назад
С новым директором они взяли курс на выезд из помойки но люди к сожалению остались. Туда можно сходить и начать карьеру, но на собеседованиях в нормальных конторах считает юных сбертеховцев оверпрайснутыми даунами. Потому что Джуно куа 70к не стоит после года работы. Даже в 2019. Даже девелопер столько не стоит. (В среднем)
Поэтому если не прилип жопой к стулу и обучаешься (это там вроде можно делать) то шанс вырваться есть. Главное не охуевать с самооценкой потом.
462 1542690
>>34842
nexign
WP4.4.2-ERD.png52 Кб, 793x1118
463 1543848
Вот есть такая база. В wp_posts хранятся и посты, и их ревизии, и часть инфы о загруженных файлах, и какая-то история изменений темы оформления сайта что ли, и ещё хрен знает, что. В wp_postmeta хранится инфа, связанная с постами, другая часть инфы о загруженных файлах и вообще что угодно.
Опуская проблему полного отсутствия FK, есть два вопроса.
1. На сколько строк нужно загадить wp_posts, чтобы поиск по post_name (с индексом) стал заметно тормозить?
2. На сколько строк нужно загадить wp_postmeta, чтобы выбор по post_id стал заметно тормозить?
MariaDB 10.X. Допустим, всё лежит на SSD. Проц - 2x2GHz.
464 1543956
>>40915

>Потому что там есть ограничения на карьерный рост и на рост зп.


до 12 грейда - рук направления - можно спокойно расти
выше, всякие исполнительные директора - там уже хуй

но у тебя на 12-ом уже будет под 350-к, сколько тебе в других местах хуй дадут

чего еще надо?
465 1544034
Привет всем.
Так вышло, что после полутора лет эникейства мне в экстренном почти порядке пришлось вкатываться в SQL Server (как мешком по голове).
Сегодня написал тестовое задание, будет ещё одно, мб тут совета спрошу, если не разберусь.

Что хотел спросить.
Посидев в этой говноконторе в качестве "Инженера баз данных" опционально год-два-три, смогу ли я рассчитывать на трудоустройство в другую контору, имея на руках эти пару лет опыта? (при этом не имея вышки).
И вообще насколько эта перспективная отрасль? Или придётся неизбежно вкатываться в другие языки погромирования, чтобы продвинуться дальше?
466 1544095
Есть таблица из ~900 строк, хочу делать SELECT по полю char(4). Насколько быстро оно будет работать? Стоит ли добавить индекс?
467 1544139
>>44095
Какой селект ты хочешь сделать?
Where my_column like '%kaka%'?
Тогда индекс не поможет

Where my_column like = 'kaka'?
Тогда можешь сделать. Другой вопрос, что 900 строк - что с индексом, что без индекса, будет бытро искать, потому что размер - ни о чем.
468 1544154
>>44139

> Какой селект ты хочешь сделать?


Без процентов, точное соответствие.

> Другой вопрос, что 900 строк - что с индексом, что без индекса, будет бытро искать, потому что размер - ни о чем


На каких размерах нужно чесать репу? 900000?
469 1544174
>>44154

>900000?


Зависит от дисков, на которых у тебя БД сидит, от СУБД тоже, а так же от внутренних правил.

Ну например, у тебя приложение с правилами ОТКАЗОУСТОЙЧИВОСТИ: время ответа не более 0.5 секунды.

Вот твой запрос работает нормлаьно
Завтра ты 100 000 строк заинсертил, уже 0.9 секунды отвечает - ты это мониторишь, понимаешь, что пора индекс добавить.
470 1544212
>>44034
Хрюши расписывают в вакансии что нужно от соискателя.
471 1545033
>>43956
Двачую.
Истинно так
472 1545042
Какой профит от оконных функций, если и без них можно?
473 1545402
>>45042
1. Меньше кода
2. план запроса - баз самоджойнов, если не юзаешь индексы, то получается быстрее
Ну и интересно посмотреть, как ты прорнжируешь строчки без оконной функции, например, так:
id, dt, rank
1, 20190101, 1
2, 20190101, 1
3, 20190101, 1
4, 20190108, 2
5. 20190108, 2
6, 20190111, 3
474 1545667
Сап БДач, есть одна БД.

Напомни мне дебилу почему
SELECT ...
FROM [dbo].[fct_cheque] as f
inner join dim_goods as g
on g.good_id = f.good_id
inner join [dim_stores] as s
on s.store_id = f.store_id
inner join dim_date as d
on d.did = f.date_id
inner join dbo.dim_cash_register as cr
on cr.cash_register_id = f.cash_register_id
where date_id between @date_from_int and @date_to_int
and g.group_name = @good_group_name

Вытаскивает не все данные, а вот в таком виде:
SELECT ...
FROM [dbo].[fct_cheque] as f
LEFT JOIN (SELECT DISTINCT cash_register_id FROM [dbo].[dim_cash_register]) as cr
on f.cash_register_id=cr.cash_register_id
LEFT JOIN [dbo].[dim_date] as d
ON d.did=f.date_id
LEFT JOIN (SELECT DISTINCT [good_id],[good_name],[group_id],[group_name]
FROM [dbo].[dim_goods]) as g
on f.good_id=g.good_id
LEFT JOIN [dbo].[dim_stores] as s
on s.store_id=f.store_id
where date_id between @date_from_int and @date_to_int
and g.group_name=@good_group_name

Выдаёт всё как надо.
474 1545667
Сап БДач, есть одна БД.

Напомни мне дебилу почему
SELECT ...
FROM [dbo].[fct_cheque] as f
inner join dim_goods as g
on g.good_id = f.good_id
inner join [dim_stores] as s
on s.store_id = f.store_id
inner join dim_date as d
on d.did = f.date_id
inner join dbo.dim_cash_register as cr
on cr.cash_register_id = f.cash_register_id
where date_id between @date_from_int and @date_to_int
and g.group_name = @good_group_name

Вытаскивает не все данные, а вот в таком виде:
SELECT ...
FROM [dbo].[fct_cheque] as f
LEFT JOIN (SELECT DISTINCT cash_register_id FROM [dbo].[dim_cash_register]) as cr
on f.cash_register_id=cr.cash_register_id
LEFT JOIN [dbo].[dim_date] as d
ON d.did=f.date_id
LEFT JOIN (SELECT DISTINCT [good_id],[good_name],[group_id],[group_name]
FROM [dbo].[dim_goods]) as g
on f.good_id=g.good_id
LEFT JOIN [dbo].[dim_stores] as s
on s.store_id=f.store_id
where date_id between @date_from_int and @date_to_int
and g.group_name=@good_group_name

Выдаёт всё как надо.
475 1545668
>>45667
Дурацкий блокнот++, вот корректная версия первого запроса
FROM [dbo].[fct_cheque] as f
inner join dim_goods as g
on g.good_id = f.good_id
inner join [dim_stores] as s
on s.store_id = f.store_id
inner join dim_date as d
on d.did = f.date_id
inner join dbo.dim_cash_register as cr
on cr.cash_register_id = f.cash_register_id
where date_id between @date_from_int and @date_to_int
and g.group_name = @good_group_name
476 1545781
>>45668
Потому-что в первом все джоины inner join, поэтому теряются значения с 0. Т.е. Он хочет джоинить А на Б, но А равно нулю, образно говоря продавец Коля нихуя не продал, и у него 0 в графе продажи, и иннер отбрасывает такие поля. Во втором запросе у тебя послежний джоин левый, соотвественно значения с нулями сохраняются.
477 1545828
>>45781
Проблема в том, что во втором продаётся больше (и с фактическим числом продаж сходится) и я не понимаю как.
478 1545874
>>45828
ну у тебя во втором ещё подзапросы в джоине. Вобще я конечно не эксперт но это какой-то говнокод, столько лефтджоинов подряд не делают, при том судя по подзапросу, намерено сокращается число строк, чего в первом запросе не делают, так что рискну предположить что все что это сделано чтобы с первого лефт джоина не тащить говно. Должно быть INNER-INNER-....-LEFT например. Хотя конечно может идея как раз в этом, чтоб протащить все пустые строки до последнего, но всё равно тупость какая-то.
479 1545877
>>45874
Как то так например

FROM [dbo].[fct_cheque] as f
inner join dim_goods as g
on g.good_id = f.good_id
inner join [dim_stores] as s
on s.store_id = f.store_id
inner join dim_date as d
on d.did = f.date_id
right join dbo.dim_cash_register as cr
on cr.cash_register_id = f.cash_register_id
where date_id between @date_from_int and @date_to_int
and g.group_name = @good_group_name
480 1545879
>>45877
Но опять же я не знаю из какой таблицы нужны пустые значения, так что предположу что из последней, но это похоже не так, если жоины таки левые.
481 1546040
Не понимаю что за хуйня. При попытке добавить запись в таблицу пишет

>Error: Cannot add or update a child row: a foreign key constraint fails (`solach`.`info_matches`, CONSTRAINT `info_matches_ibfk_1` FOREIGN KEY (`id_match`) REFERENCES `matches` (`id`))


Я пробовал отключать проверку внешних ключей

>SET foreign_key_checks=0


Но ошибка остается.
482 1546041
>>46040
субд mysql
Аноним 483 1546043
>>46040
>>46041
Связь один ко многим, сходи в гугл, иначе тебе не стать программистом
484 1546047
>>46043

>Связь один ко многим


Вообще не понял к чему ты это написал. Да, у меня связь один ко многим. Вторая таблица содержит поле с внешним ключом, которое может повторяться, а в первой таблице это поле уникальное.
485 1546059
>>46040
Наверное, еще надо уточнить, что все запросы внутри транзакции выполняются. Но там же вроде есть буфер какой-то, который временно считает, что все запросы как-бы выполнены. Т.е. если сначала добавить запись в первую таблицу с первичным ключом внутри транзакции, а потом сослаться на нее, добавив во вторую таблицу по внешнему ключу ДО ВЫПОЛНЕНИЯ коммита, то во время добавления записи во вторую таблицу запись в первой будет в этом временном буфере, если не было роллбэка. Так ведь? Но у меня почему-то не добавляет запись, даже с выключенной проверкой ключей.
Аноним 486 1546069
>>46047
Так удаляй строки с первичным ключом сначала из дочерей таблицы, а потом из главной.
С такими вопросами тебе нужно бросать своё хобби
487 1546073
>>46069
Нахуя мне их удалять? Мне их вставить надо. Вставить в 1 таблицу, вставить во 2 таблицу, ссылаясь на вставленную запись в 1 таблицу, которая еще не была закоммичена, ибо ценность эти данные представляют только вместе. Для того и была использована транзакция. Но при добавлении во 2 таблицу, мне пишет, что такой записи в 1 таблице нет.
488 1546081
Пиздец, какое-то шизло тут сидит, несет хуйню с умным видом, не разобравшись нихуя в вопросе и еще пиздит что-то про то, кому стать программистом, а кому нет... Ебало его представили?
Аноним 489 1546102
>>46073
>>46081
Блять, какой же ты дебил, пиздец.
На самом деле похуй, удаление там или вставка. Ошибка гуглится по первой ссылке. Каким же дебилом нужно быть, чтобы не понимать настолько очевидных вещей?
97bf35a9decf94358adca23c25ef9993.jpg21 Кб, 238x300
490 1546108
>>46102
Нет, чел, тупой - ты. Потому что ты меня не слышишь нихуя. В транзакции не работает
START TRANSACTION;
INSERT INTO t1 VALUES id='1', name='name';
INSERT INTO t2 VALUES id_t1='1', something='something';
COMMIT;
где id - первичный, id_t1 - внешний
А ошибка эта не говорит нихуя, кроме того, что id=1 в t1 нету. А теперь иди на хуй, ты меня заебал уже душить своей тупостью и выебонами, чмо. Кстати, я тут нагуглил твое ебало (пик)
изображение.png272 Кб, 648x503
Аноним 491 1546119

>START TRANSACTION;


>INSERT INTO t1 VALUES id='1', name='name';


>INSERT INTO t2 VALUES id_t1='1', something='something';


>COMMIT;

492 1546122
Ну и хули ты там скукожился, чмондель от мира ит? Если ты так отреагировал на синтаксис инсерта, то я специально его сделал коротким и "не рабочим".
Аноним 493 1546124
>>46122
Тебе нужно почитать про целостность и смысл транзакций.
Правда лучше бросить это занятие прямо сейчас
494 1546127
Нет, чел, мне нужно оформить записи в две таблицы, а со своей целостностью ты идешь на хуй, ибо я читал это все, и это не имеет никакого отношения к моей проблеме.
Аноним 495 1546130
>>46127
Поставь коммит сначала после первого инсёрта, потом после второго инсёрта.
496 1546132
>>46127
Хуёво читал, раз весь тред так обосрался.
497 1546135
>>46130
И зачем он там? Если второй инсерт не выполнится, то первый останется куском не нужно говна в бд. Или надо еще состояние запоминать перед первым коммитом и откатывать к нему?
498 1546138
>>46135
И вообще, я выше писал где-то про временный буфер. Я где-то читал про него, потому и думал, что никакие промежуточные коммиты в контексте одной транзакции не нужны.
499 1546141
>>46135
>>46138
Еблан, если ты не понимаешь, что значит тразакция, АСИД и целостность то иди нахуй в гугл.
Как тебе решить твою проблему, тебе написали.
500 1546158
>>46141
Да иди ты на хуй, уебище. Не умеешь находить общий язык с людьми - сиди и дрочи. На хуй ты вообще пишешь что-то? Какова тут твоя цель? Просто скройся.

Ору с этого дауна, который решил посеменить, разлогинившись. Пидарас пасскодовский. Хррртьфу на еблет твой...
1383147683962238357.png880 Кб, 1095x851
501 1546178
>>46158

>который решил посеменить, разлогинившись. Пидарас пасскодовский.


Ньюфаг на моём дваче?
502 1546340
Мне стало интересно, почему не работает, бля и правда ответ тому Антону гуглиться на первой странице. Ну ты и валенок блядь, ещё на анонов пиздишь
503 1546345
Давай, покажи мне этот ответ. Только ебало приготовь сначала на свежую порцию мочи.
504 1546348
>>46345
Ты хочешь потеретбся своим ебалом об ебало этого анона?
505 1546352
>>46348
Я хочу тебе обоссать твое ебальце, глупыш
506 1546358
попрошу ногами не пиздить, если спрашиваю хуйню. В общем есть ли смысл создавать кучу отдельных таблиц для одного типа данных?

Вот пример: сообщения ВК на мобиле, для каждого чатика создается отдельная таблица, хранящая сообщения из чата.. или правильней все сообщения пихнуть в одну таблицу с внешним внешним ключом?
507 1546381
Я так понимаю, можно уже приступать к поливу овощей итт?
508 1546409
>>46381
Пока ты только себе на лицо полил, дурачок.
509 1546413
>>46409
Эй, хуета, я вроде русским языком сказал: покажи мне этот ответ, который лежит на первой странице и решает мою проблему. Если ты как сучка поджал хвост, опасаясь быть обоссаным мною итт, то просто пиздак прихлопни и сиди тише воды, ниже травы. Справишься хоть с чем-то из этого? Или продолжишь пиздеть без повода?
511 1546416
>>46413
Ты понимаешь, что тебя обоссал не анон? Ты сам себя обоссал.
512 1546418
>>46415
Поздравляю. Мощная струя едреной мочи летит прямо тебе в ебало. Чел, унеси свою хуйню, которая вообще не имеет никакого отношения к проблеме или иди перечитывай мой самый первый пост, где я был еще добрым. Мне похуй как ты это делать будешь, я хз, проси там модеров что ли... Но только чтобы я не видел этой хуйни тут.
513 1546421
>>46418
Ты или удаляешь констрейнт или делаешь промежуточный коммит.
Неужели ты правда не способен этого понять?
514 1546422
>>46416
Я понимаю, что вижу какого таракана, который на уровне земли что то пищит, переводит стрелки, а я его даже не слышу. Потому что мои капли мочи громче бьются о пол, пока мимокрок выше наслаждается своей дозой.
515 1546425
>>46422
Как ты еще пластмассу или пенопласт будучи таким тупым есть не начал?
516 1546427
>>46421
Вот так да... Ахуеть? Правда? Об этом написано где-то было в том "ответе"? Интересно-интересно... А вот вопрос такой, а почему с констрейнтом нельзя-то? Получается, я то был прав насчет видимости результатов запросов в контексте транзакции? Но вот только что-то никто не дополнил мою мысль, да? Еее для вас как буд-то и не было. А теперь, выясняется, что виной-то всему был констрейнт)))))) Хех))) Но да ладно, опять же... Коммит... Знаешь? А я его делал... Вот только в чистом его виде нельзя делать, надо создавать savepoint... Кстати, не подскажешь как его создать в mysql2 модуле для node js? Ты поищи-поищи, наверняка, на первой странице будет ответ. Линканешь мне потом его сюда. Давай...
517 1546431
>>45879
Там по идее не нужны пустые значения (идёт вывод данных о продажах).
А ещё меня смущают DISTINCT'ы, посмотрел в dim_cash_register - там 23 записи, но касс всего 22 (кассы № 10 нет, а касса № 7 дублируется). Это что-то может объяснить?
В dim_goods с учётом фильтрации WHERE DISTINCT не убирает ничего.

Извиняюсь что я тупой нубас.
518 1546438
И да, кстати, вот такой вопрос к уебищам, которые что-то пиздели тут. Что думаете насчет этой хуйни?
https://stackoverflow.com/questions/12245599/inserting-mysql-foreign-keys-and-primary-keys-in-a-transaction
Что-то не вяжется да? Чел просто интересуется "сработает ли?", на что получает ответ "да". А у меня что-то вот не выходит ни хуя... Я, наверное, тупой, просто не увидел ответ на первой странице...
519 1546458
>>46431

>DISTINCT'ы, посмотрел в dim_cash_register - там 23 записи, но касс всего 22 (кассы № 10 нет, а касса № 7 дублируется).


Кажется начал понимать.
520 1546460
>>46427

> Об этом написано где-то было в том "ответе"?


Да
You're getting this error because you're trying to add/update a row to table2 that does not have a valid value for the UserID field based on the values currently stored in table1. If you post some more code I can help you diagnose the specific cause.

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


Нет

>Но вот только что-то никто не дополнил мою мысль, да? Еее для вас как буд-то и не было.


Такое ощущение, что тебе лет 12, тебе никто ничего не должен.

>А теперь, выясняется, что виной-то всему был констрейнт)))))) Хех))) Но да ладно, опять же... Коммит... Знаешь? А я его делал...


Больше точека, петушок. Тебе об этом сказали почти сразу.

>для node js


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

>mysql


Ты даже его не в состоянии осилить юзай MongoBD.

>надо создавать savepoint


Нет, тебе нужно сделать два коммита подряд.
521 1546461
>>46438
Ну, читай внимательней.
522 1546484
>>46460
Лень отвечать на одно и тоже в десятый раз. Баран он и есть баран. На последнее только отвечу

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


Чтобы второй кусок в случае ошибки не записался, а первый остался болтаться в бд закоммиченный? Ебать, тут гении сидят...
523 1546486
>>46460

>нормальные инструменты


php? Подставляй рот к моему волосатому анусу, сейчас еду космонавтов будешь дегустировать.
524 1546490
>>46458
Предположим у тебя соеденение

1------2-----3

В первой таблице например 21 запись, во второй 15, а в третьей опять 21, и поэтому без одностороннего жоина что-то проебывается. Посмотри таблицы, и поставь среднюю в конец с правым жоином.
525 1546548
>>46490
Поковырялся. По сути верный результат даёт и такой запрос:
SELECT ...
FROM dbo.fct_cheque AS f
INNER JOIN (SELECT DISTINCT * FROM dbo.dim_goods) AS g
ON G.good_id=f.good_id
WHERE ...
526 1546626
>>46548
Ну тебе ж ещё третья таблица нужнп
527 1547094
С чем может быть связанна медленная проверка? индексы есть

есть запрос вида:
SELECT * FROM `somes` WHERE A=? AND B=?
A и B оба индексы, так вот, если я выполняю без AND B получаю примерно 0.002 секунды выполнения, если с B получаю 0.04 и это пиздец, с чем это может быть связанно?

судб: mariadb
528 1547095
>>47094
сабселект не помогает, выдает такой же пиздец
sage 529 1547099
>>47095
>>47094
ну я кстати и дал ответ на свой же вопрос
/
530 1547100
>>47099
Какой ответ, поясни для самых умных.
531 1547117
>>47100
он сначало смотрит на записи по индексу А, потом для каждой из них проводит запрос, ищет совпадение с индексом B, таким образом из обычного if id == ? && govno == true мы получаем if id==? && govnos.contains(id)
532 1547119
>>47117
это я сам придумал сам поверил, иначе как обьяснить тот пиздец я не ебу
там 3миллиона записей в таблице
533 1547132
>>47119
А и б фиксированные? Или для каждой строки свои?
534 1547136
>>47132
А - parent, соотвественно например у тысячи ячеек может быть одно и тоже значение в А

B - deleted, юзал число, так как бул не умеет в индексы
535 1547219
Так, уебища, которые вчера тут выебывались и гнали на меня. Что теперь скажете? Тебя тоже касается, уебок >>46460 конкретно это

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


>Нет



Вот, аналогичная проблема. Абсолютно аналогичная. Только я вообще хз нахуя он это высрал, наверняка он работает из под своего шелла субд, а не как я через api пакета node js.
я то был прав насчет видимости результатов запросов в контексте транзакции?
https://stackoverflow.com/questions/20876291/sql-foreign-key-before-commit

Я, кстати и сам проверил это из под workbencha. Там все работает, а у меня после вставки в родительскую таблицу и вставки в дочернюю по внешнему ключу ошибка:

>Cannot add or update a child row: a foreign key constraint fails ('solach'.'info_matches', CONSTRAINT 'info_matches_ibfk_1' FOREIGN KEY ('id_match') REFERENCES 'matches' ('id'))



И идите на хуй со своими промежуточными коммитами, дегенераты ебучие. Жду ответов адекватных специалистов итт, а не ебаного свитерного скама. Но тут таких скорее всего нету...
536 1547253
MS SQL
Есть одна БД с режимом совместимости = 100 (поскольку я не очень умный и спросить сейчас не у кого, то будем считать что лучше ему таким и оставаться, либо, что это значение будет изменено на неизвестное другое, которому так же лучше не менять).
У этой БД есть хранимая процедура, в теле которой очень хочется использовать STRING_SPLIT (который требует режим совместимости 130).

Собственно идея ночью чуть-чуть изменить гравитационное поле Земли в теле процедуры поменять режим совместимости на нужный, сделать STRING_SPLIT, а затем всё вернуть обратно.
Насколько это ебануто? Если не очень - то следом два вопроса
- Допускается что имя БД, может быть изменено, следовательно я использую вывод DB_NAME(), записанный в переменную @currentdb. Но ALTER DATABASE @currentdb ... работать не будет. Как быть?
- Касаемо ALTER DATABASE database_name SET COMPATIBILITY_LEVEL = оригинальное_значение
Можно ли каким-нибудь вместо оригинального значения использовать переменную?

Или стоит прикинуться веником и тупо менять используя актуальные значения имени БД и её уровня? Или вообще идея не ок и стоит думать дальше?
537 1547256
>>47219

>Жду ответов адекватных специалистов итт, а не ебаного свитерного скама


Ну то есть ты только что.
538 1547296
>>47256
Чел, я уже понял что ты только можешь срать под себя как старый дет итт, так что схлопни ебальничек, будь добр и залезь обратно под свой законный шконарь...
sage 539 1547308
Пиздец дохуя постов, а ни одной нормальной книги так и не посоветовали, специалисты хуевы
540 1547315
>>47308
Но я же кидал нормальные видеоуроки...
541 1547337
>>47253

>уровень совместимости


Туплю чего-то.

Бамп вопросу в тонущем треде
542 1547799
>>47253
>>47337

Советую погуглить, что такое CLR в MS SQL, и накодить ту же самую функцию на шарпе, внедрив ее в составе сборки в SQL Server.

Самое полезное здесь то, что помимо пресловутой split_string ты можешь сделать на шарпе абсолютно все, чего SQL сервер не умеет из коробки. Например, нормальный парсер регулярок, исполнитель веб-вызовов и т.п.
543 1547804
>>47253
Ну и для всяких alter database [...] с хз, каким названием до момента исполнения ты можешь юзать dynamic sql:

declare @sql nvarchar(4000) = 'ALTER DATABASE ' + @db_name + ' set ...';
exec (@sql);
544 1547857
>>47799
>>47804
Спасибо, добрый человек.
545 1547866
>>47799

>внедрив ее в составе сборки в SQL Server


Ненужная перверсия
546 1548013
А вообще какой ЯП имеет смысл брать ха компанию к SQL? Какой-нибудь C#? R?
547 1548057
>>47866
Ну раз ненужная, продоолжай ебаться с совместимостями, динамик скл, и ковырять строки через

>charindex(charindex(charindex(charindex(charindex


Это же в 100 раз удобнее
548 1548069
>>48013
Языки NoSQL бд.
549 1548076
Насколько падает перформанс, если у меня запрос вида select from select?

Сначала выбираю ВСЮ таблицу (уже хуево звучит), а затем из нее некоторые записи.

Дело в том, что мне надо подсчитать ранк записи (номер по порядку) у каждого юзера среди ВСЕХ его записей, но выбирать надо лишь некоторые конкретные записи, а не все.
550 1548103
>>48076
JOIN производительней.
sql инъекция 551 1548121
так, порни, выручайте, нужно получить данные с базы одной
на вход подаётся параметр zadachi, в котором указываются номера задач (например: "'4-1-1-1', '4-1-1-2'")
насколько я понял это значение тупо подставляется в where in()
никакой проверки вроде нет, но конструкции вида '4-1-1-1') OR 1=1 -- не срабатывают
552 1548124
>>48076
твой
select
from ( select ..., rank() over() as RNK from ...) t
where t.RNK = 1
не выбирает в подзаопросе всю таблицу, это нормальная практика в аналитических запросах, если тебе всех зеров обсчитать нужно.

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

Таким обзразом в результате можно селектить уже без подзапроса.
553 1548125
>>48121
что такое 4-1-1-1? текстовый код, по которому можно однозначно идентифицировать конкретную задачку?
554 1548130
>>48125
да, помимо этого можно сразу пачку задач получить просто указав число (например 4)
555 1548150
>>48130
А количество уровней воженности точно определено или нет?

Например, 4-1-1-1 - это конечный уровень или может быть
4-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1?
556 1548156
>>48121
Помимо прочего, какая у тебя СУБД, параметр прилетает куда? У тебя приложение или только хранимая процедура и все?

Блжад, напиши полное описание задачи, ни хуя непнятно, ненавижу, когда 100 вопросов прихоится задавать, а потом автор еще и сливается, поняв, что волшебная пилюла в виде "вот сделай так" не существует и придется все подробно рассказать, чтобы получить решение.
557 1548160
>>48150
конечный, номера задач хранятся в виде строк скдя по всему
558 1548161
>>48156
база mysql,версию не знаю, запущена под php 7.1.21
http get/post параметр
сайт не мой
559 1548217
>>48161
Допустим тебе такое прилетает:
["4", "5-1-1-1"]
параметр надо распарсить в приложении, поняв, какой из кодов конечный, а какой - нет. То есть 5-1-1-1 - кконечный, судя по иерархии.

Далее генерируем запрос, добавляя через OR коды задачек и вставляя их, используя разные условия сравнения в зависимости от того, конечный это уровень или нет. Если неконечный, то like 'КОД%', если конечный, то ='КОД':

select
*
from task t
where t.code like '4%'
or t.code = '5-1-1-1'
560 1548229
>>48217
ты не понял, мне нужно инъекцию произвести, кавычки вместе с запросом нужно отсылать, поэтому тип данных может быть любой
я пробовал выражения наподобие 2+2 ставить и всё работало, вот только как свой запрос вставить не пойму
561 1548280
>>48121
Как задачи хранятся в базе?
562 1548288
>>48280
предположительно есть столбец с номером (например '4-1-1-1'),
с заданием, решением (шифровано в AES) и ключом для дешифровки
ключи мне выкачать удалось (не инъекцией), осталось сами решения получить
563 1548320
так, результат при использовании
4) # не измерился, а значит там какая-то проверка на комментарии была
564 1548461
>>47219
О, ебанная посредственность, ты все ещё тут? Два дня просидел ответа так и не нашел?

Ладно, для аутиста который не может в обучение, поясню:

Представь себе, что в рамках одного коммита ты вставляешь лям строк в родительскую таблицу и два ляма строк в дочернюю таблицу. (допустим, вставка у тебя занимает 3 минуты). Проходит 30 секунд, и аутист типо тебя твой брат, например вставляет в родительскую таблицу строчку, которая есть у тебя в ещё не закрытой транзакции, причем это первый инсерт в твоей транзакции. На какое значение должна ссылаться дочерняя таблица? На то, которое есть в ещё не закрытой транзакции или на уже закоммиченное значение, додик?
565 1548490
>>47219
Да пошёл ты на хуй. Научись сначала разговаривать нормально, обезьяна, заебал уже всех своими свитерами. Желаю тебе ни хуя ни в чем не разобраться, пока не исправишься и не извинишься перед анонами.
Не отвечайте этому дауну, он все треды уже своим говном засрал. Мало того, что тупой и какие-то элементарные вещи не понимает, так еще и ЧСВ себе отрастил, как будто ноые парадигмы хранения данных каждый день внедряет.
566 1548517
С sql знаком немного, надеюсь поясните нубасы один момент. Вот есть у меня таблица произведений и у этих произведений есть какое-то разное произвольное кол-во глав и в каждой главе какой-то текст. Так вот как лучше такое хранение организовать? Я придумал только или создавать для каждого произведения отдельную таблицу с номером главы и значением, или сделать одну большую таблицу с внешним ключем id_произведения.
Ну и посоветуйте какой-то ресурс или книгу, где рассказываются разные паттерны проектирования бд.
567 1548518
>>48490
Ну камон, блаженным помогать нужно.
Это жс петух обыкновенный, его пока еблом в говно не тыкнеш, он срать продолжит.
568 1548529
>>48517
Нубасу* всмысле, а то кажется будто я тут уже на всех в треде распетушился, лол
569 1548536
>>48517
Почитай про нормальные формы.
image.png76 Кб, 1264x781
570 1548762
Анон, вот такой вопрос: а нахуя при создании бд в монго указывать сразу название колекции? Что это за колекция и нахуя она нужна? Если не указать, создать не дает.
571 1549018
>>48762
Чё-т проиграл с того, что монга не дает создать говно.
Коллекция - мб что-то типа дефолтной схемы?
572 1549344
>>49018
Не ебу, потому и спрашиваю. Вполне может быть, но если так, то нахуя оно надо?
573 1549413
Использую sqlite, запускаю в бесконечном цикле в роутине некоторую проверку, то есть беру из бд ссылки и пингую их, обновляя статус доступен/недоступен. На моменте старта этой роутины у меня крашится программа. Это из-за блокировки в самой sqlite или я что-то не правильно накодил?
уточька136 Кб, 500x500
574 1549418
>>49413
О, блять! Это работает.
575 1549940
>>49418
в Sqlite есть event notifications:
https://www.sqlite.org/c3ref/update_hook.html

Так можно не грузить свою базу селектами, а просто подписаться на события, мне кажется, такой способ в 100 раз практичнее
Тред утонул или удален.
Это копия, сохраненная 31 января 2020 года.

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

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