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


Ответить в тред Ответить в тред

Check this out!
<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
453 38 150

Оптимизированный баз данных тред /sql/ Аноним 23/10/19 Срд 13:06:42 15028701
Снимок.PNG (17Кб, 374x474)
374x474
А вот и новый оптимизированный баз данных тред,
в котором мы
-Выслушиваем, почему в шапке по-прежнему отсутствует инфа для вкативания
-Разбираемся, почему PostgreSQL - не Oracle
-Пытаемся понять, зачем нужен Тырпрайс, если есть бесплатный опенсурс
-Обсуждаем, какие новые тенденции хранения данных появляются в современном цифровом обещстве
-Решаем всем тредом лабы для заплутавших студентов и задачки с sql-ex для тех, у кого завтра ПЕРВОЕ собеседование
-Анализируем, как работает поиск вконтакте
-Игнорируем конкаренси-шизика, не понимающего, зачем базы данных нужны
-И просто хорошо проводим время, обсирая чужой код, не раскрывая, как писать правильно

Поехали!

Аноним 23/10/19 Срд 13:23:37 15028802
Кароч, народ, хелп.
надо вспомнить курс бд и задрочить скл до среднего уровня, тихонько восседая в техподе. Нужна ультрагоднота: посоветуйте 1 книгу и 1 онлайн-ресурс для решения задачек. С меня нихуя.
Аноним 23/10/19 Срд 13:27:43 15028813
>>1502880
Кстати

>-Разбираемся, почему PostgreSQL - не Oracle
Консенсуса еще нет?
Ну, кроме того, что постгрес бесплатнее.
Аноним 23/10/19 Срд 13:35:56 15028854
>>1502880
Есть даже доступ к адски медленной тестовой бд на oracle
Аноним 23/10/19 Срд 13:36:29 15028865
>>1502870 (OP)
Анонасы!

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

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

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

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

Я без подъебки спрашиваю, мне правдо интересно.
Аноним 23/10/19 Срд 13:58:53 15029036
>>1502886
Пердун, помоги, плиз, с -2880
А покамест тебе кто-нибудь годный ответит
Аноним 23/10/19 Срд 14:31:30 15029347
>>1502881
Боюсь, что консенсуса нет, так как большинство юзает просто то, что первое им под руку попалось.
На работе MySQL? Значит, MySQL топ за свои деньги.

Аноним 23/10/19 Срд 15:27:31 15030038
>>1502886
Так вот, как раз, скорость выборки будет выше, когда ты просто объект по ключу забираешь.
Аноним 23/10/19 Срд 23:24:32 15034609
>>1503003
"выбрать всех пидарасов по фамилии Петров"
Как там у тебя в монгодб будет со скоростью такой выборки?
По какому ключу ты там что будешь забирать?
Аноним 23/10/19 Срд 23:29:19 150346310
>>1502903
понятия не имею про "1 книгу"

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

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

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

Но нет способа лучше, чем сделать какую-нибудь систему самому.
Придумай, набросай схему БД.
Напиши скрипт для ее генерации.
Напиши CRUDы для нужных тебе операций.
Ну и селекты.
Потом прикинь, какие бы ты хотел отчеты получить от такой системы. Вот тебе еще десяток хитровыебанных запросов.
Аноним 23/10/19 Срд 23:32:06 150346711
>>1502934
Но мне интереснее обсудить этот вопрос с теми, ктро работал и с Ораклом, и с Мускл.
Мнение вчерашних школьников, натягивающих пхп-морду на очередной магазин сушеного навоза, сам понимаешь, стоит недорого.
Аноним 24/10/19 Чтв 09:27:35 150363012
Аноним 24/10/19 Чтв 12:01:33 150371813
>>1502870 (OP)
Вы дауны, можно все в текстовых файликах хранить.
Аноним 24/10/19 Чтв 13:42:45 150376114
>>1503718
поподробнее, пожалуйста
в какой кодировке?
а то лень сиквел учить
Аноним 24/10/19 Чтв 16:12:07 150387215
>>1503460
Ты просто, видимо, не понимаешь, зачем нужны объектные БД.

Они не нужны для "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: [ ... ]
}

Аноним 24/10/19 Чтв 16:13:39 150387316
>>1503718
какой формат файлика будешь использовать?

что будешь делать, когда несколько людей одновременно будут хотеть записать что-нибудь в файлик?
Аноним 24/10/19 Чтв 17:27:07 150391017
>>1503872
>Ты просто, видимо, не понимаешь, зачем нужны объектные БД.
Приглашаю тебя еще раз перечесть мой исходный пост.

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

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

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

Объекты в подготовленном виде вообще не требуют базы данных. Это файловая система. Тебе для выбора нужна только ссылка на нужное место. "Вот этом месте лежит куча говна про a.petrov".
Ну, это в моем понимании.
Вот я и пытаюсь разобраться, в чем дефекты моего понимания.
Пока безуспешно.

Аноним 24/10/19 Чтв 17:45:17 150392018
Где курить про оптимизацию и йоба-техники?
Читал как-то, что ForeignKey тру-батьки не пользуются пушо тормозит чтение и запись, насколько правда?
Аноним 24/10/19 Чтв 17:47:37 150392219
>>1503920
Истинная правда.
Хуярят все сразу скопом в одну таблицу, бог потом разберет, что куда.
Аноним 25/10/19 Птн 13:26:54 150443120
>>1502870 (OP)
>отдельная таблица для юзеров
я может конечно что то недопонимаю, может так быстрее, может это просто рофл. НО ЧТО ЭТО БЛЯДЬ ЗА ХУЙНЯ?

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

Стоит ли хранить количество ответов в треде в виде поля replies_count, или все же count(*) from posts where... лучше?
Аноним 25/10/19 Птн 13:27:49 150443221
>>1504431
> страницы
таблицы, лол*
Аноним 25/10/19 Птн 15:35:00 150451322
0fb0ac31c0b3a41[...].jpg (55Кб, 540x757)
540x757
Уважаемые пиздюки, меня заебали разрабы. Наша компания предоставляет разрабам виртуальный сервер (CPU 4 ядра, ОЗУ 16 Гб, виртуальное дисковое пространство 2 Тб), они там варят БД какой-то информ. системы. Постоянно жалуются на высокий iowait. Он у них и правда есть 80% (highrst latency диска 25 млсек). Думают, что проблема в диске (виртуальный же), но наверняка это их хуевые БД являются узким местом. Подскажите как диагностировать проблему, а именно, что виновато: диск или их БД на Постгресе)
пик_рандом
Аноним 25/10/19 Птн 16:01:30 150454623
>>1504513
Просто запустить минипрограмму которая будет читать из файлов и писать в файлы, засечь сколько ей нужно времни и потом сделать то же самое через програму разрабов. Думаю проблема в разрабах, так как ты себе даже не представляешь что за дауны работают в компаниях. Но не в бд. Отпидарашеная бд довольно быстро всё делает, по 0.002 секунды на операцию. Проблема в кривожопости самих разрабов и их мусорной проги.
Аноним 25/10/19 Птн 17:59:33 150463424
>>1504546
Спасибо за ответ, братишка. Доступ к их серверу у меня ограниченный (там какой-то всратый русский дистр на основе Дебиана и они мне выделили порезанную учётку) + есть ещё средства мониторинга и анализа VMWare. Ну ладно, буду думать что да как.
Аноним 25/10/19 Птн 18:01:04 150463525
>>1504513
>на Постгресе
Очевидно!
мимо учу муську
Аноним 25/10/19 Птн 18:53:24 150467726
mysql или postgresql?
Что быстрее?
Аноним 25/10/19 Птн 21:09:33 150478727
Аноним 26/10/19 Суб 00:59:26 150496828
и тред незамедлительно скатился в говно
Аноним 26/10/19 Суб 18:06:04 150528829
>>1504431
Напиши структуру таблиц и входные параметры, по которым ты искать хочешь. Ни ухуя не понятно же.

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

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

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

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

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

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

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

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

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

Например, юзаешь ты google firebase, как объектную БД, на фронте, а для автоматизации основных процессов компании юзаешь SQL Server на бэк-е с констрейнтами и прочими блэкджеками.
Аноним 26/10/19 Суб 18:13:22 150529930
>>1505288
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
Аноним 26/10/19 Суб 18:13:57 150530031
бля, грин текст забыл

>>1505288
> Напиши структуру таблиц и входные параметры, по которым ты искать хочешь. Ни ухуя не понятно же.
>>1505299
Аноним 26/10/19 Суб 18:28:55 150532432
>>1505300
А СУБД какая?
тред и 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

Как ты хочешь?
Аноним 26/10/19 Суб 18:31:14 150533033
>>1505324
> А СУБД какая?
mariadb

первый вариант годный, да
Аноним 26/10/19 Суб 18:34:16 150533434
>>1505330
а вообще тут как раз парадокс, что хотелось бы все сделать максимально пиздато, но приходится изобретать велосипеды, хотя я понимаю что можно как то 4 раза на один тред вернуть
(одинаковые значения треда + разный пост) и потом отсортировать это самому
Аноним 26/10/19 Суб 18:41:02 150534635
>>1505330
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
Аноним 26/10/19 Суб 18:43:12 150535036
>>1505346
-- достаём только по-посты (треды)
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 ответа (или меньше) к каждому треду

Пофиксил наименования
Аноним 26/10/19 Суб 18:48:35 150536037
>>1505350
как я понимаю, это возвращает несколько строк типо

тред, пост?
Аноним 26/10/19 Суб 18:49:11 150536138
>>1505360
Да, выполни, увидишь
Аноним 26/10/19 Суб 18:50:13 150536639
Аноним 26/10/19 Суб 18:52:04 150536940
Аноним 26/10/19 Суб 18:55:49 150537541
Аноним 27/10/19 Вск 23:22:49 150710242
Хочу стать администратором баз данных
SQL и всё такое
С чего начинать и куда развиваться?
Стартовые характеристики:
27 лвл бизнесхуй
Образование - менеджмент
Шарю за ИТ на уровне админа локалки, эникея, линух-дрочера
Аноним 28/10/19 Пнд 11:36:49 150724443
Пацаны, нид хелп.
Вкатывальщик тупит над задачей по СКюэЛь:

БД состоит из
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'


__________________

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

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


1121 850.0000
1750 1200.0000


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

Аноним 28/10/19 Пнд 13:52:38 150734444
>>1507244
судя по тому, что ты вхуярил concat, ты
1. не понимаешь, что тебе нужно сделать
2. не понимаешь, что ты делаешь
тут тебе не поможешь
Аноним 28/10/19 Пнд 16:40:16 150755745
>>1507344
Да он перепутал просто конакт и коалис
Аноним 28/10/19 Пнд 17:22:22 150760646
SQL-господа, надо за два дня постичь основы SQL, чтобы написать тз (по основам JS, SQL и сисярп) и попасть на курсы. Подскажите, пожалуйста, как это реализовать? На всё у меня в сумме неделя.
28/10/19 Пнд 23:04:27 150797547
Что за уебаны в треде?
Аноним 29/10/19 Втр 13:48:40 150832248
>>1502870 (OP)
Что скажете за оптимизацию запросов в оракеле? Где есть нормальная документация?
Аноним 29/10/19 Втр 20:45:26 150866349
>>1508322
А чем оптимизация в оракле отличается от оптимизации в sql-сервере?

Кури гайды по чтению плана запроса.
Аноним 29/10/19 Втр 23:18:15 150880950
>>1505288
>ForeignKey, Действительно, не всегда используют, потому что он еще и усложняет саму разработку, требуя производить каскадное удаление записей, например.
Т.е. требуя не поломать целостность. Для этого FK и нужен. Больше ни для чего. Чтобы красноглазик не объебался, и не засрал базу непонятными данными.

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

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

>Но стоит помнить, что, чем меньше у тебя связей между таблицами, тем менее целостной будет твоя система.
FK это НЕ СВЯЗЬ!!!!!!!
Аноним 29/10/19 Втр 23:23:02 150881351
>>1505288
>Есть у тебя юзер, у него есть сертификаты и, скажем, ученые степени, всё в разных таблицах лежит.
>....
>А в противовес этому у тебя есть просто объект "Юзер", с кучей атрибутов-массивов, который ты достаешь одним запросом. Это будет работать однозначно быстрее.
Но мне (да и тебе, уверен тоже) почти никогда не нужен ВЕСЬ объект Юзер.
Что, если тебе надо взять просто ФИО и дату рождения?
А что если только ПОСЛЕДНИЙ по дате сертификат?
А что, если тебе надо взять Юзеров, у которых есть такие же сертификаты как у Пупкина?

Т.е., очевидно, я понимаю, что один кусок достать одним куском проще, чем собрать по частям.
Но посмотри же внимательнее на мои вопросы:
что это за ситуации, когда все всегда нужно одним куском?
Мне не приходилось таких систем видеть.
Аноним 29/10/19 Втр 23:23:56 150881452
>>1508322
Оптимизацию хранения ты уже изучил?
Индексы, партишенинг, вот это вот все?
Аноним 31/10/19 Чтв 11:37:00 150965453
>>1508809
Почему фк не связь?
Аноним 31/10/19 Чтв 17:03:33 150992254
Почему инфы для вкатывания-то нет?
Аноним 01/11/19 Птн 17:56:59 151079555
>>1509922
Пидорасы, сэр. Кругом одни формошлёпы и асинхронные дрочеры.

Сам ищу чего бы почитать по логическому проектированию БД. Запросы писать умею, таблицы состряпаю, но хотелось бы чего-нибудь фундаментального.
Аноним 01/11/19 Птн 19:02:08 151083656
>>1510795
И я бы хотел. Вон там чувак сверху писал

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

Вот где прочесть как разрабатывать хранилища данных, чем эта абстракция или не абстракция? отличается от просто кучи таблиц в БД? НИПАНЯТНА
Аноним 01/11/19 Птн 21:11:36 151095257
DBАноны, сам я пхп-макака, и недавно прочитал умные статьи с критикой ORM, решил упороться и изучить подробнее sql и базы даных, выбор пал на postgres. Сейчас на работе у нас все хранится в mariadb, около полумиллиона записей в 30 таблицах. Очень много ненужных колонок, нарушены нормальные формы, чувак думал в парадигме ООП, и засрал базу. Можно ли все это перенести в postgresql, и начать рефакторинг, и выжимать по полной из базы, удалив мусорный код, или это нереальная задача и стоит забить?
Аноним 01/11/19 Птн 21:23:53 151097258
>>1509654
fk это constraint. ограничение.
правило, которое определяет, что может, а чего не может быть в поле.
Новичкам кажется, что fk определяет какую-то связь, которая что-то о чем-то говорит, и чем-то может помочь при селектах.
Но это не так. Где-то там, в эмпиреях, это, может, и связь. Но на уровне схемы БД, инсертов, апдейтов и делитов, это просто правило, которое определяет возможные значения и правила удаления.
Аноним 01/11/19 Птн 21:27:29 151097659
>>1510795
т.е. Криса Дейта ты уже прочел?
Аноним 01/11/19 Птн 21:30:53 151097860
>>1510836
Кто мешает тебе заглянуть хотя бы в википедию?
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.

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

Хранилище данных строится поверх оперативной БД. Если ты объебешься и зальешь кривые данные в хранилище, это не очень страшно. Потому что исходные данные все еще целостные и правильные. Исправишь ошибку и перезальешь свое хранилище.
Аноним 01/11/19 Птн 23:43:59 151107261
>>1510972
Просто правило - это constraint
Когда создаешь fk, пишешь references, что переводится, как «ссылается». Так что не пизди тут про несвязь.
Аноним 02/11/19 Суб 00:03:10 151108562
Аноним 02/11/19 Суб 02:16:16 151112863
>>1511072
Ну, т.е. ты не понимаешь, что означает это "references"
Ок.
Пусть для тебя это будет связь.
Аноним 02/11/19 Суб 10:00:53 151119264
>>1511128
Ну да, связь - это же от слова «вязать». Никто же не вяжет ничего в базе данных, ниточек там нет, вот и связи нет.
Такая у тебя логика.
Аноним 02/11/19 Суб 12:28:19 151126465
Товарищи,

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

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

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

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

Для трэйла oracle gg получилось провернуть такую штуку, хочу с redo попробовать.
Аноним 02/11/19 Суб 19:57:11 151154966
>>1510976
Прочёл. Да, хорошая книга, но многабукав (воды), при том что это труд о БД в принципе. Много вещей которые и так интуитивно понятны, а вот эффективных запросов или построения моделей данных нет.
Аноним 02/11/19 Суб 19:58:19 151155067
>>1510976
Да и в принципе книжка очень старая. И примеров на реальных СУБД не хватает. А там за 20 лет кучу фич запилили.
Аноним 02/11/19 Суб 21:44:03 151161868
Собираюсь запилить БД "склада" на строительном объекте. Думаю пилить на Access, но закрадываются мысли таки мутить на MS SQL или на MySQL. Таки посоветуйте нубу, на чом пилить?
Аноним 02/11/19 Суб 21:52:28 151162669
>>1511618
Мне кажется, недостаточно вводных.
MS SQL почти во всех изданиях платный.
Есть Express-версия с разрешенным объемом в 10 гб и незапускающимся агентом.
Есть Developer-версия, полностью работающая, но якобы только для разработки, как они это проверяют, я хз.

Access - это что-то уровня SQLite или Excel, если планируешь организовывать туда доступ разным пользователям с разграничением прав, то не уверен, что это то, что надо. С другой стороны, в Access есть встроенный редактор форм, так что, если не умеешь прогать, а хочешь создавать интерфейсы, то это будет самым простым вариантом.
Аноним 02/11/19 Суб 21:57:23 151162970
>>1511626
>если не умеешь прогать
это
Но пытаюсь учиться. Таки попробую в Access, если приспичит дальше развивать, буду изучать взрослые СУБД
Аноним 02/11/19 Суб 22:46:06 151165471
Э бля а где шапка с литературой? Даже у презренных веб-макак есть, а у вас нет.
Аноним 02/11/19 Суб 22:56:21 151165872
>>1511618
Делай нормально, асес гавно мамонта какое-то. Бери май или мс. У мс есть экспресс бесплатная, если у тебя там не хайлоад разницы не заметишь. С мсовской в комплекте идет менеджмент студио, у май тоже есть из коробки инструменты все. Какой в очко ассес перекрестился
Аноним 03/11/19 Вск 02:24:41 151173673
Анон, а поясни для суперньюфага, в чем разница между MySQL, MS SQL Server, SQLite, Postgres и всякими другими бд?
Я щас вот сижу учу SQL, всякие эти селекты-хуекты, и туториал меня ведет по SQL Server. Но я же так понимаю, SQL будет везде одинаковый? И во всех БД запросы выглядят абсолютно одинаково?
Аноним 03/11/19 Вск 02:33:54 151174174
>>1511736
>MySQL, Postgres, MS SQL Server
это все демоны, к которым ты можешь подключаться удаленно

>мускул
устаревшее говно, use mariadb instead

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

>мс
говно

>Sqlite3
в синтакисе есть подьеб AUTOINCREMENT, а так годнота, особенно для игр, но для хайлоад прочих PoolConnection не поедет, так как не поддерживает несколько соеденений (онли одно).
Аноним 03/11/19 Вск 03:12:54 151175275
>>1511741
Т.е. по большому счету все равно, на какой ДБ учиться писать запросы? Я не планирую быть архитектором баз данных, вообще мечу в бэкэнд, так что мне, по сути, надо просто понимать, как и какие запросы писать в БД.
Аноним 03/11/19 Вск 03:23:01 151175976
Аноним 03/11/19 Вск 03:23:30 151176077
>>1511654
Подключайся, помогай составить
Аноним 03/11/19 Вск 08:03:52 151179378
Есть некие изделия с фиксированным диапазоном длин, ширин, высот и некоторых особенностей. Например: ящик 1х0.5х0.7м с отверстием/центральным отверстием/без отверстия Писать каждый экземпляр в таблицу или создать таблицы ширина, длина, высота и поле "отверстие" с выпадающим списком и вставлять данные из них в таблицу "Ящики"?
Аноним 03/11/19 Вск 10:30:07 151182779
>>1511793
Наименование-размер-отверстие(тру/фальш). Стоит ли размер разбивать на части зависит от условий, если разбить можно будет искать по каждой стороне.
Аноним 03/11/19 Вск 17:58:23 151222780
>>1511736
>SQL будет везде одинаковый
В основной своей массе - да.
У всех есть какие-то свои расширения.
У говна типа мускл есть еще и свои тупые ограничения.
Некоторые (типа того же мускла) херово умеют в стандарт.

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

Средства оптимизмации тоже у всех более-менее разные.
Аноним 03/11/19 Вск 18:01:07 151223081
Решил вкатится в вашу парашу. Что за пиздец с литературой? Книги хер найдешь, а те что есть написаны хуй пойми как. По сранному виму наверное больше книг чем по скулю.

Есть ли есть что-нибудь годное покурить кидайте
Аноним 03/11/19 Вск 19:03:13 151226482
изображение.png (594Кб, 1282x825)
1282x825
>>1512230
Вот что это блядь такое? Какая-то бабка собралась учить SQL, они что там ебанулись в своей майкрософт? И так в каждом втором руководсвте\книжке, какая-то дичь. Неужели весь этот sql настолько некому в хуй не упёрся?
Аноним 03/11/19 Вск 19:44:31 151228383
>>1512264
У меня в вузике SQL преподавала женщина. И она в нем более-менее разбиралась.
>Неужели весь этот sql настолько некому в хуй не упёрся?
Уперся практически везде, особенно в вебе. Я рискну предположить, sql преподают всякие бабки, потому что это один из самых простых топиков it, по крайней мере что касается основ.
Аноним 03/11/19 Вск 22:39:26 151246884
>>1511752
да, если скл, то там везде синтаксис почти одинаковый

>>1511759
микрософт по определению зашкварен как и их говнософт, с годами он еще стал и ненужен, так как появился mysql->mariadb, postgres
Аноним 03/11/19 Вск 23:31:10 151250985
>>1512468
Аргументация в уровня /b.
Аноним 03/11/19 Вск 23:45:16 151251386
Правда ли что
SELECT COUNT(*) FROM table
Не атомарная операция и проходит по всей таблице?
В что там свитера, совсем ебанулись?
Аноним 03/11/19 Вск 23:48:17 151251587
>>1512513
Вероятно, зависит от реализации. Может какая-нибудь count(*) понимает как "количество строк с хотя бы одним не-нулл полем".

Попробуй select count(1) from table
Аноним 04/11/19 Пнд 00:07:46 151252488
>>1512513>>1512515
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';

Это во всех БД так или только в самых ебнутых? Или как обычно у свитеров полный разброд и никто ничего не знает и сказать не может наверняка?
Аноним 04/11/19 Пнд 00:16:13 151252889
>>1512524
Свитеры это кто? Не понимаю ваш франузский.
Аноним 04/11/19 Пнд 11:05:47 151273990
>>1512528
Это шизик, ему неинтересно, он просто хочет срач, игнорируй его.
Аноним 04/11/19 Пнд 15:53:40 151299191
Аноним 04/11/19 Пнд 15:57:00 151299792
>>1512283
>реляционная алгебра
>один из самых простых топиков
Сразу видно специалиста
Аноним 04/11/19 Пнд 15:58:22 151299993
>>1512991
Лол, /б вместе с хуесосами протек сюда.
Аноним 04/11/19 Пнд 16:00:54 151300494
>>1512999
Ну ты как подтверждение.
Аноним 04/11/19 Пнд 17:29:26 151306795
>>1512997
Не передергивай, одно дело писать запросики уровня "Покажи всех студентов старше 20 плиз)))", другое дело реально в этом всем разбираться. Первого для повседневных задач хватает с головой и большинство макак и знать не знают, что там за реляционная алгебра, потому что им это нахуй не надо.
Аноним 04/11/19 Пнд 19:58:03 151322596
>>1513067
Тебе видней, хуле, макака повседневная
Аноним 04/11/19 Пнд 19:58:19 151322697
>>1513004
Жду, когда ты, умник, боевую картиночку подтащишь
Аноним 04/11/19 Пнд 20:05:39 151323498
>>1513067
Реляционная алгебра в любом учебнике по БД, пусть даже строго написанном, это поверхностная глава из серии "вот есть базовые операции, их можно комбинировать и найти какое хошь отношение хахааа", то есть ничего умного или полезного, если ты серьезный кампустир саентист и тебе реально надо в этом какие-то теоремы доказывать, то надо статьи читать по теме, а то пафосно названный "реляционная теория" раздел из книжки как раз для тех самых макак-второкурсников.
Аноним 04/11/19 Пнд 20:47:12 151326799
изображение.png (296Кб, 350x296)
350x296
Аноним 04/11/19 Пнд 20:52:06 1513270100
>>1508813
Так оно и не для крудоговна нужно. Например представь микросервис в большой системе которому несколько раз в час насирают миллионы сообщений и которые он должен потом постепенно обработать, никакого смысла тут реляционки использовать очевидно нет.
Аноним 04/11/19 Пнд 22:26:41 1513373101
Аноним 04/11/19 Пнд 23:06:49 1513405102
>>1513270
Так я про то и спрашивал - где используется.

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

>крудоговна
Не устаю проигрывать с непроходящей стадии отрицания у анонов.
"крудоговно" это то, на чем работает абсолютно все.
Это как свысока рассуждать о "дыханиеговне" и прочем обмене веществ.
Мол, я весь в эмпиреях витаю, я выше всего этого.
Аноним 06/11/19 Срд 14:49:40 1514556103
>>1502870 (OP)
Аноны памагите плисс!!!
1 Выведите количество значений Customers в каждой
стране.
SELECT (CustomerID),
Country
FROM Customers
;
2 Выведите количество покупателей в каждом городе,
выравнивая по возрастанию их количества
SELECT (CustomerID),
Country
FROM Customers
ORDER BY ;
Аноним 06/11/19 Срд 15:32:40 1514595104
Аноны, какие есть годные книги по SQl (mariadb) для продвинутого уровня? Где подробно разбирают оптимизацию кода, разные фичи типо from (select ...) a и т.д?
Аноним 06/11/19 Срд 16:02:29 1514619105
Аноним 06/11/19 Срд 16:05:25 1514623106
>>1514595
>фичи типо from (select ...)
>для продвинутого уровня
лол
Аноним 06/11/19 Срд 16:53:21 1514670107
>>1514556
Group by а помощь. Таблицы из нортвинда.
Аноним 06/11/19 Срд 17:03:10 1514676108
>>1514623
А что не так? Все лютое говно как раз в селектах.
Аноним 06/11/19 Срд 17:16:24 1514683109
>>1503718
nedb так и делает, в общем-то.
Аноним 06/11/19 Срд 17:20:47 1514688110
Подходит ли MongoDB для проектов с реляционными данными (через DBRef)? Хочу использовать в проекте Spring Webflux, но неблокирующих драйверов для реляционных БД пока не завезли, поэтому планирую использовать Mongo как основную БД. Это норм затея?
Аноним 06/11/19 Срд 20:56:09 1514920111
>>1514688
Мы как-то должны угадать, что ты хочешь делать?
Аноним 06/11/19 Срд 20:58:24 1514921112
Снимок экрана о[...].png (232Кб, 1853x1050)
1853x1050
Аноны, помогите с laba2, пожалуйста

ругается на синтаксическую ошибку в месте вызова функции, которая возвращает селект. если вместо вызова функции вставить целиком селект, то все работает. чому так?
скобки вокруг EXISTS поставил от отчания, без них такую же ошибку выдает
Аноним 06/11/19 Срд 21:03:07 1514924113
>>1514921
чо за лаба? где взять?
Аноним 06/11/19 Срд 21:04:06 1514926114
>>1514920
Натягивать реляционную модель данных на вроде как нереляционную БД.
Аноним 06/11/19 Срд 21:37:28 1514945115
Аноним 07/11/19 Чтв 01:55:33 1515105116
>>1514926
Да, тогда все ок. Действуй, сестра!
Аноним 07/11/19 Чтв 02:02:26 1515107117
>>1514921
exists select * from select_time_intersection

чо, в гугле забанили, что ли?
или лень почитать, что означает returns table и как с ей жить?
Аноним 07/11/19 Чтв 05:40:34 1515141118
OtO7me4FQgs.jpg (211Кб, 640x1136)
640x1136
Аноним 07/11/19 Чтв 10:17:58 1515211119
>>1515107
Спасибо большое <3
Нагуглить с разбегу не получилось, вчера заебался сильно, извини
>>1515141
Из паблика ВК конечно
Аноним 07/11/19 Чтв 11:32:17 1515245120
>>1515211
Ты должен благодарить Аллаха за то что направил твой разум, а не кефира
Аноним 07/11/19 Чтв 14:47:27 1515389121
Пацаны, есть поле с типом varchar(10)
И когда я туда попытался занести строку из 11 символов, мне выдало ошибку. ERROR 1406 (22001): Data too long for column
Я понимаю, если бы это был char(10), но это var ебать его в сраку char, он должон изменяться! Почему так?
Аноним 07/11/19 Чтв 15:59:58 1515486122
>>1515389
чтоб оно изменилось 10 не должно быть. Десяткой ты задаешь фиксированную длину, схуяли оно должно меняться?
Аноним 07/11/19 Чтв 16:01:04 1515489123
>>1515486
10 это максимум, если у тебя меньше, оно меньеш выделит памяти, а если больше, то ты пойдёшь нахуй.
Аноним 07/11/19 Чтв 16:05:56 1515497124
Аноним 07/11/19 Чтв 16:11:14 1515504125
>>1515497
Почему тупые вопросы у тебя, а далбаёбы мы?
Аноним 07/11/19 Чтв 18:05:32 1515612126
15680488684520.jpg (55Кб, 804x743)
804x743
Есть ли альтернатива для хранения данных в большом количестве однотипных полей? Суть в том, что у меня есть таблица с игроками, где у каждого игрока свой уникальный id. Так же есть таблица с историей матчей, где у каждого матча есть уникальный id и 10 полей, содержащих id всех игроков, которые в нем участвовали. Насколько это практичное решение? Или можно как-то эти 10 столбцов заменить одним? Если нет, то нужно и можно ли эти 10 столбцов помечать внешним ключом?
Аноним 07/11/19 Чтв 18:23:58 1515622127
>>1515612
связная таблица {суррогтаныйИД, матч, игрок}

Аноним 07/11/19 Чтв 18:34:29 1515632128
qwe.png (8Кб, 769x290)
769x290
>>1515622
Типа так? id_match и id_player - внешние ключи?
Аноним 07/11/19 Чтв 18:38:08 1515639129
>>1515612
Если матчи парные можно сделать две таблицы с победителями и с проигравшими, или сделать две таблицы Матч и Детали матча, к которой можно будет обратится если нужны подробности.
Аноним 07/11/19 Чтв 18:48:40 1515645130
>>1515639
Детали матча это уже третья таблица. Там будет много уникальных полей для каждого игрока в данном матче. А насчет двух таблиц с победителями и проигравшими, как это упрощает менеджмет бд? Это же вместо 1 таблицы с 10 столбцами - 2 таблицы с 5 столбцами каждая. Если я правильно понял.
Аноним 07/11/19 Чтв 18:59:17 1515657131
>>1515645
Ну тут зависит от такого насколько тебе подробные нужны результаты, можно просто сделать графу ПОБЕДИТЕЛЬ в главной таблице
Аноним 07/11/19 Чтв 19:04:05 1515665132
>>1515657
Не, подробные данные нужны для всех игроков, просто, когда много однотипных столбцов, хочется это как-то упростить. Если я этого анона >>1515622 правильно понял, то так, наверное, и сделаю. Эта таблица >>1515632 просто будет продолжена на 50+ столбцов, которые тоже бы, наверное, стоило как-то распределить, но и разрастаться таблицами тоже не хочется. К тому же, данные там почти уникальные.
Аноним 07/11/19 Чтв 19:13:07 1515677133
>>1515632
Так, да.
Потом у тебя случится замена, и вместо 10-ти игроков в матче будет 11.
А потом кого-нибудь удалят до стартового свистка и будет 9.

Можно, конечно, не делать суррогатный ключ, а сразу захерачить композитный на ид_матч и ид_плейер.
Это как удобнее. Про отдельный ПК я на всякий случай упомянул.
Аноним 07/11/19 Чтв 22:13:07 1515859134
>>1512524
Бамп вопросу, хули отмалчиваетесь?
Аноним 08/11/19 Птн 03:35:48 1516012135
>>1502870 (OP)
Что за конкаренси-шизик? Я не в курсе, первый раз в треде, объясните пожалуйста.
Аноним 08/11/19 Птн 03:43:47 1516013136
>>1508813
> Но мне (да и тебе, уверен тоже) почти никогда не нужен ВЕСЬ объект Юзер.
> Что, если тебе надо взять просто ФИО и дату рождения?
> А что если только ПОСЛЕДНИЙ по дате сертификат?
> А что, если тебе надо взять Юзеров, у которых есть такие же сертификаты как у Пупкина?
GraphQL
Аноним 08/11/19 Птн 04:34:12 1516020137
>>1516013
но тебе из них нужны только фамилии
а ты все объекты будешь подтягивать

короче, я так пока и не понял этого дроча
Аноним 08/11/19 Птн 06:26:31 1516028138
Мы учим эту тему в универе, пишем по ней курсачи, кажется несложным. На этом можно зарабатывать какие-то деньги? Если да, то какие и где удаленно естественно студентота нищая
Аноним 08/11/19 Птн 08:29:46 1516055139
>>1516028
В офисе сначала поработай, а потом уж лезь в удалёнку.
Аноним 08/11/19 Птн 09:39:09 1516081140
>>1516028
Да иди ты нахуй. Почему мне кажется скл запросы и иже с ними самой сложной темой в погромиравании, завидую тебе пиздец...
Аноним 08/11/19 Птн 13:46:34 1516233141
Сап, запросач, посоветуй где и что можно почитать про хранимые процедуры и функции, если для совсем тупых и с примерами, то вообще шикарно.
Алсо, это я криворучка или консоль у Open Server не очень?

мимо делаю лабы
Аноним 08/11/19 Птн 13:50:56 1516236142
Сколько внешние ключи занимают места в БД? Нигде не смог найти ответа на этот вопрос. Они явно же не просто так придуманы были... И если они действительно меньше места занимают, то насколько примерно?
Аноним 08/11/19 Птн 14:07:35 1516246143
>>1516236
>Они явно же не просто так придуманы были...
А для связей между отношениями?
Аноним 08/11/19 Птн 14:15:09 1516252144
>>1516236
1. что значит "занимают места в БД"?
2. "они действительно меньше места занимают" - меньше, чем что?

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


Пусть 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, содержащее внешний ключ, называют подчинённым, или дочерним отношением.

Охуенная связь, ага
Аноним 08/11/19 Птн 14:33:51 1516273145
Аноним 08/11/19 Птн 14:37:26 1516275146
>>1516252
Любая БД занимает место на носителе информации. БД хранит свои заголовки для интерпретации СУБД, названия таблиц, названия полей, сами значения полей. Размер значений зависит от типа данных, но помимо обычных полей, есть свойство полей - внешний ключ. Из того, что прочитал, так это то, что они позволяют искать данные в БД быстрее, а про занимаемое ими место ни слова. Ибо мне представляется, что раз они используются в качестве индексов, то и повторное их использование в таблицах по факту не должно занимать никакого места. Т.е. это примерно, как указатели в c/c++. Можно создать тысячи указателей на один объект, но при этом память выделяться для каждого указателя под размер этого объекта не будет. Вот я и хочу понять: так ли это?

Т.е. если у меня есть таблица peoples (id, name, country_id), где country_id - внешний ключ к полю id таблицы countries (id, name), то при наличии 100 записей в этом поле фактически будет выделено место только под размер таблицы countries, где всего может быть только 5 стран. А country_id будет только указателем. Как-то так...
Аноним 08/11/19 Птн 14:37:41 1516276147
>>1516252
Злой ты, но спасибо за то что поправил, почитаю. Сам понимаешь >>1512283
Аноним 08/11/19 Птн 15:50:05 1516318148
>>1516275
Тебе нужно гуглить реализацию по конкретной базе.

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

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

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

Все вышесказанное относится к бд oracle
Аноним 08/11/19 Птн 15:54:59 1516322149
>>1516275
А. Понятно.
Ты не совсем понимаешь, зачем нужны ФК.
Экономить место на диске - их последняя задача.
Их главная задача не дать тебе насрать в базу.
В твоем примере - не дать тебе написать гИрмания там, где должна бы быть гЕрмания.
Выносить повторяющиеся данные так, чтобы они встречались в своей полноте лишь один раз - опять же не для того, чтобы сэкономить место на диске. Читай про нормальные формы.
Аноним 08/11/19 Птн 15:57:07 1516324150
>>1516276
Не злой.
Это типичная ошибка начинающих - считать, что ФК дает какую-то связь.
Это приводит ко многим недопониманиям и недоумениям. Я сам через это проходил.
Поэтому, когда непонимающему человеку начинают рассказывать про "связь", я всегда одергиваю.
Аноним 08/11/19 Птн 16:01:14 1516326151
Аноним 08/11/19 Птн 16:06:46 1516329152
>>1516275
Представь, что у тебя есть поле с типом char(1).
Сколько места в записи оно займет?
Теперь представь, что значения из этого поля ты вынес в отдельную таблицу. И сделал ФК на эту таблицу.
Очевидно, что запись будет занимать больше места. Ссылка просто тупо длиннее, чем char(1).

Зато, этим символом ты кодируешь пол (F/M), то используя ФК ты не обосрешься, вставив в запись любой другой символ. ФК нужны именно для этого.
Аноним 08/11/19 Птн 17:57:58 1516390153
>>1516318
>Сильно сомневаюсь, что есть базы с реализацией fk через ссылки. Как минимум это выльется в массовый апдейт при удалении fk.
Ну, не обязательно конкретно через ссылки средствами низкоуровневых языков. Может там свои какие-то ухищрения есть под капотом, хер его знает...
>Просто при вставке нового значения в поле, дергается индекс таблицы на котрую ссылается поле, и производится проверка, есть ли там такое значение.
Если это действительно так, то все равно есть шанс, что этот индекс окажется гораздо легче дублирования данных.

>>1516322
>Читай про нормальные формы.
Хорошо, почитаю.

>>1516329
Ну, насчет 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) не будет заполнено, но я не знаю: занимают ли незаполненные поля какое-то мест оили нет.

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

Напомню еще раз суть вопроса: как понимать, когда и какой из этих случаев лучше? Или я вовсе не так представляю хранение в БД?
Аноним 08/11/19 Птн 18:03:44 1516401154
>>1516390
>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)

фикс
Аноним 08/11/19 Птн 18:16:13 1516413155
>>1516390
А что ты так печёшся о размере? у тебя там биг дата чтоле?
Аноним 08/11/19 Птн 18:24:11 1516417156
>>1516413
Уточню, есть база с которой работаем, и где нужно все БЫСТРО, она и пухнет, а есть всякие хранилища данных, в которых хранят и БЫСТРО им не нужно, во втором случае собирают все обратно в огромные таблицы, т.е. денормализуют. Все зависит от задачи.
Аноним 08/11/19 Птн 18:25:03 1516418157
>>1516413
Нет. На данный момент ее еще даже нету. Я не пекусь, просто, если есть возможность уменьшить потенциальный размер БД в 5/10/20... раз, то почему бы и нет? Я не отношусь к ентерпрайзу какому-то. Просто пишу сервер на js для себя, который работал бы с этой БД для своих нужд. Если я могу выделить 5-10 гб для нее на своем диске, то как с этим будут обстоять дела с бесплатными хостингами - хз. У них наверняка будет ограничение на какие-нибудь 500мб.
Аноним 08/11/19 Птн 18:26:20 1516419158
>>1516390
Как минимум у тебя лишняя ссылка на производителя автомобилей в третьей таблице. Ты ее можешь получить из второй таблицы. Это в нормальных формах описано, как избежать дублирования связок.

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

Данные хранятся в таблицах, и то - что ты называешь "дублированием" не решается с помощью ссылок на данные из другой таблицы. "Как-то там под капотом" , за счет fk. Fk - это ограничение, констрэйнт, его цель ограничивать допустимый набор данных.
Аноним 08/11/19 Птн 18:29:39 1516421159
1a1dca40e12d846[...].jpg (118Кб, 750x1328)
750x1328
>>1516252
Откуда вы лезете пидоры, даже на ебнном мейлаче умудряетесь обьянсять как дед-препод в пту. Унтермеши косноязычные.
Аноним 08/11/19 Птн 18:53:00 1516440160
>>1516419
>Правда не очень понял, где ты геометрическую прогрессию нашел.
Я не проводил расчетов никаких, просто прикинул примерно график роста размера БД. Одно ясно точно: график будет с каждой таблицей все круче-и-круче.
>Ты ее можешь получить из второй таблицы.
С помощью вложенного запроса? Опять же, не знаю как на такое СУБД реагирует. Если это сказывается сильно на производительности, то может и есть смысл, чтобы дублировать ссылки?
>Тот оверхед, который ты получаешь при "дублировании" ключевых колонок, в реальных базах не значителен
В том-то и проблема, что все зависит от вида данных. Если это сотня матрешек, то в таких случаях, я думаю, основной объем БД и будут составлять эти PK и FK. Но сейчас думаю: если в каждой последующей таблице будет только один FK, с помощью которого можно обратиться к любой из предыдущих таблиц, то, наверное, эти FK действительно не так значительны...
Аноним 08/11/19 Птн 19:03:22 1516448161
Аноним 08/11/19 Птн 20:18:30 1516490162
>>1516390
> как лучше организовывать таблицы в тех или иных случаях, чтобы БД в итоге не весила в 5 раз больше
Забудь об этом.
Вообще забудь.
БД (по крайней мере, реляционная) это не про размер.
А про целостность и доступных данных.
Внешние ключи именно про это.

Аноним 08/11/19 Птн 20:21:09 1516493163
Аноним 08/11/19 Птн 20:24:44 1516502164
>>1516081
У меня отл по дискретке. Имхо есть связь
Аноним 08/11/19 Птн 20:24:48 1516503165
>>1516493
Нет, ты просто уебок безмозглый, на трубе есть люди которые ВНЕЗАПНО могут рассказать доступно, в отличии от тебя. Значит дело не в бабине.
Аноним 08/11/19 Птн 20:26:13 1516508166
>>1516502
Всем похуй тащемта, в продакшен тебя не кто не пустить без опыта, да ещё на удаленку, так что можешь пока разрабатывать только анус.
Аноним 08/11/19 Птн 21:47:52 1516554167
>>1512524
Пидоры блядь ебаные как вы вообще в своих ебаных запросах разбираетесь если даже про самый простейший мыслимый запрос ничего сказать не можете?
Аноним 08/11/19 Птн 21:51:42 1516558168
>>1516503
Ахахахахаха
Изучает программирование по видосикам на ютубе
Не умеет в текст
Не понимает, что италиком специально выделена цитата
>ррряяяяя, вы все мудаки, один я умный, мне на трубе объяснили
Бля, спасибо, анончик, пиши еще.
Что бы мы делали без третьеклассников в этом треде?
Аноним 08/11/19 Птн 21:52:26 1516560169
>>1516554
Мы не разбираемся, мы сюда просто поссать зашли.
Иди своей дорогой, сталкер.
Аноним 08/11/19 Птн 22:24:22 1516582170
>>1516558
Не, я как раз тупой, но ты ещё ещё тупее, потому-что тужишься что-то объяснить, но не можешь в объяснение.
Аноним 08/11/19 Птн 22:40:41 1516588171
15719974736730.jpg (118Кб, 918x578)
918x578
ньюфаг в треде, есть какая-нибудь годная книжка или ресурс чтобы понять че такое субд как они устроены, откуда там какие то таблички высираются, как это все хранится в памяти в каких структурах? Но чтобы не погрязнуть во всем этом а быстро освоить, сам я с бд имею мало опыта, за жизнь вроде только несколько запросов написал на скюле и с хибернейтом чето из бд вытаскивал в джаве. Но умею в системное программирование ассемблер все такое, знаю на базовом уровне cs.
Аноним 08/11/19 Птн 22:47:09 1516589172
>>1516588
>умеет в системное программирование ассемблер все такое
>спрашивает книжки у двачеров про sql
Аноним 08/11/19 Птн 22:53:54 1516597173
>>1516582
Так может это не он не может в объяснение а просто ты
>как раз тупой
?
Аноним 08/11/19 Птн 23:15:40 1516615174
>>1516508
Токсичная гниль, плес
Аноним 08/11/19 Птн 23:22:22 1516619175
>>1516615
А что ты ожидал услышать? Конечно тебя сразу возьмут на удалёнку в энтрпрайз, мурмурмур
Аноним 08/11/19 Птн 23:31:15 1516625176
>>1516582
Ахахахаха.
Зумер влез в чужой разговор, ни хуя не понял, закатил истерику.
Классика.
Если бы я собирался что-либо объяснять тебе, конечно, я бы объяснял на примере пчелок и бабочек. Но я не твой учитель информатики, мне на тебя насрать.

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

Когда ты вырастешь, может быть, ты научишься понимать определения из учебников. А пока, иди на хуй, давай, до свидания.
Аноним 08/11/19 Птн 23:33:17 1516628177
>>1516589
"системное программирование" это маркер уебана
никто не знает, что это такое, но каждый уебан думает, что это что-то невъебенно крутое

с другой стороны, нет ничего необычайного в том, что кто-то, имеющий опыт ООП программирования, не сразу въезжает в функциональное, или в реляционную алгебру.
Это вещи идущие параллельными курсами, хули ты бугуртишь-то?
Аноним 08/11/19 Птн 23:34:15 1516630178
>>1516615
>Токсичная
Зумер хотел услышать, что ему незамедлительно сделают приятно.
А когда не услышал, подорвался жопой.
И высрал единственное слово, которое выучил за последние два года.
Аноним 08/11/19 Птн 23:37:33 1516633179
>>1516625
Ох блять плесенью потянуло, сьеби в свой совок пенсия, по твоим книжкам 70 года выпуска с зашоренными определениями уже никто не учится. Читни что-нибудь свежеее, и удивишься, что люди ВНЕЗАПНО могут доступно объяснять сложные моменты, а не просто срать цитатами из большой советской энцклопедии, и копипастом высирать матан.
Аноним 08/11/19 Птн 23:53:04 1516643180
>>1516633
Смузихлеб, почему сложно и непонятно тебе, а виноваты в этом окружающие? Слышал что-нибудь про такие слова как полнота и однозначность трактовки?
Аноним 08/11/19 Птн 23:57:11 1516648181
>>1516643
Большинство явлений можно описать несколькими способами, и очевидно что какой-то из способов описания будет лучше, а какой-то хуже. Совки не понимают что высирать термины, не всегда оптимальный путь объяснения не ну а чо вон же там в большой совесткой написано, значит это единственный верный способ донести.
Аноним 09/11/19 Суб 00:00:10 1516650182
>>1516628
Ты говоришь, что знаешь ассемблер. Человек, который знает ассемблер - должен знать архитектуру процессоров устройств, под которые пишет код. Я это предполагал в тебе. А это значит, что въехать в архитектуру какой-то субд на ее прикладном уровне - как обоссать 2 пальца такому гику. Я уже молчу, что ты, видимо, еще и поиском пользоваться не умеешь. Вот такое парадоксальное мнение о себе ты у меня вызвал, потому и не понял тебя.
Аноним 09/11/19 Суб 00:04:01 1516657183
>>1516650
Мнение среди кого? Среди бомжей на помойке? Зачем метать бисер перед свиньями?

мимкрок
Аноним 09/11/19 Суб 00:06:11 1516659184
>>1516648
Соглы, а теперь распиши тот пост >>1516252
по-зумерски и без совковых терминов
Аноним 09/11/19 Суб 00:09:31 1516663185
>>1516657
Какое имеет значение "среди кого"? Ты жопой читаешь? Или хочешь лишний раз выплеснуть своего токсичного омежку наружу? Уебывай давай, мимокрок...
Аноним 09/11/19 Суб 00:18:11 1516667186
>>1516440
Ты в принципе рассуждаешь в верном ключе.
Например про подзапросы, конечно это будет дольше, чем просто прочесть из таблицы, будет лишний запрос по индексу.

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

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

После нормализации, тебе стоит почитать про денормализацию, и то для чего ее применяют)
Аноним 09/11/19 Суб 00:27:51 1516673187
>>1516633
Ахахахаха
Школьник никак не успокоится
Да всем похуй, что ты ни хуя не понял
Одной макакой больше, одной меньше, всем насрать
Тебе никто тут ничего не пытается объяснить
Просто забавно наблюдать за твоими прыжками и ужимками
Продолжай
Аноним 09/11/19 Суб 00:29:16 1516676188
>>1516650
>Человек, который знает ассемблер - должен
Смотрите, двачер рассказывает, кто ему что должен
Пиздец, опять каникулы, что ли?
Аноним 09/11/19 Суб 00:31:29 1516678189
изображение.png (503Кб, 480x360)
480x360
>>1516676
да тут весь тхреад каникулы, я кажется понял почему он тонет.
Аноним 09/11/19 Суб 00:33:42 1516679190
>>1516676
>>1516678
Семен Семенович, может перестанете вонять итт?
Аноним 09/11/19 Суб 00:35:48 1516683191
изображение.png (1173Кб, 794x798)
794x798
>>1516673
Да не рвись ты так пенсия, тебе внуков надо нянчить, а не на желтом сайте сидеть.
Аноним 09/11/19 Суб 00:47:25 1516691192
Почему общаясь с большинством тех кто в SQL полез и читая их вопросы в интернете, создается впечатление, что в этот самый SQL лезут какие-то отбитые и ленивые люди? Индексы не юзают, строить БД так чтобы можно было отследить изменения во времени не умеют, а если им построят нормальные люди, то написать запрос который отобразит нужные данные в конкретный период времени не смогут и все в таком духе. Сколько вы хоть зарабатываете-то? Уверен, что немало. Так делаете свою работу нормально. Что в этом сложного-то? Выучил как декомпозировать сущность до третьей нормальной формы, научился включать индекирование, включил его для наиболее часто запрашиваемых данных, переодически перестраиваешь индексы, и напиши пару хранимок, которые попросят, чтобы не приходилось какой-то ужас из тащить на сервер, ну и посмотри план выполнения запроса, найду узкие места и подумай как оптимизировать запрос, чтобы не приходилось по всей таблице бегать и искать что ты там найти хочешь, вот все что от большинства из вас надо. Нет, блядь, даже этого сделать не можете.
Аноним 09/11/19 Суб 00:48:50 1516694193
tom-kruz-mem-sm[...].jpg (39Кб, 500x333)
500x333
>>1516691
А нахуя, если и так платят?
Аноним 09/11/19 Суб 00:53:29 1516695194
>>1516691
Какие курсы посоветуешь посмотреть, чтобы научиться всему этому?
Аноним 09/11/19 Суб 01:14:19 1516705195
>>1516683
Ахахахахаха
ты ни хуя не понимаешь, что в треде написано, а рвусь я
пиздец, у школьников говна в череп налито.
Тебя-то видно, как нянчили, бггг
Аноним 09/11/19 Суб 01:15:40 1516706196
>>1516691
>строить БД так чтобы можно было отследить изменения во времени не умеют
чо-чо?
изменения чего во времени?

давай послушаем, как ты версионируешь ERD, может, чего почерпну от умного человека
Аноним 09/11/19 Суб 01:17:08 1516709197
>>1516695
ПОСМОТРЕТЬ?
"Спокойной ночи, малыши" иди посмотри, блядь
Аноним 09/11/19 Суб 01:27:43 1516715198
>>1516691
Не раскачивай тут лодку, кто-то должен наговнокодить, чтобы за исправление потом хорошо заплатили
Аноним 09/11/19 Суб 02:55:58 1516735199
>>1516706
> изменения чего во времени?
Ну пропустил кусок про изменение значения какого-то поля. Условно, на простом примере, есть цена на товар. Вот есть тебя есть таблица "Товары", там есть баклажан, сегодня рубль стоит, завтра два, через год три, для анализа может быть полезно иметь информацию сколько стоил это баклажан 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
Аноним 09/11/19 Суб 04:44:12 1516743200
>>1516735
не понял магии с баклажаном
ты встречаешь людей, которые не знакомы с типом date, или что?
Аноним 09/11/19 Суб 08:48:47 1516766201
>>1516709
Не понял, объясни...
Аноним 09/11/19 Суб 13:24:10 1516828202
>>1516691
>Что в этом сложного-то?
Тем временем вопрос о самом простейшем запросе так и остается открытым более сотни постов. >>1516554
Аноним 09/11/19 Суб 15:46:34 1516917203
>>1516828
Потому-что вопрос ебланский.

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

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

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

Все эти вещи очевидны, если имеешь хоть малейшее представление, о внутреннем устройстве базы.
Нихуя не разбираются, ебланские вопросы задают, еще и вякают поьом что-то
Аноним 09/11/19 Суб 15:56:30 1516929204
>>1516828
Там два вопроса.
Ни один не является вопросом про запрос.
Один - вопрос про реализации в разных БД.
Второй - какая-то хуйня на суржике, которую кроме тебя никто не понимает.
Как результат - никому на хуй не сдалось на них отвечать.
Аноним 09/11/19 Суб 17:55:12 1517038205
>>1516917
>Что в твоем понимании атомарная операция? Вопрос показывает полное не понимание принципов ACID.
То что у одного слова могут быть разные значения в твою тупорылую бошку не лезет? Ясно что подразумевалось не атомарное из ACID, а то что в нормальной реализации количество строк должно храниться в одной переменно и из нее браться, а если есть другие реализации это просто запредельное ебланство. Т.е. я просто хочу узнать сколько строк у меня в таблице и все виснет нахуй / задумывается на несколько минут - вот это заебца придумали. Неужели есть ебнутые думающие что это не супер хуево?
Аноним 09/11/19 Суб 17:56:23 1517039206
Аноним 09/11/19 Суб 17:57:27 1517042207
>>1516929
>твой вопрос - не вопрос
Ясн я привык уже
Аноним 09/11/19 Суб 20:39:40 1517182208
>>1517038
Так возьми и сделай нормальную реализацию, хули ты пиздаболишь тут, еблана кусок. Возьми и напиши свою реляционку, с правильной реализацией, где количество строк хранится в переменной, раз все такие мудаки тупые и до тебя гения не додумались. Так ты усрешься блять.
Дибилоид тупой, я еще угадывать должен, что ты подразумевал из множества значений? Сука, мудак, не можешь вопрос сформулировать нормально, зато критик архитектур и решений нихуевый.
И еще, додик-недоучка, операция чтения переменной, может быть не атомарной, в зависимости от разрядности архитектуры и размера меременной.
Лучше свою энергию на обучение направляй, а не на дешевые выебоны
Аноним 09/11/19 Суб 20:40:06 1517185209
>>1517038
Так а в чем проблема? Считаешь количество строк сам и записываешь куда тебе надо (тоже сам)
Аноним 09/11/19 Суб 22:10:51 1517265210
>>1517042
Так ты не привыкай, а учись нормально формулировать свои глупые мысли.
Аноним 09/11/19 Суб 22:14:56 1517271211
>>1517039
Ахахаха
mysql

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

Классика!
Аноним 09/11/19 Суб 22:16:01 1517272212
>>1517038
>рррряяяяя, я использую слова не так, как все, а вы все мудаки, раз не можете отгадать!

Чо-то ни хуя не удивлен, что у таких ебланов проблемы с сиквелом.
Аноним 10/11/19 Вск 19:20:34 1518005213
Screenshot1.png (86Кб, 1535x896)
1535x896
Screenshot2.png (23Кб, 992x525)
992x525
Хочу изучить 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
Аноним 10/11/19 Вск 19:51:04 1518044214
>>1518005
Так у тебя нет такой базы, откуда ей взяться? Её сначало нужно залить в бд скриптом, или прикрептить через оснатску.

Не лезь блядь дибил сука ебанный
Аноним 10/11/19 Вск 19:52:51 1518048215
>>1518044
Если база уже ГАРАНТИРОВАНО есть, вначале пишешь
USE HR
Аноним 10/11/19 Вск 22:34:28 1518145216
>>1518048
Тебе русским языком напиали, что речь идет про Оракл, а не про говномускул.
Хули ты лезешь с советами, если даже вопрос прочесть не можешь?
Аноним 10/11/19 Вск 22:35:03 1518146217
>>1518005
>Захожу sql developer и пишу:
Кем заходишь-то?
Аноним 10/11/19 Вск 22:36:25 1518148218
Аноним 10/11/19 Вск 22:54:03 1518165219
>>1517271
>говно говна
В свитеромирке ничего другого и нет. Или кто то серьезно считает что разработчики с гитхаба тупее местной пидорвы и не взвесили плюсы и минусы делая выбор.
Так же то что любое говно слепленное на коленке вроде монги может ворваться в этот свитеромирок и захватить значимую долю - какбы весьма красноречиво говорит о многом.
>>1517272
>сиквелом
Так говорят только ебнутые.
Аргумент что так когда то лет пятьдесят он на самом деле назывался и полоумные деды за ебаных пятьдесят лет никак не могут перестроиться и упорно делают вид что так правильно - аргумент ебнутых.
Кстати, отлично демонстрирует уровень умственных способностей свитероблядей.
Аноним 10/11/19 Вск 23:15:33 1518205220
>>1518165
Ты ответы через генератор случайных чисел пишешь?
Аноним 11/11/19 Пнд 01:21:09 1518314221
image.png (663Кб, 1024x1024)
1024x1024
>>1518165
Не устаю проигрывать с этого дауна
>свитер
>свитер
>свитеромирок
>Так говорят только ебнутые.
Аноним 11/11/19 Пнд 09:53:16 1518434222
1379502562830.jpg (40Кб, 403x403)
403x403
Чем Hadoop отличается от mysql?
Аноним 11/11/19 Пнд 10:27:56 1518440223
>>1518434
Эм, первая вебфреймворк, второе субд, не?
Аноним 11/11/19 Пнд 11:41:09 1518479224
>>1502870 (OP)
Хай двачата, помогите плиз с моим траблом:
Столкнулся с тем, что сайт невозможно редактировать. Кидает страшную ошибку "Software error:...". Оказалось база данных сайта переполнена. С помощью phpmyadmin я оптимизировал таблицы, но результата это не дало. Я полный чайник, искал инфу у гугла, но толковых мануалов не нашёл. Есть две таблицы на 1.5 и 1.3 гига: phpbb3_search_wordmatch и phpbb3_posts. Я нагуглил что первый это что-то связанное с индексом поиска, а второе сообщение на сайте. Как их почистить, есть мануалы?
11/11/19 Пнд 12:09:13 1518491225
>>1518440
> Hadoop
> вебфреймворк
Ты поехавший?
Аноним 11/11/19 Пнд 15:30:57 1518605226
изображение.png (40Кб, 518x395)
518x395
изображение.png (39Кб, 1317x488)
1317x488
изображение.png (6Кб, 678x212)
678x212
изображение.png (16Кб, 873x352)
873x352
>>1518146
под админа (если я правильно понимаю)
При установке, прикл 1 попросил придумать пароль. Потом пошел в прикл 2. Там вылазит прикл 3 вылазит окно, туда соответственно SYSTEM и пароль что вводил на прикл 1 при установке. Потом прикл 4. Там все сделал, ввел все тот же пароль при установке (чтоб мозги не ебать) и по этому всему подрубался через sql developer
Аноним 11/11/19 Пнд 15:35:19 1518607227
изображение.png (33Кб, 926x608)
926x608
>>1518146
в продолжение к >>1518605

сейчас тыкался и нажал некоротое дерьмо и вылезло окно, там есть знакомое слово HR. Так если я выберу его и поставлю галочку над "Use Existing", у меня заработает?
Аноним 11/11/19 Пнд 15:51:30 1518615228
>>1518434
дебил бляд загугли нахуй
Аноним 11/11/19 Пнд 15:53:52 1518620229
изображение.png (52Кб, 929x739)
929x739
попробывал и нихуя
Аноним 11/11/19 Пнд 15:58:24 1518623230
изображение.png (68Кб, 1268x797)
1268x797
>>1518620
вот тут получилось а через девелепер я хз
Аноним 11/11/19 Пнд 16:23:20 1518641231
>>1518605
зайди, блядь, юзером HR и перестань нам ебать мозги

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

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

ALTER SESSION SET CURRENT_SCHEMA = <schema name>

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

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

раз ты заходишь системом, посмотрел бы сразу, что у тебя там в схеме hr
может, там и впрямь, ни одной таблицы, а пустая схема
Аноним 11/11/19 Пнд 16:24:32 1518644232
Аноним 11/11/19 Пнд 19:40:33 1518816233
>>1518641
да все блять, через Toad for Oracle получилось, не ебу почему через ссаный девелепер не вышло, но собственно похуй уже на него
Аноним 11/11/19 Пнд 19:42:10 1518818234
>>1518641
но за ответ спасибо
Аноним 11/11/19 Пнд 20:10:16 1518853235
Аноним 11/11/19 Пнд 21:19:29 1518930236
>>1518479
Надеюсь не на шинде сидишь?
Покажи больше логов
Аноним 11/11/19 Пнд 23:06:54 1518990237
>>1518479
Не надо чистить эти таблицы. Ощущение, что они нужндля нормальной работы.
Посмотри лучше, сколько места занимает transaction log.
Аноним 12/11/19 Втр 12:41:00 1519252238
>>1518479
>phpbb3_posts
>1.3гига
Ебааааааааать. Это сколько вы там на форуме напиздели? 1.3 гига текста? Это же опизденеть как дохуя.
Аноним 12/11/19 Втр 16:08:54 1519394239
>>1519252
Ну вообще то у нас форума-то нет))0))0)
Он не рабочий...
Аноним 12/11/19 Втр 17:50:37 1519434240
>>1517042
Чувак, ты в каком-нибудь ебучим си-треде так вопрос задай, очередь к твоей матери метров на 10 выстроится.
Аноним 13/11/19 Срд 02:27:34 1519829241
>>1519778
>кококо, почему вместо того, чтобы пересчитать число оно пересчитывает число?
Ты какой-то ебанутый
Аноним 13/11/19 Срд 08:33:28 1519890242
>>1518620
попробывал твою мамашку
нирикамендую!
Аноним 13/11/19 Срд 23:08:34 1520505243
Аноним 14/11/19 Чтв 11:08:28 1520709244
>>1519890
У нее просто owerflow уже
Аноним 14/11/19 Чтв 13:37:06 1520904245
Бля реляционку учить или ноСКЛ сук.
смотрел примеры CRUD в сравнении с муськой и монгой, на SQL показалось логичнее, чем на json
Аноним 14/11/19 Чтв 14:06:55 1520932246
>>1520904
не учи ни то, ни другое
пиши в файл, не иди на поводу у хайпа
Аноним 14/11/19 Чтв 14:26:42 1520955247
>>1520932
Да я бы с радостью в csv файлы писал, но требуют, суки.
Аноним 14/11/19 Чтв 18:21:45 1521149248
>>1520904
Азы скл и дальше носкл
ТЕМА ДЛЯ ДИПЛОМА Аноним 14/11/19 Чтв 19:00:19 1521183249
0щд0.jpg (150Кб, 1698x1131)
1698x1131
>>1502870 (OP)
Сап.
Входные данные: Хороший SQL, нормальный PL/SQL, знаю прилично теорию по проектированию/ нормализации и все вот эти реляционные вещи ( практический опыт тоже есть) Работа тоже с этим связана.
Заканчиваю вузик по Информационной безопасности, хотелось бы как можно больше связать его с БД, но нет ни одного препода на кафедре, кто мог бы помочь с темой, собсна возьмут только если поставлю конкретную тему сам
На ум приходит только разработка-проектирование бд и системы защиты информации и дать права/роли юзерам и зашифровать айдишники, но это больше на курсач максимум тянет, чем на ВКР.
Короч, ПОКИДАЙТЕ ИДЕЙ ДЛЯ ВКР ПО БД + ИБ
Или может почитать чего интересного по этой теме
Аноним 14/11/19 Чтв 19:11:01 1521193250
>>1521183
>Хороший SQL, нормальный PL/SQL
Ай насмешил
Аноним 14/11/19 Чтв 19:14:43 1521200251
>>1521183
Аналатичиские сервисы\кубы\проектирование хранилища данных
Не лезь дебил ебанный блядь
Аноним 14/11/19 Чтв 19:15:52 1521202252
123.jpg (127Кб, 406x600)
406x600
Антуаны поясните за звеоздообразный джоин, желательно с примером.
Аноним 14/11/19 Чтв 19:27:38 1521213253
>>1521193
что?
ну еще шарп и питон, суть в том что я по иб нихуя не знаю)))
Аноним 14/11/19 Чтв 19:38:23 1521219254
>>1521200
Ты про OlAP ? и чем эта модель больше связана с ИБ чем OLTP?
Мне бы скорее что то по админству СУБД
Аноним 14/11/19 Чтв 20:24:34 1521249255
>>1521219
А тебе прям непременно с ИБ нужно? Ну хз тогда что можно высрать по ИБ, шифрование, политика пользователей+прокси, огнестена, на курсовую не тянет как по мне. Хули там админить, то хуяк, пиздык и в продакшен....Разве что запилить отдельные таблицы аудита и сделать тригеры, ну что-то это всё развлечения уровня ебли осла с табуретки.
Аноним 15/11/19 Птн 21:37:24 1522105256
Аноним 16/11/19 Суб 16:30:14 1522683257
15657803101590.jpg (37Кб, 500x442)
500x442
Аноны, а что-нибудь из топовых курсов помимо sql-ex есть? Или его достаточно с головой будет, просто может за это время придумали еще чего поинтереснее.
На sql-ex просто дрочить учебник и решать задачки?
Аноним 16/11/19 Суб 17:08:01 1522712258
Аноним 16/11/19 Суб 18:34:05 1522771259
>>1522683
Я вот этого смотрю, хорошо объясняет
https://youtu.be/cRoTc8ONWSQ
Там еще один курс есть. Sqlex сделано совсем уж из говна и палок, у меня глаза от него вытекают.
Аноним 16/11/19 Суб 21:53:31 1522915260
Почему в интернете так дохуя курсов про основы, типа SELECT'ов, что такое индекс и как делать джоины, но нихуя толком нет кроме сухих статей про более глубокие вещи типа эксплейнов, хинтов, правильному обслуживанию и выбору индексов итд?
Аноним 16/11/19 Суб 22:17:32 1522924261
>>1522915
> основы, как делать джоины
Ti tam ohyel??
Аноним 16/11/19 Суб 23:01:02 1522950262
>>1522924
Я про то что это вообще такое и как одну таблицу к другой прихуячить
Аноним 17/11/19 Вск 13:17:17 1523138263
Помогите найти тему для магистратской работы!

Есть желание замутить что типо бд для хранения изображений/видео/аудио для мамашиного обучения с ETL, но не знаю как сформулировать тему, какие актуальные таски, проблемы, есть в этой области, которые можно решить. Можете что-нибудь порекомендовать? Какую-нибудь статью, которая, к примеру, рассматривает интересные задачи по компьютерному зрению или речевому распознаванию?
Аноним 17/11/19 Вск 13:25:15 1523143264
Аноны, помогите :(
Не могу понять, как смоделировать таблицы с ключами для лекарств и их аналогов, которые являются одним и тем же полем. Пользователю по 1 лекарству можно смотреть множество аналогов.
Аноним 17/11/19 Вск 13:38:28 1523155265
>>1523143
Вынести лекарство и его аналоги в отдельное отношение?
>>1523138
Чью мамашу ты обучать собираешься?
Аноним 17/11/19 Вск 15:03:24 1523237266
>>1523155
Твою конечно. Всем тредом её обучаем продвинутой техники горлового минета.
Аноним 17/11/19 Вск 15:33:14 1523276267
изображение.png (13Кб, 556x822)
556x822
>>1523143
Эм, а в чём трабл?
Либо если таблица небольшая, просто все в одну пихать, а потом фильтровать. Либо составной ключ.
Аноним 17/11/19 Вск 19:02:34 1523478268
>>1523143
а нельзя бахнуть одну таблицу для лекарств, просто всем добавить колонку "аналог", которое будет иметь запись ID лекарства в той же таблице, аналогом для которого является это лекарство?
мимо
Аноним 18/11/19 Пнд 10:15:53 1523872269
animals.png (13Кб, 692x282)
692x282
>>1502870 (OP)
Ребятки-котятки, есть вопрос. В общем, есть такая схема состоящая из 4 таблиц. У нас есть таблицы владельцев, абстрактных животных, котиков, собачек. Котики и собачки являются подмножеством животных, если смотреть в ооп, то они наследуются от класса животных. Так вот, собственно говоря вопрос, как на уровне бд ограничить у одного владельца котов одного цвета. Если бы в таблице cats был бы owner_id, то я просто бы сделал составной уникальный индекс из полей owner_id и color, но owner_id доступен только в связанной таблице animals. Как решить этот вопрос? Либо я говно у меня архитектура говно (если так, предложите что нибудь лучше), либо можно как то сделать составной индекс с полями из связанных таблиц, а я и не знаю?
Аноним 18/11/19 Пнд 11:03:13 1523876270
Стоит ли использовать ORM, если в базе данных и не пахло ни какими нормальными формами? Стоит ли пердолиться и настраивать классы, которые кое-как сгенерит маппер? Или проще просто сделать вручную нужные классы для нужных сущностей, которые предполагается дёргать из базы и вручную запилить в этих классах обращения к sql серверу?

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

Что посоветуете?
Аноним 18/11/19 Пнд 12:09:04 1523909271
Аноним 18/11/19 Пнд 13:12:28 1523950272
image.png (31Кб, 696x393)
696x393
Аноним 18/11/19 Пнд 16:01:13 1524054273
>>1505350
ну все же может поздно, но стоит упомянуть что threads это отдельная таблица, привязанная к постуно не важно.

я нашел куда удобнее вариант чем то что ты написал, а именно select posts where in (select id from threads limit ?) -> сортировка на стороне сервера (не дб)
Аноним 18/11/19 Пнд 17:53:02 1524161274
Аноним 18/11/19 Пнд 18:48:36 1524205275
>>1524161

Дык в русской википедии есть статья про схему звезда. Или тебе не это нужно? Или там не понятно?
Аноним 18/11/19 Пнд 20:32:36 1524264276
>>1524205
Хм, и правда есть, спс. Чуть подробней бы.
Аноним 18/11/19 Пнд 23:06:11 1524358277
>>1523876
Что-что.
Попробовать воспользоваться orm, если fk все есть, и посмотреть через профайлер, какие запросы орм генерирует. Если калл, то ебашь сам руками.

Аноним 18/11/19 Пнд 23:08:25 1524362278
1E403A76-CDE4-4[...].png (290Кб, 2048x1536)
2048x1536
>>1521202
Что ты подразумевешь под звездообразным джойном?
Такое даже не гуглится, блжад.
Что это?
Cross join?
Организация основной таблички типом «звезда», чтобы потом джойнить справочники только на нее?
Аноним 19/11/19 Втр 00:18:01 1524406279
>>1524358

Нету fk. Вообще нет ни одного. Хотя в таблицах есть поля типа table1_id которые по задумке автора ссылаются на примари ключ id таблицы table1, но самого ключа нет и создать его нельзя. Если я буду юзать orm, то это получается что мне всегда нужно будет аккуратно программировать хули там эта орм сохраняет и обновляет, чтобы база по пизде не пошла. Вот и думаю, может ну его, написать просто классы модели вручную и вручную закодить там загрузку и сохранение в базу.
Аноним 19/11/19 Втр 01:46:01 1524428280
>>1523950
А если ты хочешь подыскать аналоги аналога?
Аноним 19/11/19 Втр 10:59:04 1524530281
>>1524428
Разве есть проблемы? Аналоги - есть лекарства и наоборот.
Аноним 19/11/19 Втр 14:38:15 1524641282
>>1524530
Извини, не сразу дошло, что у тебя в названии препарата могут и аналоги быть
Аноним 19/11/19 Втр 18:19:14 1524767283
Народ,хелп:

Найти производителей, которые выпускают более одной модели, при этом все выпускаемые производителем модели являются продуктами одного типа.
Вывести: 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


ПОд ответ подгоняется, на проверочной базе фейлит.
Аноним 19/11/19 Втр 18:37:30 1524781284
>>1524767
За такое кривое форматирование, тебе нужно руки поломать, чтоб ты никогда больше не писал ничего.
Аноним 19/11/19 Втр 20:37:39 1524868285
>>1524406
Если у тебя нет fk, не совсем понимаю, как орм будет работать, если только ты там где-то в конфигураторе пропишешь это. entity Framework, например, так не умеет, насколько я знаю.
Аноним 19/11/19 Втр 21:25:29 1524894286
Аноним 19/11/19 Втр 21:45:27 1524911287
>>1504513
Там может быть какой-нибудь NFS и из за этого оно будет тормозить.
Аноним 21/11/19 Чтв 17:37:15 1526094288
>>1524054
Ни хуя не понял, но рад за тебя.
Аноним 21/11/19 Чтв 20:13:36 1526208289
image.png (52Кб, 1599x251)
1599x251
Как сделать так чтобы выводилась только вторая запись? Можно ли как-то сделать метод IN строгим, чтобы он выбирал из тех записей, которые строго соответствуют заданным параметрам?
Аноним 21/11/19 Чтв 21:55:54 1526259290
>>1526208
А что не так с 1 и 3 записями?
Аноним 21/11/19 Чтв 23:56:25 1526321291
>>1526259
Мне нужно вывести запись второго типа то есть: чтобы там были параметры и 'lorefriendly' и 'big', а он выводит вообще все подряд, где встречаются это параметры. Как это можно реализовать при связи многие ко многим? Пытался через AND перечислять, так он никакие не выводит.
Аноним 22/11/19 Птн 00:18:40 1526339292
>>1526321
Заджойни по олдскулу и расставь скобки, как-то так.
select * from t1,t2,t3 where (t1.zalupa = t2.zalupa_id and t1.huita = t3.huita_id) and t1.tag in('tag1', 'tag2');
Аноним 22/11/19 Птн 16:42:47 1526839293
хуле у вас шапки нет?
Как вкатится по нормальному? Посоветуйте книгу
Аноним 22/11/19 Птн 21:39:20 1527111294
>>1526839
SQL не нужен, уёбывай в макакинг
Аноним 22/11/19 Птн 21:56:08 1527124295
>>1524362
>Организация основной таблички типом «звезда», чтобы потом джойнить справочники только на нее?
Это.

Ну со звездой вроде по совету анона прочитал на вики, теперь не могу снежинку вдуплить. Если у звезды просто инерр джоин во все поля, то со снежинкой неясно, чем она отличается?
Аноним 23/11/19 Суб 00:39:47 1527213296
>>1527111
>SQL не нужен, уёбывай в макакинг
ЧСВшное мудило, конечно, ведь sql так сложнее js, да?
Аноним 23/11/19 Суб 10:36:38 1527349297
>>1527213
Мне, как знающему sql на пятерку, но так и не осилившему front, например, кажется, что нет.
Аноним 23/11/19 Суб 11:19:41 1527365298
Посоветуйте как вкатиться, мне он нужен для бэкенда, какую-нибудь книжку или видео курс, который поможет разработчику быстро освоить нужный минимум по работе с базами данных
Аноним 23/11/19 Суб 11:22:29 1527368299
>>1527365
как вкатиться в sql

fix
Аноним 23/11/19 Суб 12:10:48 1527399300
Аноним 23/11/19 Суб 13:00:07 1527449301
Аноним 25/11/19 Пнд 23:19:13 1529641302
>>1511264
Привет. Не писал, только использовал logminer. Гуглится redo log dissecting, но статья старая.
Аноним 26/11/19 Втр 01:16:04 1529686303
>>1529641
Угу, нашел какую-то дедовскую статью для 9 версии, дай бог здоровья людям.
Заголовки файла и магические числа вроде совпали для 12. Правда под винду все. Сами данные тоже локализовал, и описание длинны полей. С текстом просто, а вот числа довольно интересно хрянятся, суммы чисел умноженых на десятки в квадрате. Не могу пока с заголовком записи разобраться, длину ее найти, целиком. Все руки не доходят
Аноним 26/11/19 Втр 01:42:42 1529690304
0.jpg (55Кб, 627x393)
627x393
Есть БД, и есть задача Вывести список всех пользователей, у которых за год с момента их регистрации (Users.RegistrationDate) было совершено более 30 транзакций в валюте USD (WalletSections.Currency = 1).

Как правильно сделать выборку за период по времени с Users.RegistrationDate по (Users.RegistrationDate + 1 год)?
С остальными параметрами проще, но вот к периоду даже не знаю, как подступиться..
Аноним 26/11/19 Втр 09:08:29 1529765305
>>1529690
Разобрался
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
Аноним 26/11/19 Втр 13:14:37 1529935306
Как вкатиться, что читать¿
Аноним 26/11/19 Втр 14:46:25 1530022307
>>1529935
>Как вкатиться, что читать¿
sql-ex
Аноним 26/11/19 Втр 15:14:16 1530033308
Аноним 26/11/19 Втр 22:57:02 1530355309
1.jpg (55Кб, 627x393)
627x393
Господа, как вот к такому запросу:

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)
Аноним 26/11/19 Втр 22:59:47 1530360310
1.jpg (38Кб, 628x440)
628x440
Аноним 27/11/19 Срд 08:20:33 1530480311
Yellowroom-arti[...].jpeg (146Кб, 725x1340)
725x1340
Где почитать внятных материалов по этим вашим sql'ям, чтобы подготовиться к собесу? Всякие btree, составные индексы, уровни изоляции транзакций и всё такое я знаю (или думаю, что знаю), но вангую, что меня спросят какую-нибудь хуйню вида "а как вакуум в постгресе работает и чем он отличается от аналогичных процессов в innodb" (реальный вопрос, спросили как-то раз) и я в лужу сяду.
Аноним 27/11/19 Срд 09:04:16 1530494312
>>1530480
А куда и накого про вакуум спрашивали? Одно дело вопрос, что такое и для чего вакуум, а другое как работает. Да и тут могут бвть разные уровни детализации ответа. Для одного уровня достаточно доки, если подробнее, надо искать специализированные статьи или в исходники лезть. Боюсь по вопросам такого типа одного источника не найти, все нужно гуглить отдельно и иногда по исходникам
Аноним 27/11/19 Срд 09:29:40 1530506313
>>1530494
Да я просто разработчик и мне вообще непонятно, зачем мне знать про вакуум, если я не собеседуюсь на администратора баз данных. Я должен знать интерфейс базы данных и особенности работы с ней, чтобы эффективно её использовать, не более.
Аноним 27/11/19 Срд 11:37:05 1530558314
>>1530506
Ну если хайлод какой, то может быть полезно, хотя сам механизм работы все-таки непонятно для чего знать, в данном случае.
Аноним 27/11/19 Срд 11:52:28 1530561315
>>1530558
Ну это понятно. А какие популярные вопросы вообще есть про бд? У меня личный топ часто задаваемых вопросов (сеньор левел) - это что такое индекс, как он работает, как работает при сортировке, уровни изоляции и напишите какую-нибудь хуйню с тремя джоинами.
А самым сложным заданием было написать запрос, который из колонки, в которой хранятся числа (1,2,3,5,6,7,10) выведет промежутки ([1,3],[5,5],[6,7],[10,10]).
Аноним 27/11/19 Срд 11:58:31 1530563316
Появилась необходимость написать синтаксический анализатор для MS SQL запросов. Найти описание грамматики в каком-нибудь вменяемом виде не смог (желательно БНФ). Имеется ли таковое в открытом доступе?
Аноним 27/11/19 Срд 13:05:01 1530591317
15657803101590.jpg (37Кб, 500x442)
500x442
Аноны, посоветуйте плз годных бесплатных онлайн курсов по SQL (или книг). Учебник на sql-ex периодически падает на полчаса - час, чет херово это, когда почитать хочешь.
Знаю на W3C есть, но он вроде совсем для нубасов - так получить общее представление, хотелось бы что-нибудь посолиднее.
Guuwvd 12312312 27/11/19 Срд 17:19:04 1530835318
Ywgsgfs
Аноним 27/11/19 Срд 19:01:07 1530982319
Предположим есть таблица "Сотрудники". И есть таблица "Отделы". Отделы-сотрудники - 1 ко многим. Куда мне запихнуть поле "Начальник отдела", где указывается айди сотрудника, ведь в этом случае появляется дополнительное отношение 1 к 1, что тупо?
Аноним 27/11/19 Срд 19:39:16 1531012320
>>1530982
Сделай поле должность
Аноним 27/11/19 Срд 19:41:00 1531019321
>>1531012
То есть не поле, ну ты понял
Аноним 27/11/19 Срд 19:58:16 1531039322
Аноним 27/11/19 Срд 19:58:32 1531040323
>>1531012
По сути я так и думал делать табличку "Должности" и там одна из строк типа "Начальник отдела", но, в общем, спасибо. Хотя и нагуглил вариант, про который выше написал, но он мне не нравится.
Аноним 28/11/19 Чтв 00:31:21 1531257324
>>1530561
Ну еще про типы джоинов, nested, merge, hash. Как работают, когда лучше использовать. Типы индесков.
Если по ораклу: хинты, redo/undo, direct path операции, методы доступа к данным (типы доступов по индексу, сканирования), партиционирование, тэйблспэсы, устройство памяти, pga, sga, локи.
Оптимизация в зависимости от типа базы, oltp или olap.
Postgres - тот же вакуум, но это скорее про то, каким образом acid поддерживается в базе. Как можно влиять на план выполнения без хинтов. По конкретно по пг больше вспомнить не могу.
По mpp, как работают бродкасты редистрибьюции. Какой ключ дистрибьюции лучше выбрать.
По sql не помню, давно уже не спрашивали. Доводилось строить план выполнения по продиктованному запросу.
Это конечно далеко не полный список
Аноним 28/11/19 Чтв 11:45:59 1531409325
>>1531257
Он явно в курсе происходящего в движках бд, двачую этого ораклиста.
Аноним 28/11/19 Чтв 11:47:42 1531411326
>>1531040
На уровне структуры у тебя получится так, что может быть много начальников. Чтобы этого избежать, надо в отделах сделать айдишник руководителя.
Аноним 28/11/19 Чтв 12:05:42 1531425327
>>1531411
Пф, а ещё айдишник заместителя руководителя, заместителя заместителя, бухгалтера и всех прочих, кто может быть один, ага. Проще уж constraint'ом задать уникальность для тэга.
Аноним 28/11/19 Чтв 19:10:05 1531761328
>>1531425
Ну ты спрашивал про руководителя.
Начальник всегда один у отдела.
А бухгалтеров и замов может быть сколько угодно.
Аноним 30/11/19 Суб 07:36:41 1533458329
Аноны, почему плейсхолдеры быстрее сабселекта?

В случае с плейсхолдерами мой запрос что то типо
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 секунд

Где я обосрался? Сами плейсхолдеры получаю тем, что написанно в сабселекте через другой запрос
Аноним 30/11/19 Суб 07:37:16 1533459330
>>1533458
чуть не забыл, субд: mariadb 10.4.10
Аноним 30/11/19 Суб 09:09:17 1533480331
>>1533459
>>1533458
Похоже индексы пофиксили проблему:
плейсхолды соснули, теперь сабселект берет одну секунду
Аноним 30/11/19 Суб 10:30:56 1533499332
>>1533480
>почему быстрее?
Открой план запроса же.

Второй запрос у тебя с САБСЕЛЕКТОМ написан просто ужасно, если что. Когда такое вижу, аж плохо становится.
Аноним 30/11/19 Суб 10:57:59 1533503333
>>1533499
> написан просто ужасно
почему?
Аноним 30/11/19 Суб 11:52:46 1533532334
Аноны, щас зарабатываю тем, что просто пищу всякие хранимки для отчётов в MS SQL, но есть желание развиваться, а конкретно - развиваться в Биг Дата и Хай Лоад, хочу изучать Hadoop, Spark, вот это всё. Во многих вакансиях, ко всему прочему, просят знания ETL, OLAP, DWH и прочей аналитики на SQL. Собственно, тут возникает вопрос, на чём мне лучше всего это изучать? Остаться на MS SQL или начать изучать Oracle? Какая СУБД более востребована на нашем рынке в Биг Дате и аналитике? дс2
Аноним 30/11/19 Суб 16:25:21 1533813335
>>1533532
На 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 впринципе и тут также очень пригодится
Аноним 30/11/19 Суб 16:53:14 1533827336
>>1533813
Спасибо за ответ, Анон

>На 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
После этого можно идти стучаться на галеры или нужно что то ещё?
Аноним 30/11/19 Суб 17:19:58 1533837337
>>1533827
Мне кажется просто он пидор с опенсорсом головного мозга. Я конечно хз чотам щаз в тренде, но BI на посгрес, звучит как анекдот.


А так и у мелкомягких и у оракла есть свои решений, и интерпрайз весь на них.
Аноним 30/11/19 Суб 17:42:35 1533856338
>>1533827
На текущий момент не видел и не слышал, чтобы кто-то строил или планировал хранилища на MS, задчи миграции с него на другие решения, да видел. С оракла тоже стараются уходить там где это возможно. Желания такие по крайней мере часто слышал.

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

По поводу знания конкретной базы: тут суть не в самой технологии, а в базовых навыках и понимании. Тебе это сильно пригодится для решения многих задач, если будешь работать базами в принципе. Не сильно важно какая база, просто нужно хорошо знать, как она работает.
Аноним 30/11/19 Суб 17:45:17 1533859339
>>1533837
Где ты увидел про BI на постгрес, еблан тупорылый?
Аноним 30/11/19 Суб 19:02:26 1533933340
>>1533856
>На текущий момент не видел и не слышал, чтобы кто-то строил или планировал хранилища на MS
Ну на HH просто дохуя вакансий по MS, в том числе DWH. У GreenPlum всего 5. Может на западе его активно юзают, но, похоже, не у нас.
>Достаточно, можно в принципе первое или второе изучить и начинать вкатываться, а остальную часть по ходу дела разбирать. Еще скриптовой язык не помешает, shell,python и работа с терминалом.
Python знаю, а насколько нужно уметь с терминалом работать? На Баше скрипты писать?

Кстати,а не знаешь какие-нибудь площадки, которые предоставляют огромные объёмы данных, на которых можно тренироваться?
Аноним 30/11/19 Суб 19:12:09 1533944341
>>1533859
Не рвись ты так красноглазый. Анон полный набор для BI в вопросе перечислил как бе.
Аноним 30/11/19 Суб 19:18:20 1533949342
>>1533532
Не поверишь, но лучше всего изучать сам SQL, тот же етл, по сути состоит из сплошных sql запросов чуть более чем полностью. Хранилка имеет свои нюансы конечно, но в целом это та же бд. В нагрузку можно учить mdx/dax. Вобще есть мнение что все уже вернулись от кубов к табличной модели.
Аноним 30/11/19 Суб 20:44:14 1533982343
>>1502870 (OP)
Кароче, есть необходимость сделать метрики для предприятия.
У предприятия часть необходимых данных хранится в 1С.
Хранение, очевидно, файловое.
1Сника у предприятия нет. Только-только уволился и ищут что-то новое.
Может кто подсказать, кто с 1С работал. Если я приду и скажу новому исполнителю который только пришел - хуяч мне SQL-сервак - он меня пошлет? Какие варианты есть еще тогда работы с бд 1С?
Или только заказывать csv у 1Сника с обновлением раз в сутки?
Аноним 30/11/19 Суб 20:50:38 1533985344
>>1533933
Нет не знаю, может аноны подскажут, по площадке с данными сам как-то искал и не нашел.
Скриптовой язык обычно требуется для датаинженеров, если в hadoop стек углубишься. Да глубокие знания не требуются, просто уметь.

Я думаю далеко не все вакансии по ms это dwh. Открыл первые три попавшиеся по dwh, ни слова про ms.
И сама по себе работа с базой, это не всегда работа с большими данными. Если хочешь прокачаться именно в этом направлении, ищи проекты с объемами баз от 50 терабайт примерно, где множество систем источников и приемников, множество процессов загрузи и выгрузки данных. Сотовые операторы, те же мэйлы и яндексы, авито, банки крупные, ресурсодобывающие организации.
Иначе попадешь в болото из 10 табличек, и 5 отчетов с сервером на локалке. Думаю вакансии по ms в большей степени как раз про это. Потратишь время зря.


Аноним 30/11/19 Суб 21:19:21 1534009345
>>1533982
Там в два клика 1с привязывается к базе данных. Так и говоришь, положи мне базу 1с в базу данных.
Аноним 30/11/19 Суб 21:22:55 1534012346
>>1534009
Как я понял сейчас у предприятия вообще никакой бд нет, только 1С. 1Сник сможет SQL-сервак на его выбор поставить? Мне не принципиально к чему запросы делать.
Или это вообще вне его компетенции?
Аноним 30/11/19 Суб 21:24:44 1534013347
>>1534009
Да но учти ставить и настраивать БД, это не работа 1сника, не исключено что он это умеет, но не обязан, так что может послать. Вобще серверами должен заниматься сисадмин. Он поднимает скуль, а 1сник просто указывет сервер-источник. Есть вариант на линуксе, которые бесплатны, но нужен человек который сможет настроить. Можно разово забашлять аутсорсерам чтоб сделали сервер, а потом 1сник пусть сам занимается.
Аноним 30/11/19 Суб 21:28:08 1534017348
>>1534013
Спасибо, значит сисадмина буду пытать или заплачу 1Снику.
Ох уж этот оутсорс.
Аноним 30/11/19 Суб 23:13:49 1534061349
Пиздец, еле как нашел ваш тред... Как работают транзакции? Касаемо mysql. Вот, например. Есть одно соединение с бд на сервере, которое обрабатывает запросы пользователей, они могут вставлять свои данные в бд. Но проблема в том, что они не могут вставлять одинаковые данные. Как разрулить эту ситуацию? Советуют использовать транзакции. Но в чем их суть? Вот, как это понимаю я:

Пользователь A хочет добавить 'хуй' и пользователь B тоже хочет добавить 'хуй'.
1 ситуация: они это делают в разное время. Перед вставкой в бд сначала происходит проверка на наличие вставляемых данных и если их нет, то выполняется вставка. Итог: пользователь A добавил 'хуй' в бд, пользователь B захотел добавить, не прошел проверку, был послан на хуй.
2 ситуация: оба пользователя делают это одновременно. Для каждого из них проверка выполняется успешно - 'хуй'я нет еще в бд, соответственно, они оба вставляют два 'хуй'я в бд, чего быть не должно. Окей, используем транзакцию. Вместо обычного
>INSERT INTO...
пишем
>START TRANSACTION
>INSERT INTO....
>COMMIT
Транзакция должна заблокировать таблицу над которой выполняются операции? И отработает только одна из них? Или вторая зависнет, дождется завершения первой, после чего выполнит себя повторно, вставив 'хуй' дважды? Или как? Или что?
Аноним 01/12/19 Вск 00:01:21 1534076350
>>1533985
>Иначе попадешь в болото из 10 табличек, и 5 отчетов с сервером на локалке. Думаю вакансии по ms в большей степени как раз про это. Потратишь время зря.
Ну сейчас я как раз на MS SQL работаю, и там в одной БД больше 1000 таблиц, а такая БД на сервере ни одна, да и инстанс тоже не один. А для бдшек с 10 табличками, по моему, MySQL используют, и врятли таким компаниям вообще DWH нужен.
Аноним 01/12/19 Вск 00:36:30 1534101351
>>1534061
Оба вставляют хуй, первый хуй вставляется с успехом, но второй уже не лезет. Соотвествено идет отмена первого хуя, оба пользователя ловят ошибку, не один хуй не вставлен. Образно говоря как логическое И, вставляются или оба хуя, или ни одного. Оба хуя должны быть в одной транзакции офк.
Аноним 01/12/19 Вск 00:39:32 1534102352
>>1534101
Ну и плюс пока хуй не вставлен, пользователь не получает сообщение о сукесе.
Аноним 01/12/19 Вск 00:41:48 1534103353
>>1534101
Что значит в одной транзакции? Я что-то не понимаю. Т.е. транзакции не решают мою проблему? Мне надо как-то разрулить одновременные попытки вставки одинаковых данных.
Аноним 01/12/19 Вск 00:58:13 1534109354
>>1534103
Перефразирую, транзакция обеспечивает выполнение запросов собранных в ней, т.е. если один из шагов рамках транзакции фейлится, отменяется вся транзакция.
Аноним 01/12/19 Вск 01:01:33 1534112355
>>1534109
В твоем случае просто используй With lock, чтоб лочить таблицу во время вставки
Аноним 01/12/19 Вск 01:01:36 1534113356
>>1534109
Ну, про это я читал. А что будет, если каждый из пользователей создает транзакцию? И не просто создает, а они одновременно их создают?
Аноним 01/12/19 Вск 01:07:40 1534115357
>>1534112
Если я правильно понял, как только пользователь запишет что-то, то второй запишет после. Это никак не решает мою проблему с одновременной вставкой, ибо проверка уже прошла для обоих и сказала, что данные можно вставлять.
Аноним 01/12/19 Вск 01:12:32 1534116358
>>1534115
А в чем проблеиа? Второй запрос ничего не запишет и вернет ошибку, как если бы он изначально не мог вставить, т.е. для пользователя разницы нет. Если у тебя списывается из таблице А и записывается в таблицу Б, то вот это и собирай в транзакцию.
Аноним 01/12/19 Вск 01:21:02 1534118359
qw.png (53Кб, 1506x784)
1506x784
>>1534116
Нет, мне нужно просто, чтобы данные не дублировались. Я в одном из тредов уже писал про это, но там мне не сильно помогли. Проблема на пике.

А with lock нужно в транзакциях использовать? Блять, я запутался...
Аноним 01/12/19 Вск 01:23:37 1534119360
Аноним 01/12/19 Вск 01:26:50 1534120361
>>1534119
А вобще зависит от бд, гугли свю бд на lock/lock table
Аноним 01/12/19 Вск 01:29:45 1534124362
>>1534119
Не надо пока этих томов только, плиз... Я сейчас хочу понять, в том ли я направлении вообще думаю. И я не уверен, что вы вообще поняли что я хочу. Это первое. Второе. У меня mysql, толку от этих конструкций, их может и не быть.

Я хочу понять: две транзакции, они как-то блокируют друг друга? Вот одновременно их отправили на исполнение.. В обеих только вставка однотипных данных. Но какая-то из них все равно будет принята на исполнение быстрее. Так вот та, что быстрее начнет выполняться, она запретит остальным транзакциям выполняться?
Аноним 01/12/19 Вск 01:31:18 1534125363
>>1534124
Да. Она залочит таблицу и все остальные пойдут нахуй, пока она не выполнится.
Аноним 01/12/19 Вск 01:32:38 1534126364
>>1534125
А когда она выполнится, что будет? Залоченные транзакции начнут постепенно выполняться? Или они уже ВСЕ?
Аноним 01/12/19 Вск 01:35:33 1534127365
>>1534118
Если иебе нужно, чтобы одинаковые данные не вставлялись, напиши запрос так, чтобы если хуй уже есть, то его вставлять не надо. В ms sql для этого есть merge.
Если merge нет, пиши insert если хуя нет, и update, если хуй есть.
И создай на табличку unique constraint на поле, в которое хочешь вставлять хуй, чтобы прям на уровне бд разруливать эти вопросы.
Аноним 01/12/19 Вск 01:37:26 1534128366

>>1534126
Конечно, они выполнятся.
Аноним 01/12/19 Вск 01:40:20 1534130367
>>1534127
Не получится, потому что хуй может быть и не уникальным по своей природе, но разным по длине.
хуй 25
хуй 14
хуй 6
- все это нормально, но
хуй 25
хуй 25
хуй 14
хуй 6
- не может быть. Поэтому unique запретит мне много хуев разной длины добавлять.
Аноним 01/12/19 Вск 01:42:00 1534132368
>>1534126
Нет, они посыпятся с ошибкой когда увидят что база залочена. В майскуль есть отдельная функция lock. Но как писал анон выше мне кажется в твоём случае нужно действавать иначе, например добавить If exist какой-нибудь, чтоб оно проверялось перед вставкой, и уже в зависимости от результата действовал.
Аноним 01/12/19 Вск 01:42:48 1534134369
Аноним 01/12/19 Вск 01:43:24 1534135370
>>1534130
Забыл добавить: тут может быть еще и пизда со своей глубиной, по этому второй столбец тоже не может быть unique, ибо не получится записать
хуй 15
пизда 15
Аноним 01/12/19 Вск 01:48:43 1534136371
>>1534130
Очевидно, задача на примере хуев и пезд - плохая задача.
Сформулируй понятнее, что тебе нужно, но уже сейчас видно, что транзакции - вовсе не то, что тебе нужно использовать для ее решения.
Ты можешь сделать уникальный индекс по нескольким полям, если что.
Аноним 01/12/19 Вск 01:51:57 1534137372
>>1534136
Два чаю этому, для начала определи какие атрибуты тебе нужны для определения уникольнной позиции. Может вобще стоит нормализовать и хуи с пездами растащить по разным таблицам
Аноним 01/12/19 Вск 01:53:23 1534138373
>>1534136
А вдруг он пишет магазин для взрослых?
Аноним 01/12/19 Вск 01:53:49 1534139374
>>1534136
Окей, номер игровой сессии и сервер на котором она проходила. Может быть
gameId serverId
1 2
2 2
5 2
1 1
1 3

Мне лишь нужно, чтобы 2 юзера не сделали такую хуйню (на самом деле их сколько угодно может быть, дубликаты вообще не нужны)
gameId serverId
1 2
1 2
Аноним 01/12/19 Вск 01:55:34 1534142375
>>1534139
Create unique nonclustered index IX_t_game_server on t_game_server (game_id, server_id)
Вот и все
Аноним 01/12/19 Вск 01:57:13 1534143376
>>1534142
Эм, а при чем тут индекс?


мимокрок
Аноним 01/12/19 Вск 01:58:33 1534144377
>>1534143
Не уверен, что констейнт можно ра 2 поля создать, пишу с айпада, проверять негде. А индекс точно можно.
Аноним 01/12/19 Вск 02:03:05 1534145378
>>1534139
Композитный ключ же.
Ну будет индекс, а чо это даст?
Аноним 01/12/19 Вск 02:03:46 1534146379
Аноним 01/12/19 Вск 02:06:01 1534148380
>>1534146
>уникальный
Он даст тебе гарантию, что в твоей табличке не будет 2 строк с одинаковыми server_id и game_id

В твоем случае будет так:
Первый юзер заинсертит пару (1,1)
Второй юзер попытается заинсертить пару (1,1), и субд его пошлет, выдав ошибку (такая пара уже есть в табличке, хуй тебе)
Аноним 01/12/19 Вск 02:11:33 1534149381
>>1534148
Я так понимаю, это >>1534142 надо при создании таблицы указывать? И сработает ли такое в mysql? Пока проверить не могу, сейчас уйду. Завтра посмотрю про это подробней. Сразу спрошу, с таким ключом использование первичного бессмысленно? И еще: такие ключи сильно ударят по размеру бд?
Аноним 01/12/19 Вск 02:14:55 1534150382
>>1534148
Хм, не знал что индексы и так работают, думал все это история для ускорения запросов. Я не тот анон с хуями, но за инфу спасибо.
Аноним 01/12/19 Вск 02:16:51 1534151383
>>1534149
Ты можешь сделать primary key по этим 2 колонкам, но это не рекомендуется, потомучто ссылаться на такую таблицу будет заебно.

Так что первичный ключ лучше юзать на автоинкрементную колонку.
В mysql сработает.
Сильно ли ударит по размеру бд?
Нет, не сильно. Но имей в виду, что индексы имеют свойство фрагментироваться, так что их периодически надо реорганизовывать или перестраивать.
Аноним 01/12/19 Вск 03:15:47 1534161384
>>1534061
Почитай про это:
Dirty read
Read commited
Serializable read
Аноним 01/12/19 Вск 03:28:09 1534163385
>>1534076
Ну я поэтому и написал, "в большенстве случаев".
Предполагаю, что проекту около 10 лет или более. В общем выбор не типичный.
Аноним 01/12/19 Вск 06:07:21 1534189386
>>1533827
>Да и на HH почти во всех вакансиях, в которых упоминается DWH, требуют MS SQL, а тот же GreenPlum упоминается только в пяти вакансиях. Так в чём его преимущество?
>
бля, где пять то?
В ДС на hh по greenplum сейчас 65 вакансий. И вакансия greenplum уже подразумевает DWH, потому что он больше нигде не используется.

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

Если хочешь вкатываться в DWH и Hadoopы, можешь просто ходить на собеседования. Просто пишешь знаю основы DWH/Hadoop, хочу вкатиться. Знаю хорошо реляционку. В болшинстве мест спрашивают только реляционку и если она ок, то берут и на месте прокачивают. Ну если ты конечно не на синьора претендуешь.
Чем сидеть год абстрактно читать книжки, можно устроиться гораздо раньше и на месте выучить гораздо больше вместе с практикой.
Аноним 01/12/19 Вск 12:05:22 1534398387
>>1534142
Не знаю, что-то я для 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}')`;
Этой проблемы уже нет, но я не уверен что постоянно блокировать таблицу в моем случае правильно. Поэтому как можно решить проблему первого способа? Или же лучше транзакции оставить? Вообще, я в них могу засунуть сотни запросов, которые зависят друг от друга, что будет гарантировать целостность бд.
Аноним 01/12/19 Вск 12:38:37 1534471388
>>1534398
>фиктивное увеличение ключа
типа последний инкрементальный id был 3, а следующий при инсерте будет не 4, а 5?


>затем я с помощью транзакций
Не видно, что ты управляешь в запросе изоляцией транзакий - это во-первых
Во-вторых, я вообще не понимаю, что ты собираешься делать при помощи транзакций. Вот тебе простой пример того, как у тебя все сломается:
1. Инсертишь ты такой строку в базе, блокируя табличку.
2. И тут у тебя отваливается соединение с сетью. А транзакцию ты не закоммитил.
3. Все остальные сессии, заблокированные первой, будут висеть, пока подвисшая транзакция не будет закоммичена, то есть венчо.
Аноним 01/12/19 Вск 13:25:13 1534553389
>>1534471
>а следующий при инсерте будет не 4, а 5?
Да

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

>Все остальные сессии, заблокированные первой, будут висеть, пока подвисшая транзакция не будет закоммичена, то есть венчо.
Это же как-то должно решаться?
Аноним 01/12/19 Вск 13:32:10 1534562390
>>1534553
У транзакций можно настроить время блокировки
Аноним 01/12/19 Вск 13:39:28 1534572391
>>1534398
Вроде это решается через констейнт по сути то же самое что и индекс, но проверяет перед вставкой, во стальном работает так же.
Аноним 01/12/19 Вск 13:40:15 1534573392
>>1534562
Т.е. лучше делать с транзакциями без того составного ключа, но с проверкой на уже записанные данные + настраивать время блокировки, чтобы не было вечно висящих транзакций?
Аноним 01/12/19 Вск 14:25:12 1534645393
>>1534573
Вот тебе решение, индекс на 2 поля оставь, по нему поиск будет работать.
И используй свой запрос для вставки с «where not exists».
Все.
Аноним 01/12/19 Вск 14:26:37 1534647394
>>1534645
Так я же описывал проблему, которую надо тоже решить >>1534553 Тут-то как поступить?
Аноним 01/12/19 Вск 14:30:16 1534652395
>>1534647
Мне нужно, чтобы данные все гарантированно записывались. Т.е. либо все, либо ничего. Чтобы в случае с всевозможными сбоями в БД не было говна.
Аноним 01/12/19 Вск 14:43:14 1534667396
>>1534553
>>1534652

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

Но не забудь, что в таком случае ты должен разообраться с тем, что такое Rollback и как отлавливать ошибки.
Вот тут написано
https://stackoverflow.com/questions/30973002/try-catch-in-mysql-for-transaction
Аноним 01/12/19 Вск 14:59:40 1534700397
>>1534667
А rollback для чего, если при возникновении ошибки транзакция и так не выполнит commit? И все же, как тут писали:
>Вот тебе простой пример того, как у тебя все сломается:
>1. Инсертишь ты такой строку в базе, блокируя табличку.
>2. И тут у тебя отваливается соединение с сетью. А транзакцию ты не закоммитил.
>3. Все остальные сессии, заблокированные первой, будут висеть, пока подвисшая транзакция не будет закоммичена, то есть венчо.
С этим как бороться? Вот так?
>У транзакций можно настроить время блокировки

Или лучше как-то иначе? Я бегло прочитал про какие-то ACID транзакции, которые выступают промежуточными, как я понял, между пользовательскими транзакциями, что дает возможность БД отлавливать зависшие транзакции и самой их разруливать как-то. Но это жрет дохуя ресурсов сервера, места на носителе информации и оперативной памяти. Короче, у меня есть чувство, что я лезу куда-то не туда и сам создаю себе проблемы.
Аноним 01/12/19 Вск 15:10:10 1534721398
>>1534700
rollback и нужен для того, чтобы завершить транзакцию и все следующие, заблокированные ей, могли выполняться.

Бля, просто прочитай про транзакции.
Аноним 01/12/19 Вск 15:12:59 1534727399
>>1534721
Я читал и там было написано, что rollback нужен всего навсего для отката изменений. Поэтому я не очень понимаю, как он связан с зависшей транзакцией после сбоя работы бд.
Аноним 01/12/19 Вск 15:32:21 1534765400
>>1534189
>бля, где пять то?
В дс2
Зато если искать по запросу DWH, то почти в каждой вакансии пишут о разработки хранилищ на MS SQL
Аноним 01/12/19 Вск 15:42:13 1534781401
>>1534765
Да такой же срач: грин пульм или мс скл, блжад, да похуй, вообще.

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

По факту, абсолютно неважно, что ты там юзаешь, главное - принципы построения хранилищ понимать.
А реализация - сколько не ходил по собесам, всем похуй на опыт использования какой-то конкретной программы, если не умеешь, научат.
Аноним 01/12/19 Вск 16:35:18 1534842402
>>1534765
>В дс2
а ну тут ты попал в просак. На хоронища смысл идти только в большие конторы, там может быть 300к/сек.
А все большие конторы базируются в МСК, я имею ввиду энтерпрайз. В Питере есть разве что газпром-нефть, газпром(?), а дальше хз.
Тебя могут взять в сбер в Питере, но само хранилище в мск и ты будешь как бэ на вторых ролях всегда.

>Зато если искать по запросу DWH, то почти в каждой вакансии пишут о разработки хранилищ на MS SQL
это дрочь конторы, в которых мало денег
Аноним 01/12/19 Вск 20:03:51 1535090403
>>1534842
лол, ты там ему уже карьеру построил, сразу на ведущего разработчика с 300к\наносек, все сидят и ждут, только его не хватает.
Аноним 01/12/19 Вск 20:26:59 1535145404
ClickHouse норм или гавно собачье?
Аноним 01/12/19 Вск 20:31:52 1535150405
tom-kruz-mem-sm[...].jpg (39Кб, 500x333)
500x333
>>1535145
>разрабатываемая компанией Яндекс
А сам то как думаешь?
Аноним 01/12/19 Вск 21:03:50 1535194406
>>1535145
норм, но надо обычно знать еще кучу попенсорс говна, которое вокруг
Аноним 01/12/19 Вск 21:33:49 1535247407
uXvod3Sv0kU.jpg (73Кб, 401x604)
401x604
Анука быстро и решительно посоветуйте хорошую книгу по SQL для вкатывания.
Аноним 01/12/19 Вск 22:25:39 1535338408
>>1535090
Да, ждут, толковых спецов в этом направлении не так много, а тех кто готов еще и все трудности кровавого энтерпрайза героически преодолевать, так и подавно.
Аноним 02/12/19 Пнд 00:50:05 1535494409
>>1535247
Ну, я читаю Алан_Бьюли-Изучаем_SQL-Символ-Плюс(2007).pdf Вроде, норм. Еще Бейли Л. - Изучаем SQL (Бестселлеры O'Reilly) - 2012.pdf неплохая. Если совсем даун, то лучше с нее начать, имхо. Там даже картиночки есть.
Аноним 02/12/19 Пнд 01:07:20 1535499410
>>1535494
>то лучше с нее начать
Наоборот, короче
Аноним 02/12/19 Пнд 01:09:15 1535500411
>>1535499
Блять... Короче, все правильно я тут написал >>1535494
Надо идти спать...
Аноним 02/12/19 Пнд 01:25:54 1535504412
изображение.png (516Кб, 552x650)
552x650
>>1535494
Ебать там страх во второй книге. Страх и ненависть в SQL
А первую дыбану, спс.
Аноним 02/12/19 Пнд 19:10:53 1536090413
>>1535504
Помню другую книгу из этой серии не стал брать только из за того что там какой то урод был изображён.
Аноним 02/12/19 Пнд 20:42:04 1536129414
Стек LAMP все еще востребованг?
Аноним 02/12/19 Пнд 21:13:34 1536167415
>>1536129

Да, но апач почти нет.
Аноним 02/12/19 Пнд 21:24:40 1536178416
>>1536167
Нжинкс вместо него? Он сложнее в освоении?
Аноним 02/12/19 Пнд 21:35:49 1536184417
>>1536178

Да, он. Я бы не сказал, что сложнее.
Аноним 03/12/19 Втр 05:03:29 1536335418
можно ли ограничить колво записей для айди, который лежит в wherein?
ну допустим

select * from foo where id in bar, bar2

допустим на каждый из них дает 10, а нужно три (какой нить дистинкт с лимитом мб?)
Аноним 03/12/19 Втр 08:10:03 1536344419
Аноним 03/12/19 Втр 14:52:39 1536567420
Аноним 03/12/19 Втр 14:57:51 1536575421
Аноним 03/12/19 Втр 16:09:49 1536690422
Аноны, задача такова - запросом дописать в определенном количестве текстовых ячеек, в которых текст разной длины, в конце строки дополнительную информацию.
Подскажите пожалуйста как это реализовать?
Т.е. есть "столбец" с тектстовыми ячейками. В них нужно дописать доп данные.
Аноним 03/12/19 Втр 16:17:09 1536696423
>>1536690
Не совсем понял что ты хочешь, но наверное RIGHT
Аноним 03/12/19 Втр 21:30:55 1537049424
.jpg (39Кб, 802x528)
802x528
Какой ответ правильный и почему?
Аноним 03/12/19 Втр 22:32:02 1537113425
>>1537049
Что такое one off by error, я не понял.
Но логично, что клиент не знает, когда перестать опрашивать, так что придется спрашивать до тех пор, пока запрос не вернет кол-во строк меньше, чем указано в LIMIT. Ну и, как я понимаю, если в таблице число строк кратно указанному в LIMIT (1000), например, 2 тыщи, то тебе придется 3 раза выполнить запрос вместо 2, чтоб понять, что больше ничего нет.
Аноним 03/12/19 Втр 22:42:34 1537126426
>>1533827
>В общем, благодаря тебе у меня примерно сформировался стэк в голове, который мне нужно изучить:
>1) hadoop - yarn - spark
>2) postgres + GreenPlum
>После этого можно идти стучаться на галеры или нужно что то ещё?
Это как бы два разных профиля. Учи либо первое, либо второе. Я с командой работаю на хадупе, так про гринплюм только слышал. Коллеги работают чаще с ораклом.
Аноним 03/12/19 Втр 22:57:27 1537134427
>>1537113
>Что такое one off by error, я не понял.
https://en.wikipedia.org/wiki/Off-by-one_error
Тут я полагаю намекается, что оффсет может быть некорректен.

> Но логично, что клиент не знает
Я отбросил этот вариант, потому что с моей точки зрения клиент знает, когда прекратить, как раз благодаря описанному тобой способу.
Аноним 04/12/19 Срд 18:45:12 1537634428
>>1537134
Пошёл нахуй, пидарас
Аноним 04/12/19 Срд 22:02:08 1537752429
>>1537126
>Это как бы два разных профиля. Учи либо первое, либо второе. Я с командой работаю на хадупе, так про гринплюм только слышал. Коллеги работают чаще с ораклом.
Блэт, ну я так понял Hadoop нужен что бы просто кучу данных собрать, а GreenPlum и прочие DWH нужны, что бы данные было проще анализировать. И для того, что бы перетащить данные из Hadoop или реляционки в DWH строится ETL. По крайне мере в вакансиях на Дата Инженера требует знания как Hadoop, так и OLAP с DWH. SQL тоже. Хуй знает, чем там в реальности нужно будет заниматься.

Кстати говоря, обязательно ли для освоения Hadoop арендовать сервак с огромным HDD(SDD)? А то брать больше 30Г как то жаба душит, может для обучения и их хватит?
Аноним 04/12/19 Срд 22:47:49 1537783430
Аноним 04/12/19 Срд 23:32:11 1537831431
>>1537783
Нагулил что у них есть бесплатный сервак на год, ну там как раз 30ГБ, это хватит?
Ещё я слышал, что если занять места больше 30ГБ или нагрузить сервак сильнее дозволенного, то у тебя деньги начнут снимать, без спроса.
Аноним 04/12/19 Срд 23:55:46 1537840432
>>1537831
Это в любом случае дешевле, чем покупать себе нахуй не нужный сервак.
Аноним 05/12/19 Чтв 00:03:29 1537844433
>>1537840
А вдруг я за ночь заполнится диск на несколько террабайт и придёт счёт на 1000 долларов. И что делать?
Аноним 05/12/19 Чтв 00:07:53 1537846434
>>1537844
Так это ведь пиндосия, а ты в пидорашке. Что они тебе сделают? Посадят? Штрафанут? Счёт в сбере залочат?
Аноним 05/12/19 Чтв 00:13:49 1537847435
>>1537049
Вот тут
https://use-the-index-luke.com/no-offset
читал что offset это медленна и вообще так нельзя. У меня просто в голове не укладывается по-моему это какой то полный пиздец. Но такое впечатление у меня от всего свитеромирка так что.. просто оставлю свои пять копеек, может это кому то будет полезным.
Аноним 05/12/19 Чтв 07:30:54 1537936436
>>1537752
>Hadoop нужен что бы просто кучу данных собрать
собрать и обработать. Попробуй провести матчинг 2-5 таблиц в оракле, не наебнув там все. В хадупе же ты просто меняешь размер контейнера в зависимости от объема данных и все.
>Кстати говоря, обязательно ли для освоения Hadoop арендовать сервак с огромным HDD(SDD)? А то брать больше 30Г как то жаба душит, может для обучения и их хватит?
Нет. Поставь себе виртуальный сервак, погугли дистрибутив cloudera VM quickstart
Тебе не нужно дома для обучения 3 петабайта. Наполни 3-5 таблиц 10 стоками и напиши на скале проект, который матчит данные из них в новую таблицу, сбилди джарник и залей в VM, запусти, посмотри в ярне как работает. На этом можешь закончить. Я на деве тем же самым занимаюсь. Хорошо, если в таблице 50 строк, а не 0, как бывает. А на проде там терабайты лежат, вполне себе.
На собезе расскажешь, уже плюсом будет.
Аноним 05/12/19 Чтв 08:41:23 1537943437
>>1533827
Не верю, что на галерах нужен хадуп и прочая аналитика, это же продуктовая тема. На галерах просто реляционки или простенькие in-memory kv типо редиса или мемкеша для кеширования.
Аноним 07/12/19 Суб 14:53:36 1540032438
>>1533827
Если хочешь опыта набраться и вкусить всю прелесть хранилищ, сюда попробуй влезть хотя-бы стажором, чтоб на жилье хватало и жрачку, пол года-год пересидеть.
Сам туда пойду скорее всего
https://hh.ru/vacancy/32678281
Аноним 07/12/19 Суб 14:56:26 1540034439
>>1540032
В продолжение. Хранилище только начиначет строится. А это самый смак, на все грабли наступить, самое оно. Плюс там куча интеграций и ораклы и хадупы. Я думаю работы там года на 3 не меньше
Аноним 07/12/19 Суб 14:57:41 1540035440
>>1537752
Hadoop это распределенный таскер по сути.
Огромный storage для изучения - абсолютно не нужен.
Аноним 07/12/19 Суб 19:56:01 1540384441
>>1540032
Сбер плохое место для начала карьеры.
Аноним 07/12/19 Суб 21:05:37 1540462442
Аноним 07/12/19 Суб 21:46:09 1540497443
>>1540384
От проекта очень много зависит и начальства.
Аноним 07/12/19 Суб 21:49:45 1540499444
>>1540384
Но да, там довольно жостко может быть. Кровавый энтерпрайз во всей красе
Аноним 08/12/19 Вск 00:26:59 1540614445
>>1540032
Блэт, нихочу в москву ехать, я в дс2 уже нормально устроился и щас всё сначала начинать. Охуенно, чо. Да и из текущей галеры я щас свалить не могу.
Аноним 08/12/19 Вск 11:20:03 1540751446
>>1540614
Ну смотри сам, я для себя вообще режим кочевника выработал - год два на проект, и на съебы. По моим наблюдениям, вся веселуха обычно на старте, потом когда решение стабилизируется начинается болото: скрамы, митинги бесконечные, однотипные задачи.
Аноним 08/12/19 Вск 14:59:19 1540915447
>>1540462
>>1540497
>>1540499
Потому что там есть ограничения на карьерный рост и на рост зп. Вас не могут апнуть больше, чем на какой-то процент от вашей зп в год.
Туда надо идти на ведущие позиции.
Аноним 08/12/19 Вск 16:41:53 1540999448
Аноним 08/12/19 Вск 17:04:58 1541015449
Аноним 08/12/19 Вск 17:08:19 1541017450
>>1541015
да это ваще пздц
Можно устроиться и потом месяц выбивать себе рабочее место

Я слышал историю как чувак так и не успел получить себе комп до увольнения
Аноним 08/12/19 Вск 17:09:37 1541019451
>>1541017
>Можно устроиться и потом месяц выбивать себе рабочее место
Ну, зп же платят.
Аноним 08/12/19 Вск 17:51:08 1541085452
>>1541019
Охуенный ты опыт там приобретешь

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

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

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