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

Ответить в тред Ответить в тред
Распределённый транзакционный баз данных тред /sql/ Аноним 19/08/20 Срд 14:20:47 17816281
15847366478540.jpg 9Кб, 400x400
400x400
Очередной баз данных тред,
в котором мы
-Выслушиваем, почему в шапке по-прежнему отсутствует инфа для вкативания
-Разбираемся, почему PostgreSQL - не Oracle
-Пытаемся понять, зачем нужен Тырпрайс, если есть бесплатный опенсурс
-Обсуждаем, какие новые тенденции хранения данных появляются в современном цифровом обещстве
-Решаем всем тредом лабы для заплутавших студентов и задачки с sql-ex для тех, у кого завтра ПЕРВОЕ собеседование
-Анализируем, как работает поиск вконтакте
-Игнорируем конкаренси-шизика, не понимающего, зачем базы данных нужны
-И просто хорошо проводим время, обсирая чужой код, не раскрывая, как писать правильно

Поехали!

Предыдущий тонет здесь: >>1638710 (OP)
Аноним 19/08/20 Срд 14:25:30 17816402
Перекатил вашу хуйню.
Аноним 19/08/20 Срд 15:03:08 17816863
15896402741520.jpg 311Кб, 764x1080
764x1080
Аноним 19/08/20 Срд 16:49:42 17818764
а оракл девелопер только по регистрации можно скачать?
Аноним 19/08/20 Срд 16:57:03 17818835
>>1781876
Зарегайся с 10-минутной почти, и скачивание сразу начнётся по ссылке.
Аноним 19/08/20 Срд 16:59:16 17818866
>>1781883
Окей, спасибо
Для пользования не надо авторизироваться в программе?
Аноним 19/08/20 Срд 17:11:09 17819017
Аноним 19/08/20 Срд 17:44:59 17819538
1597848298173.jpg 34Кб, 676x672
676x672
Я спокоен как удав.
19/08/20 Срд 17:45:32 17819559
>>1781953
Бля, тредом промахнулся.
Аноним 20/08/20 Чтв 04:21:44 178228510
Есть простые и готовые решения по натягиванию ЮЗЕР ФРЕНДЛИ интерфейса на определенные таблицы? Для добавления строк и редактирования существующих. Чтобы ещё можно было настроить доступ, какие столбцы можно редактировать. Типа редактора в pgadmin, но для ОПЕРАТОРА ЭВМ. Проще и меньше свободы. Не хочу делать лишнюю работу по созданию редактора таблиц, если есть что-то подходящее.
Аноним 20/08/20 Чтв 04:32:57 178228811
Аноним 20/08/20 Чтв 04:33:46 178228912
Аноним 20/08/20 Чтв 04:36:53 178229013
>>1782289
Мне бы для постгреса.
Аноним 20/08/20 Чтв 04:45:14 178229114
А, вроде можно с постгресом.
Аноним 20/08/20 Чтв 09:36:04 178240715
шо у нас тут есть люди с сертификатами оракла?
Аноним 20/08/20 Чтв 10:17:04 178242716
>>1782407
почему ты думаешь, что люди с сертификатом могут быть чем-то полезны в интернете?
Аноним 20/08/20 Чтв 10:18:52 178242917
Candidate-Appre[...].jpg 90Кб, 641x427
641x427
>>1782285
так и не делай, лол.
Используй google spreadsheets. Данные в программу закачивай через веб в виде csv. Результаты тоже через api в гугл-таблицы выдавай.
Аноним 20/08/20 Чтв 11:27:40 178249118
>>1782427
Мне интересно как повлияла ачивка на трудоустройство и прочее
Аноним 21/08/20 Птн 08:54:05 178355619
>>1782491
С каких пор у дб господ проблемы с трудоустройством?
Аноним 21/08/20 Птн 09:35:35 178357520
>>1783556
с того самого момента как функции ДБА может выполняет любой нетупой программист?
с того самого момента, как государственное ИТ,где смотрели бы на сертификаты, стало скопищем долбоебов, а деньги платят лишь на зарубежных галерах?
Аноним 21/08/20 Птн 09:52:52 178358121
image.png 9Кб, 668x223
668x223
image.png 13Кб, 668x223
668x223
Аноним 21/08/20 Птн 09:54:55 178358322
image.png 13Кб, 668x223
668x223
Это серьезно такие зп при 30 годах опыта?
Аноним 21/08/20 Птн 09:55:17 178358423
image.png 9Кб, 354x198
354x198
Аноним 21/08/20 Птн 14:49:05 178397424
А есть какой-то читшит по базовым вещам sql?
Предстоит собес на жуниор дата инженера.
Аноним 21/08/20 Птн 23:39:35 178449025
Оптимизаторы, что будет эффективнее в постгрес?
1 вариант) Таблица A: столбец id инт, столбец b_id - массив интов. Таблица b: столбец id int. Нужно поджоинить по элементам массива b_id таблицу b по индексам.

2 вариант) Таблица А, таблица Б: столбец id - инт. таблица С: столбец a_id int, столбец b_id int. Ну и через таблицу С джоиним таблицу Б.

Массив интов не меняется, как и таблица С.
Что думаете по этому поводу и почему?
Замеры провести не получается =(. Не умею я это делать
Аноним 22/08/20 Суб 00:57:10 178455726
Аноним 22/08/20 Суб 00:59:13 178455927
>>1784557
Мне кажется, разворачивание массива затратнее. Да и выглядит второй вариант лучше.
Аноним 22/08/20 Суб 02:29:07 178460128
Вот бы айти тяночку эххх
Аноним 22/08/20 Суб 09:15:23 178466829
изображение.png 217Кб, 300x245
300x245
>>1784601
откуда вы блять лезите
Аноним 22/08/20 Суб 12:55:41 178475930
>>1784490
С джоинами конечно второй вариант, реляционные субд для таких вещей и придумали
Аноним 22/08/20 Суб 13:24:24 178477431
Аноним 25/08/20 Втр 13:28:25 178753632
Как реализовать одним запросом подсчет однородных данных (цены) по интервалу (5000)?
Т.е. сделать select с разбивкой на этот интервал на всю таблицу (до 5000; 5000-10000; 10000-15000...)
Я не работал с SQL ранее.
Пожалуйста помогите.
Аноним 25/08/20 Втр 15:46:20 178771733
>>1787536
сгенерировать таблицу интервалов и заджоинить
Аноним 25/08/20 Втр 15:55:26 178772334
>>1787717
или делить на 5000 и смотреть целую часть, и на основании этого ставить метку. Смотря что там в исходных данных и какой конкретно результат нужен.

Аноним 25/08/20 Втр 16:42:45 178778135
Нужен ли в каждой таблице столбец id, выполняющий исключительно роль первичного ключа, если эту роль может выполнять столбец реальных данных? На stackoverflow топовый ответ — нужны. Я вот думаю, что это ухудшает читаемость, больше запутанности, сложнее писать всякие джоины, длиннее запросы. С другой стороны, подобие юнификации. Ну и без id порядок вставки теряется — наверное, единственная потеря информации. А что думают пацаны с двача?
Аноним 25/08/20 Втр 16:48:18 178778736
Аноним 25/08/20 Втр 17:04:37 178781037
>>1787787
В новой таблице intervals_table делаешь два столбца start_interval и end_interval, заполняешь интервалами. Потом select * from prices_table join intervals_table on prices_table.price between intervals_table.start_interval and intervals_table.end_interval order by prices_table.price.
Аноним 25/08/20 Втр 17:08:38 178781638
>>1787781
лучше сделать доп поле id в каждой таблице, а на столбец реальных данных повесить индекс с уникальностью
Аноним 25/08/20 Втр 19:39:55 178796439
Аноним 26/08/20 Срд 00:22:59 178814540
>>1787781
Делаю первичные ключи любого типа, и даже многоколоночные. Большинство таблиц не-связок конечно всё-таки с числовым id, потому что в данных нет уникальности. Но там где можно, почему нет? Нахуя ещё одна колонка с индексом? Это очевидное васянство из разряда обязательной аббревиатуры типа в названии колонки.
Аноним 26/08/20 Срд 00:26:31 178814841
Добавлю, что числовой id может работать быстрее в джойнах. Первичный ключ следует выбрать таким, чтобы все внешние ключи на него ссылающиеся, занимали поменьше байт и соответственно легче проворачивались в оперативке. А если у тебя табличка такая, что никто на неё не ссылается, допустим токены какие-нибудь, то можно смело забить хуй и сделать строку с токеном первичным ключом.
Аноним 26/08/20 Срд 14:36:04 178870142
144542299817749[...].png 69Кб, 800x600
800x600
>>1787536
>>1787717
>>1787723
>>1787810
>>1787964 - просмотрел эту штуку, но я слишком toopoi неопытный гумманитарий для таких колдунств.

Вот к чему пристаковерфловил:
SELECT 5000 ( priceAmount / 5000 ) AS start_range,
5000
( priceAmount / 5000 ) + 5000 AS end_range,
count(*) AS COUNT
FROM price
GROUP BY priceAmount / 5000

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

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

По поводу создания временной таблицы интервалов:
Я не понял как это делать (пытаяюсь вызвать хоть что-то, ругается на селект из #таблицы, хотя она и считается созданной нормально), но придерживаюсь такой логики, что ее нужно заполнять для СТАРТовых от нуля + 5000, а для КОНЕЧных от 5000 + 5000 и заканчивать таблицу на максимальном значении цены + 5000 , которое есть в таблице с ценами.

Руками такую таблицу интервалов заполнять не вариант, а как вот это все вышеописанное зациклить хз.

Чет у меня от логики картинка
<
Аноним 26/08/20 Срд 15:37:12 178876943
>>1788701
DROP TABLE #tmp
CREATE TABLE #tmp
(ID INT IDENTITY(1,1),value_current int,value_next int)


DECLARE @step int
set @step=5000

WHILE @step < 9000000
BEGIN


INSERT INTO #tmp
(value_current,value_next)
VALUES (@step,@step+5000)
set @step=@step+5000

END;

SELECT *
FROM #tmp


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

Аноним 26/08/20 Срд 15:41:53 178877444
>>1788701
Кстати вот хороший вариант без всяких временных таблиц.

Select
Range as [Score Range],
Count(*) as [Number of Occurences]
from
Ranges r inner join Scores s on s.Score between r.LowerLimit and r.UpperLimit
group by Range
Аноним 27/08/20 Чтв 12:54:47 178960345
какой материал пощупать для вката в postgres уровень джуна? типо могу crud операции через консольку но хотелось бы за индексы пояснить
Аноним 27/08/20 Чтв 13:12:55 178964246
Сап.
Я вкатываюсь в джанго, отдельно sql не изучал, только поверхностно. Ну вот, создаю я бд для хранения бронирований в гостинице. В ней должны быть данные о клиенте (фио, емейл, телефон итд), дата его заселения, дата выезда, где он забронировался (сайт отеля, букинг итд), категория номера и цена. Я правильно понимаю, что у меня будет одна основная таблица со всем этим, но повторяющиеся данные вынесены в другие таблицы и связаны с основной через foreign key? То есть все данные о клиенте будут в таблице "клиенты" и в основной будет просто id из той. Источник брони и категории тоже.
Но вот до меня не очень допирает, а как собственно делаются запросы к таким бд? Вот если мне нужно вывести все данные о брони, что нужно прописать, чтоб взялись данные из таблиц, связанных внешними ключами? Я прост не знаю как загуглить, сорян, наверное тупой вопрос конечно.
Аноним 27/08/20 Чтв 13:15:10 178964647
Аноним 27/08/20 Чтв 14:10:42 178972548
Что-то не врубаюсь как именно работают AND и OR внутри JOIN-а

Вот есть у нас что-то вроде:
SELECT op_entries., op_entries_status.
FROM op_entries
LEFT OUTER JOIN op_entries_status ON op_entries.id = op_entries_status.op_id AND op_entries_status.order_id = 3

Я понимаю когда условие ON одно, что-то типо "ON table_1.id == table_2.key" но что означают эти AND и в особенности OR?
Аноним 27/08/20 Чтв 14:20:57 178973649
>>1789725
Ебать ты далбаеб братишка, шел бы лучше ямы копать.
Аноним 27/08/20 Чтв 14:22:53 178974350
>>1789736
?
Я с БД знакомился лишь год назад в универе, сейчас приперло разобраться почему некоторые query возвращают пустой результат. Что такого-то? Ты что ли сам с пеленок SQL ебашить начал?
Аноним 27/08/20 Чтв 14:24:32 178974651
>>1789725
Та же логика, что у where. Можешь считать это where подзапроса к второй таблице.
Аноним 27/08/20 Чтв 14:28:08 178975452
>>1789746
Или так, джойны в анси89:
select cheta from huita1, huita2 where huita1.fid = huita2.id and huita2.da = 1;
Аноним 27/08/20 Чтв 14:37:43 178977053
>>1789746
>>1789754
Хм, логично
А OR сюда как вписывается? SELECT table_1.name from table_1 JOIN table 2 ON table_1.address == 10 OR table_2.session == 4
Мы создадим JOIN со строками где выполняется одно (или оба) из этих условий?
Аноним 27/08/20 Чтв 14:52:44 178978654
Аноним 27/08/20 Чтв 15:29:16 178983055
>>1789743
Зашквар спрашивать элементарные вещи по базовым дисциплинам. Просто берешь и читаешь учебник. Там все ответы.
Sql - это абсолютно необходимое знание айтишника.
Аноним 27/08/20 Чтв 16:46:46 179002756
>>1789743
Так у тебя наитупейший вопрос, по простой бинарной логике. Если ты неспособен понять таких вещей или экстраполировать их на другую область, то лучше иди копай ямы или принтеры носи.
Аноним 27/08/20 Чтв 17:09:23 179006957
>>1789725
Оно просто проходит по каждому ряду. Если выражение в ON возвращает true - джойнит, иначе - не джойнит.
Аноним 27/08/20 Чтв 19:55:53 179021858
изображение.png 109Кб, 1537x900
1537x900
изображение.png 476Кб, 966x760
966x760
Аноним 28/08/20 Птн 09:04:02 179060959
изображение.png 15Кб, 374x63
374x63
изображение.png 7Кб, 493x52
493x52
Анончики, помогите!

Таблица в которую пишутся результаты распознавания имеет еще 2 колонки - foreign key с таблицами:
Project (пик 1)
Server (пик 2)

Нужно составить sql запрос, который выведет: дату(можно задать промежуток дат), результат распознавания (АО, человек, положительно-отрицательно), далее для каждого результата распознавания: кол-во за каждую дату (если указан промежуток), длительность всех аудио, проект и сервер.


Аноним 28/08/20 Птн 09:04:18 179061060
Аноним 28/08/20 Птн 09:24:25 179062261
>>1790609
Стесняюсь спросить, где поле с таймстампом в таблицах?
Аноним 28/08/20 Птн 13:47:03 179096762
изображение.png 5Кб, 613x40
613x40
>>1790622
Дико извиняюсь. Вот базовая таблица

и да, duration - тот самый стамп. сейчас форматну
Аноним 28/08/20 Птн 13:50:46 179097263
А вообще я правильно понимаю, что если мне нужно хранить временную длительность чего-либо в постгресе - мну нужен тип timestamp?
Аноним 28/08/20 Птн 13:52:49 179097464
Аноним 28/08/20 Птн 20:47:20 179142265
image.png 360Кб, 1494x556
1494x556
>>1790609
Вроде написал запрос. Только на синтаксис ругается, на запятую в 4 -й строке. Подскажите как пофиксить, пожалуйста
Аноним 29/08/20 Суб 09:17:49 179168766
изображение.png 1043Кб, 1146x643
1146x643
>>1791422
Я хуею, додик нашёл буратину который напишет ему запрос, а сам блядь даже запятую убрать не в состоянии
Аноним 29/08/20 Суб 19:16:54 179205367
>>1791422
шо за шрифт и цветовая подсветка
Аноним 30/08/20 Вск 23:36:41 179312668
Блядь почеум у вас шапки нет?
Как вкатываться то?
Аноним 31/08/20 Пнд 00:55:15 179321269
>>1792053
Шрифт, скорее всего, Hack, а подсветка - вот эта хуита: carbon.now.sh
Аноним 31/08/20 Пнд 06:50:30 179334670
>>1793126
Чел, мы тут тхреад не могли перекатить две недели, а ты о какой-то шапке спрашиваешь.
Аноним 31/08/20 Пнд 08:17:48 179337371
как будто бы на курсах учат перекатывать треды, че вы требуете от нас!!!!
Аноним 31/08/20 Пнд 17:47:18 179395972
Селект в радость, коммит в сладость, почаны.
Посоветуйте курс на ораклового ДБА нормальный, чтобы КОТИРОВАЛСЯ
Аноним 31/08/20 Пнд 18:29:10 179402573
>>1793959
проходил обучение здесь

orakl-dba-online.ru/register
Аноним 31/08/20 Пнд 18:53:15 179405874
Чем отличаются разные sql типа oracle или ms или ещё какие есть? Просто обёрткой? Или в самих запросах есть всякое разное?
Аноним 31/08/20 Пнд 19:25:10 179406775
>>1794058
Типа разные СУБД вообще. Если тебя конкретно запросы интересуют, а не внутрянка, то базовый SQL по спеке везде плюс-минус одинаковый, отличаются специфическими функциями. Работа со строками, с датами и т.д.
А вот если тебе нужно погромирование и SP, то тут кардинальные отличие начинается, погугли как выглядит pl-sql (oracle) и t-sql (mssql).
Аноним 31/08/20 Пнд 23:14:14 179423376
>>1794067
Да ну нахуй, процедуры везде одни и те же.
Аноним 01/09/20 Втр 01:35:26 179428877
>>1794233
Ага, функции в паскале и C++ тоже одни и те же.
Аноним 01/09/20 Втр 06:19:40 179441678
>>1789736
Ваши родители москвичи? Вы живете в столице?
Аноним 01/09/20 Втр 07:22:51 179443179
Подскажите литературу по OLAP DAX Power BI
Аноним 01/09/20 Втр 07:31:14 179443480
>>1794431
Не надейся особо на местных, тут редко что-то подсказывают или советуют.
Аноним 01/09/20 Втр 17:08:35 179495281
Аноним 01/09/20 Втр 17:41:09 179497882
Тут есть мамкины DBA? Какое поведение ожидать от 4-х БД вместо 1-ой БД при использованиия MySQL 5.7 Community? Нагрузка распределится или наоборот возрастет на инстанс mysqld?
Аноним 02/09/20 Срд 00:46:10 179518883
>>1794288
Аналогия не аргумент, мань.
Аноним 02/09/20 Срд 02:08:03 179520184
>>1795188
Лучше, чем голословное "процедуры везде одни и те же", мань.
Аноним 02/09/20 Срд 14:00:08 179541185
>>1794978
Твердый и решительный бамп
Аноним 02/09/20 Срд 21:25:28 179574786
Аноним 02/09/20 Срд 21:54:49 179576187
Ребята, поясните за pl sql, а конкретно за параметры in, out.
Теорию читаю, но не особо понятно.
Я так понимаю out можно вызывать из другой процедуры?
Аноним 03/09/20 Чтв 00:13:30 179581688
У меня есть массив id, id автоинкрементится и уникален. Надо найти все записи с этими id в таблице. Select * where id in array пройдется по всем записям, даже если нужно всего 3, например?
Как вытащить таргетно каждую запись за 1 запрос?
Аноним 03/09/20 Чтв 01:21:07 179584389
>>1795816
Если id у тебя ещё и primary key, то для него скорее всего создан индекс. Поэтому обхода всех записей не будет, каждая запись найдётся на O(logN).
Аноним 03/09/20 Чтв 07:14:29 179590790
>>1794978
ебанутый вопрос.
ты на одном и том же сервере раскидал таблички в разных БД?
или запустил 4 раза mysqld, но на одном сервере?

В теории, во втором случае МОЖЕТ возрасти параллелизм.
Но скорее, в твоем тупом случае, никак не изменится, только устанешь переписывать программы.
Аноним 03/09/20 Чтв 11:03:54 179606291
>>1794978
чего добиться то хочешь?
Аноним 03/09/20 Чтв 12:22:57 179616592
>>1796062
Есть application который состоит из нескольких модулей (могут быть запущены или не использоваться). Есть бизнес логика, разделенная в соответствие с задачами. Вот и хочу понять, есть резон все в одной схеме ебашть и засирать таблицами, которые могут быть просто мертвым грузом или же разделить на схемы в соответствие с модулями приложения)
проще говорят модули: A, B,C,D
И будет соответственно 4 БД на одном сервере: A_DB, B_DB, C_DB, D_DB. Проще будет дампы делать по идее и управлять правами.
Аноним 03/09/20 Чтв 12:23:51 179616893
>>1796165
Про нагрузку я уже понял, или интансы запускать или сосать писю, так как ынтерпрайз решение не дадут. Только PG как вариант
Аноним 03/09/20 Чтв 13:01:20 179620094
>>1796165
Просто клади в разные файловые группы. Процессор и память можно маштабировать бесконечно.
Аноним 05/09/20 Суб 13:04:02 179792895
1123.png 6Кб, 343x271
343x271
Как получить среднее кол-во чеков по дням недели?
Это для кол-во работает Select count(distinct(чек) as кол-во чек from t1 where = месяц
По логике я должен просто сделать так
Select AVG(count(distinct(чек)) as кол-во чек from t1 where = месяц
Или select avg(Select count(distinct(чек) as кол-во чек from t1 where = месяц) as GGG from t1
Хэлп ми
Аноним 05/09/20 Суб 13:28:23 179795496
>>1797928
Ещё нужен GROUP BY day_of_week.
Аноним 05/09/20 Суб 13:42:29 179796297
>>1797928
SELECT Месяц, ДеньНедели, AVG([Кол-во чек])
FROM govno
GROUP BY Месяц, ДеньНедели

то ли ты вобще какую-то хуйню наитупейшую спросил, то ли задания не понял
Аноним 05/09/20 Суб 13:43:01 179796398
>>1797962
* я задания не понял
Аноним 05/09/20 Суб 14:17:44 179798599
ййй.png 25Кб, 739x292
739x292
>>1797962
>>1797928
Кол-во чек подсчитывается как сумма уникальных значений
count(distinct № чек).
Теперь мне нужно сделать как среднее количество чеков за день недели. Например среднее кол-во чеков за все понедельники месяца 228, дальше среднее кол-во чеков за все понедельники месяца разбивка на магазины в первом 226 во втором 229 в третьем 250 и тд.
Аноним 05/09/20 Суб 14:24:35 1797987100
>>1797985
Я бы хотел сделать это все одним запросом, но как тупое решение нахожу создании новой таблицы в которой будет хранится кол-во чеков за период
Аноним 05/09/20 Суб 14:29:00 1797989101
>>1797985
А дни недели у тебя где-нибудь есть в таблицах, или только дата?


Аноним 05/09/20 Суб 14:38:08 1797991102
выв.png 9Кб, 554x290
554x290
>>1797989
Столбец Дата связан с таблицей Календарь, там хранятся дни недели. Дни неделю я джойню и группирую
Аноним 05/09/20 Суб 14:41:55 1797994103
>>1797991
with govno
as
(
SELECT Дата , COUNT(DISTINCT Чек) as Zalupa
FROM GOVNO
GROUP BY Дата
)

SELECT z.Месяц, z.Дата,z.ДеньНедели, AVG(Zalupa) as Zalupa
FROM GOVNO as g inner join ТАБЛИЦА_КАЛЕНДАЯ as z
on g.Дата=z.Дата
group by z.Месяц, z.Дата,z.ДеньНедели




Аноним 05/09/20 Суб 16:12:38 1798052104
>>1781628 (OP)
Манга по базам данным - нормальная вводная книга или лучше взять что-то более фундаментальное?
Аноним 05/09/20 Суб 18:19:24 1798133105
>>1796165
Ты не сможешь масштабировать или ускорить бд просто переименованием баз. Это не так делается.
Аноним 06/09/20 Вск 08:17:37 1798486106
dar51hn-ddc7103[...].png 4Кб, 193x239
193x239
Пиздос, открыл для себя блокировки строк при апдейтах. Оказывается можно схватить дедлок всего лишь с помощью транзакций и простых UPDATE, даже без субквери. Даже на классическом примере списали со счёта одного клиента, закинули на счёт другому.
Аноним 06/09/20 Вск 09:26:58 1798501107
>>1798486
И как же словить дедлок?
Аноним 06/09/20 Вск 09:41:44 1798507108
Аноним 06/09/20 Вск 10:02:01 1798510109
Как бэкапить базу mysql? mysqldump бэкап заливается на чистую базу уже больше суток. Если на проде всё упадёт - это не вариант. Может снапшоты файловой системы? А если текущая фс не умеет в снапшоты?
Как делают взрослые дяди, если ресурсов на репликацию нет?
Аноним 06/09/20 Вск 10:11:28 1798514110
>>1798510
Чёт как-то долго. Ты там индексы не перестраиваешь на каждый инсерт? Поиграй с параметрами при взятии дампа.
Аноним 06/09/20 Вск 10:24:31 1798517111
>>1798510
чото хуйня какая-то, сколько бд вести?
Покажи запрос бекапа\востановления
Аноним 06/09/20 Вск 10:45:02 1798526112
Есть один сайт с кучей продуктов. Когда вася покупает один из них - на почту ему приходит doc/pdf-презентация, релевантная купленному продукту, коих довольно много и будет больше. Суть: сделать в таблице с продуктами поле, по содержимому которого можно будет однозначно доставать нужный файл. Причём сделать чтобы было не как говно и при этом без всяких сложностей типа отдельных сервисов, которые будут отдавать эти презентации для своих, и прочей ебалы.
Можно было бы хранить base64 или file:///ссылками прямо в базе, но какое-то внутреннее чутьё меня останавливает.
Вместо базы mysql 8.0, если вдруг это важно.
Аноним 06/09/20 Вск 10:49:39 1798530113
>>1798526
храни url, в чём проблема?
Аноним 06/09/20 Вск 20:15:53 1798998114
>>1798517
> сколько бд вести?
База около 25 гигов. Миллиарды записей. Но на то она и база ведь. Мог и в блокнотик записывать, коль так сложно это всё. 21 век на дворе. Видимо где-то я что-то не не так делаю.
>>1798517
>Покажи запрос бекапа\востановления
mysqldump --all-databases --compact --single-transaction -u root -p xxxxxxxxxxxxxxxx > bkp.sql
его потом в другую базу:
mysql -f -uroot -p < bkp.sql
И висит уже больше суток. Пара ошибок в процессе вылезло по датам, но ничего серьезного.
Это же не дело.
Аноним 07/09/20 Пнд 10:16:40 1799251115
>>1798998
Целевая база пустая? Дебаг пробовал включать?
Аноним 07/09/20 Пнд 15:55:22 1799623116
>>1799251
Была пуста, сначала ещё --no-data залил с созданием таблиц, потом фулл дамп. Вопрос вобщем-то не в этом, а в том, можно ли как-то не тупыми запросами в базу её бэкапить (честно, видится это как самый идиотский способ, который только можно придумать), а бэкапить одним куском, бинарно, то, на чём она лежит, или типа того? Может в том же разделе создать файл с виртуальным разделом, например в btrfs и среплицировать в него, а оттуда уже снапшотом куда угодно... Что-то мне подсказывает, что давно есть много полезных опенсорсных утилит на эту тему.
Аноним 07/09/20 Пнд 20:08:28 1799791117
>>1781628 (OP)
Есть набор Отделов (каждый Отдел представлен своей таблицей), к каждом Отделу приписаны Сотрудники (с помощью Foreigh Key), для каждого отдела надо сделать "таблицу соответствий" по типу id_сотрудника -> приоритет_сотрудника
Как это лучше всего намутить? Пока что вижу лишь закинуть поле JSON внутрь Отдела и представить ключи id-шниками Сотрудников и значения - приоритетом
Аноним 07/09/20 Пнд 21:59:55 1799950118
А почему нельзя в таблицу с сотрудниками добавить поле с приоритетом?
>>1799791
Аноним 08/09/20 Втр 00:58:31 1800109119
>>1799791
Сделай join table employees_departments employee_id, department_id, priority с уникальным индексом по первым двум колонкам
Аноним 08/09/20 Втр 13:36:45 1800544120
>>1787781
Эдгар Кодд и Кристофер Дэйт как бы говорят, что суррогатный ключ (а это как раз Id исключительно для ключа) - зло. Не совсем с этим согласен, но да, если есть поле, уникальное и неизменяемое со временем, то быть ему ключом. Пример - уникальный код товара. Плохой пример - номер паспорта. А вообще, лучше почитать про нормальные формы, хотя бы про первые три, например тут: https://metanit.com/sql/tutorial/2.2.php, осознать их и уже потом решать, нужен суррогатный ключ или хватит натурального.
Аноним 08/09/20 Втр 13:55:30 1800581121
>>1799791
Знаешь как в postgres поставить check constraint на json-поле? Мне надо проверять чтобы любое значение по ключу было числом, большим нуля
Аноним 08/09/20 Втр 14:02:16 1800598122
>>1800581
Вручную написать триггер.

мимо
Аноним 08/09/20 Втр 19:35:13 1801024123
Работаю в энтерпрайзе, в проекте около 2к таблиц, есть дб-админы, и почти сука у 90% там где должны быть FK NOT NULL - нихуя нет, более того, эти мрази ставят строки везде куда могут вместо int'ов, вот просто так дебилы решили, откуда такие мрази берутся?

Как меня уже заебало это нытье НУ ТАМ ЖЕ ЕЩЁ ДАТА НЕИЗВЕСТНА, ПОЭТОМУ NULL - пошли нахуй петухи, у них пол базы данных обосрано в NULL.
Аноним 08/09/20 Втр 20:53:46 1801089124
>>1801024
Почему ты так переживаешь по этому поводу? Базка-то работает? Нагрузку держит? Пользователи счастливы?
Аноним 08/09/20 Втр 22:07:02 1801145125
>>1801089
Во-во. Понаберут зумерье всякое а потом расхлебвают
Большие Дяди с Большими писями по такой херне не загоняются
Аноним 08/09/20 Втр 22:55:21 1801205126
>>1799623
это и есть нормальный способ.

когда делаешь бекап, следует думать не о том как его сделать, а как его будет восстанавливать нанятый после тебя за еду эникей.
Аноним 10/09/20 Чтв 18:49:17 1802858127
1.png 26Кб, 534x811
534x811
Допустим WITH с select'ом напишу, но как сделать счётчик?
Аноним 10/09/20 Чтв 23:57:26 1803179128
Чето я сижу туплю и никак не пойму как мне переписать обычный цикл на sql. Но в итоге понял.
Аноним 11/09/20 Птн 01:15:35 1803261129
>>1803179
Просто используй сплитстринг
Аноним 11/09/20 Птн 09:43:06 1803381130
Как засунуть в строки базы sqlite3 питоновские списки с разным количеством элементов?
Аноним 11/09/20 Птн 09:49:42 1803384131
>>1803381
Сериализуй массив и храни строку.
Аноним 11/09/20 Птн 09:57:57 1803388132
>>1803384
в смысле просто сконвертировать его в строку или под сериализацией понимается что-то еще?
Аноним 11/09/20 Птн 10:16:29 1803394133
Аноним 11/09/20 Птн 10:29:09 1803401134
>>1803261
А считать можно подзапросом по количеству разделителей(запятых). Ну или n+1
Аноним 11/09/20 Птн 15:37:51 1803670135
image.png 30Кб, 977x505
977x505
Хай. Есть один MySQL в котором лежат хранимая процедура и вызывающий ее триггер на INSERT в нужную таблицу.
Верно ли я понимаю, что при выполнении:
INSERT INTO таблица () VALUES ();
триггер сработает на каждую вставляемую строку, а не единожды в конце этой команды? Если да, можно ли в мускуле добиться поведения триггера как во втором варианте?
Аноним 11/09/20 Птн 20:03:59 1803864136
School.jpg 191Кб, 1000x520
1000x520
>>1781628 (OP)
Сап, котики! Прошу помощи. Скорее поставить мне мозги, чем написать за меня запрос хотя запрос с объяснением будет в тему.
Есть БД "ШКОЛА" (пилил в oracle developper).
(PK) - первичный ключ, (FK) - внешний ключ.
Сущности в БД:
-classes (классы) [Id (PK), Lvl (название класса 1А, 2Б...), QtyStudents (кол-во учащихся]

-subjects (предметы) [Id (PK), Subj_Name (Матем, Русский...), Teacher_Id]

-teachers (учителя) [Id (PK), Last_name, First_Name, Middle_Name]

-lessons (уроки "занятия") [Id (PK), Lesson_Date, Teacher_Id (FK), Class_Id (FK), Subj_Id (FK), Fullness (посещаемость на этом уроке)]

Только таблица lessons связана с тремя остальными через внешний ключ. Оставшиеся три таблицы между собой не связаны (например teachers не связана напрямую с subjects).

Надо написать запрос, который выводит:
фамилию и имя учителя, предмет за месяц, с наименьшей посещаемостью. Т.е. одну строку с наименьшим значением (Fullness/QtyStudents) 100%.

Джва часа рожал, нашел как выбрать минимальный процент. Но, как его обернуть в запрос, чтобы подтянулась фамилия, имя и предмет - не осилил. Плеас, хэлп.
Вот этот селект выводит минимальный процент посещаемости:
SELECT MIN(100
l.Fullness/c.Qty_Students)
FROM lessons l JOIN classes c ON (l.Class_Id = c.Id)
JOIN teachers t ON (l.teacher_id = t.Id)
JOIN subjects s ON (l.Subj_Id = s.Id);

Пытаюсь обернуть вот так:
SELECT t.Last_Name, t.First_Name, s.Subj_Name,
(
SELECT MIN(prc)
FROM
(SELECT 100*l.Fullness/c.Qty_Students prc
FROM lessons l JOIN classes c ON (l.Class_Id = c.Id)
JOIN teachers t ON(l.teacher_id = t.Id)
JOIN subjects s ON (l.Subj_Id = s.Id)
)
)
FROM lessons l join classes c ON (l.class_id = c.id)
JOIN teachers t ON (l.Teacher_Id = t.Id)
JOIN subjects s ON (l.Subj_Id = s.Id)
WHERE l.Lesson_Date > to_date('2020-11-01', 'YYYY-MM-DD')
AND l.Lesson_Date < to_date('2020-11-30', 'YYYY-MM-DD');

Выводит все фамилии, имена, предметы и напротив каждого пишет один и тот же минимальный процент. Типа:
Иванов, Иван, Матем, 55%
Петров, Петя, Литра, 55%
Сычёв, Вася, Русиш, 55%
Аноним 12/09/20 Суб 06:16:59 1804145137
>>1803864

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


Соотвественно просто сначала обогащаешь таблицу нужными полями т.е просто джоинишь ВСЕ таблицы.
Потом добавляешь вычисляемое поле которое выделает часть месяца из даты, и большую таблицу группируешь по месяцу+учителю, в групировки делаешь наполняемость на количество, или что ты там посчитать хотел.
Аноним 12/09/20 Суб 09:23:19 1804187138
>>1803670
ты в яндекс гуглишь?
сделай триггер FOR EACH ROW
Когда-то давно в mysql это не работало, но сейчас все ок.
Аноним 12/09/20 Суб 14:12:52 1804376139
Насколько хорошо мускуль работает с json-ебаниной? Если я каждый день буду создавать жсон ячейку и писать туда лог объемом в десятки мегабайт, для того чтобы потом брать их и обрабатывать, он не забуксует?
Аноним 12/09/20 Суб 14:17:20 1804380140
>>1804376
Больной ублюдок, я бы за такое ногами пиздил.
Аноним 12/09/20 Суб 14:57:44 1804392141
>>1804376
Юзай монгу. Её для таких вот случаев и придумали.
Аноним 12/09/20 Суб 15:02:08 1804394142
Насколько сильно репликация тормозит мускульного хозяина? Если слэйв на удалённом сервере через интернеты, это вообще законно? Только вкатываюсь в бдшечки...
Аноним 12/09/20 Суб 15:12:30 1804400143
>>1804392
Я как раз склоняюсь в сторону монги, естественно она будет лучше для таких задач, но накатывать ее на сервер, разбираться, ебаться с ней и перепиливать код под нее - для меня тот еще гемор, потому и спрашиваю, может мускуль тоже неплохо справится с подобным.
Короче посмотрю как оно будет работать на мускуле, если накроется медным тазом, придется всё перепердоливать.
Аноним 12/09/20 Суб 15:19:52 1804404144
>>1804400
>придется всё перепердоливать.
Всё равно придётся рано или поздно. Лучше сразу сделать нормально.
Аноним 12/09/20 Суб 20:09:44 1804639145
image.png 857Кб, 716x798
716x798
Аноним 12/09/20 Суб 20:51:37 1804687146
>>1804145
>Соотвественно просто сначала обогащаешь таблицу нужными полями т.е просто джоинишь ВСЕ таблицы.
угу, понимаю

>Потом добавляешь вычисляемое поле которое выделает часть месяца из даты
Что подразумевается под "вычисляемым полем"? Оно в секции SELECT или WHERE?
Аноним 12/09/20 Суб 21:07:28 1804714147
>>1804639
Я всегда зажимаю шифт, мне норм.
Аноним 12/09/20 Суб 22:35:36 1804779148
>>1804639
Объясните космический смысл пикчи.
Аноним 12/09/20 Суб 23:31:35 1804823149
Аноним 13/09/20 Вск 03:27:55 1804904150
>>1803864

Если должны обрабатываться данные только одного какого-то месяца, то просто сортируем сведённые данные по "посещаемости" и берем первую запись.

-- псевдокод:

SELECT TOP 1 "процент посещаемости", фамилия, имя ...
FROM T1 JOIN T2 ....
WHERE месяц N
ORDER BY "процент посещаемости"
Аноним 13/09/20 Вск 06:32:16 1804930151
>>1804687
Ну ёбана, ты что совсем деревянный? Вычисляемое - ещё одно поле в таблице, которое получено из существующих полей(например стобец2 * стобец2 ). В WHERE только фильтры, новые данные в таблицу ты не добавишь.
Аноним 13/09/20 Вск 06:32:38 1804932152
Аноним 13/09/20 Вск 21:31:38 1805631153
>>1804145
>>1804904
>>1804930
Спасибо, няши. Я почти-почти допинал.
Сейчас у меня выводятся ФИО, предмет и последний столбец - с минимальной явкой. Но мне теперь нужно, чтобы выводилась только одна строка с минимальным значением в последнем столбце. Прописываю последней строкой
having min(yavka);

select t.Last_Name, t.First_Name, s.Subj_Name,
min(100*l.Fullness/c.Qty_Students) as yavka
from lessons l join classes c on (l.Class_Id = c.Id)
join teachers t on (l.teacher_id = t.Id)
join subjects s on (l.Subj_Id = s.Id)
where l.Lesson_Date > to_date('2020-11-01', 'YYYY-MM-DD')
and l.Lesson_Date < to_date('2020-11-30', 'YYYY-MM-DD')
group by t.Last_Name, t.First_Name, s.Subj_Name
having min(yavka);

Пишет "invalid relational operator"

Но если последнюю строку переписать на сравнение например фамилии с каким-нибудь учителем, то все работает (остается одна строка, но не та, которая мне нужна)
having t.Last_Name = 'Ivanov';

>>1804930
> ты что совсем деревянный? Вычисляемое - ещё одно поле..
я просто новенький и пока путаюсь в терминах... "вычисляемое" там или еще какое. уменьшаемое, вычитаемое, слагаемое - помню. Вычислемеое - нет))
Аноним 14/09/20 Пнд 01:36:52 1805776154
>>1805631
В хэвинг пиши min(100*l.Fullness/c.Qty_Students)
Аноним 14/09/20 Пнд 01:44:10 1805781155
>>1805776
Ну точнее тебе нужно сделать сортировку, потом вывести первую строчку, что-то типа:

select top 1
from govno
where min(100
l.Fullness/c.Qty_Students)

Но в оракле функции топ вроде нет, но есть аналаги гугли oracle top
Аноним 14/09/20 Пнд 01:47:18 1805783156
>>1805631
GROUP BY не требуется. Как я уже писАл, сортировка и топ 1:

select t.Last_Name, t.First_Name, s.Subj_Name,
--min убираем
(100l.Fullness/c.Qty_Students) as yavka
from lessons l join classes c on (l.Class_Id = c.Id)
join teachers t on (l.teacher_id = t.Id)
join subjects s on (l.Subj_Id = s.Id)
where l.Lesson_Date > to_date('2020-11-01', 'YYYY-MM-DD')
and l.Lesson_Date < to_date('2020-11-30', 'YYYY-MM-DD')
order by yavka -- сортировка
FETCH FIRST ROW ONLY;

Ну а если очень-очень хочется c GROUP BY , то можно так:

select t.Last_Name, t.First_Name, s.Subj_Name,
min(100
l.Fullness/c.Qty_Students) as yavka
from lessons l join classes c on (l.Class_Id = c.Id)
join teachers t on (l.teacher_id = t.Id)
join subjects s on (l.Subj_Id = s.Id)
where l.Lesson_Date > to_date('2020-11-01', 'YYYY-MM-DD')
and l.Lesson_Date < to_date('2020-11-30', 'YYYY-MM-DD')
group by t.Last_Name, t.First_Name, s.Subj_Name
having min(100*l.Fullness/c.Qty_Students) IN (
SELECT MIN(100l.Fullness/c.Qty_Students)
FROM lessons l JOIN classes c ON (l.Class_Id = c.Id)
JOIN teachers t ON (l.teacher_id = t.Id)
JOIN subjects s ON (l.Subj_Id = s.Id)
);


Аноним 14/09/20 Пнд 10:20:48 1805909157
>>1805783
Ну тащемта да, если ему нужно для одного месяца. Но логично бы было предположить, что нужна таблица с топом для каждого месяца.
Аноним 14/09/20 Пнд 16:49:48 1806322158
>>1804394
Запись лога не тормозит практически.
Тормозит фиксация , тк тебе придется включить binlog , а sync_binlog Default Value = 1
Сама репликация :
>Replication is asynchronous by default
Тоже не должна тормозить на бытовом уровне понимания.

В реальности все очень зависимо от разных штук.
Аноним 14/09/20 Пнд 16:52:29 1806329159
Аноним 15/09/20 Втр 08:13:52 1806987160
>>1805776
>>1805781
>>1805783
Пасиб! Понял. Всё вчера сделал.

>>1805909
Мне пока что для собеса. Остальные запросики из тестового сделал, а этот не по зубам оказался.
Аноним 15/09/20 Втр 11:24:25 1807093161
Всем BEGIN, посоны.

Помогите понять, может ли Postgres в параллельное обновление нескольких колонок одной строки без локов?

Например, представьте схему:

```
create table foo (
id int
val1 int
val1_updated_at timestamp
val2 int
val2_updated_at timestamp
)
```

Есть два типа апдейтов:

```
update foo
set val1 = ??? and val1_updated_at = ???
where id = 1
```

и

```
update foo
set val2 = ??? and val2_updated_at = ???
where id = 1
```

При одновременном выполнении таких апдейтов, вызовет ли это проблемы с целостностью данных?
Аноним 15/09/20 Втр 11:27:20 1807095162
>>1807093
[code]
create table foo (
id int
val1 int
val1_updated_at timestamp
val2 int
val2_updated_at timestamp
)
[/code]
Аноним 15/09/20 Втр 13:34:40 1807166163
>>1804404
Не слушай этого перфекциониста. Сделай, чтобы работало, пойми корнер кейсы, покрой тестами, а потом переделаешь нормально.
Аноним 15/09/20 Втр 16:30:34 1807340164
Сап тред

Есть довольно сложная база, в ней имеется таблиц 20. Раз в неделю мы делаем по ней некий отчёт и вьюху, которую требует отдел долбоёбов. Им время от времени не нравится, и они просят переделать/сделать другую вьюху с другими параметрами.

Каждый раз прогонять требуемые запросы - жопоебля, так как один такой запрос будет на нашем ебаном сервере часа два грузиться. Вопрос: существуют ли какие-то тулзы, которые по аналогии с Excel могут интуитивно делать необходимые этому отделу долбоёбов запросы? Или, если нет, как можно решить эту проблему? Была идея напилить свой скрипт на питоне, который будет в соответствии с выбранными столбцами посылать необходимый запрос SQL и возвращать на выходе CSVшник, но пока не очень представляю как это сделать.

Сам Excel не предлагайте, он будет нереально виснуть от объёма базы
Также не предлагайте Power BI, уже пробовали, он под такое изза своей сложности тоже не заточен


Заранее спасибо
Аноним 15/09/20 Втр 17:09:40 1807379165
Аноним 16/09/20 Срд 08:46:30 1807931166
data-scientist-[...].jpg 53Кб, 750x500
750x500
>>1807340
>Вопрос: существуют ли какие-то тулзы, которые по аналогии с Excel могут интуитивно делать необходимые этому отделу долбоёбов запросы?
да.
power bi и tableau.

>Power BI, уже пробовали, он под такое изза своей сложности
в таком случае может вам всей фирмой нахуй пойти?
Вы просто ленивые долбоебы. Это лучше из возможных решений.
Аноним 16/09/20 Срд 08:48:36 1807934167
>>1807340
>Каждый раз прогонять требуемые запросы - жопоебля, так как один такой запрос будет на нашем ебаном сервере часа два грузиться
и че так долго то?
Возможно, вам нужна колоночная аналитическая бд.
типа clickhouse или vertica. И автоматический процесс доставки данных в нее.
Аноним 16/09/20 Срд 14:11:27 1808084168
>>1807934
В CH сложно вкатываеться?
Аноним 16/09/20 Срд 14:42:19 1808100169
10dcfe2f4a0c4b9[...].jpg 180Кб, 564x1005
564x1005
sql.JPG 107Кб, 925x710
925x710
Памахите, плиз
В правильности первого я практически не сомневаюсь, второе вызывает вопросы, а третье мне непонятно
Аноним 16/09/20 Срд 15:06:03 1808118170
>>1808100
2 выглядит правильно.

3 это просто SELECT и WHERE. Алсо, гугли как использовать LIKE.
Аноним 16/09/20 Срд 15:07:21 1808120171
>>1808118
И, скорее всего, в 2 вывести название департамента, а не только з/п.
Аноним 16/09/20 Срд 15:07:45 1808121172
Аноним 16/09/20 Срд 15:12:34 1808129173
>>1808118
Блин, насчёт третьего - и правда.
Про LIKE я вполглаза читал и потому плохо знаком.
Аноним 16/09/20 Срд 17:46:44 1808327174
>>1807093
Бампану вопрос. Очень лень писать тест интеграционный с многопоточностью, поднимать докер, писать бойлерплейт и проч.
Аноним 17/09/20 Чтв 02:18:47 1808687175
где я могу потестить сложные sql запросы? hackerrank? типо порешать задачки для тренировки
Аноним 17/09/20 Чтв 08:36:03 1808742176
>>1808687
Чот я особо не вникал, но на первый взгляд задачи эллементарные, за на 10 баллов селект из одной таблицы, на 50 групировка с каунтом
Аноним 17/09/20 Чтв 19:06:12 1809273177
Аноним 17/09/20 Чтв 19:07:50 1809275178
Аноним 17/09/20 Чтв 19:10:14 1809277179
>>1809275
>уебанское
>уебанской
Аноним 17/09/20 Чтв 19:12:20 1809279180
>>1808687
ХакерРанк, ЛитКод (нужна премиум подписка), куча всего. В гугле забанили?

Вроде довольно большая бесплатная коллекция задач: https://www.hackerrank.com/domains/sql
Аноним 17/09/20 Чтв 19:38:06 1809297181
>>1809273
>>1809275
Напомни ближе к 500, коллективный ОП добавит.
Аноним 17/09/20 Чтв 20:27:05 1809348182
Сап двач. Какой клиент для постгре умеет в аутентификацию по sspi?
Аноним 17/09/20 Чтв 20:59:09 1809374183
>>1809279
раньше же вроде на литкоде бишплатная подписка была?
Аноним 18/09/20 Птн 00:33:46 1809652184
>>1809374
На литкоде нет "бесплатной подписки". Так-то да, он бесплатен, но когда я смотрел последний раз (около месяца назад), почти все вопросы на SQL были под замком.

https://leetcode.com/problemset/database/
Аноним 18/09/20 Птн 02:24:02 1809695185
изображение.png 639Кб, 640x541
640x541
Котаны как в apache nifi вкатываться? Что почитать?
Аноним 18/09/20 Птн 02:53:08 1809702186
.
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов