Перейти к публикации
  • Сейчас на странице   Всего пользователей: 3   (0 пользователей, 3 гостя)

Rooster

Программирование[9]

Перепись  

260 пользователей проголосовало

У вас нет прав на голосование в этом опросе, или на просмотр результатов опроса. Пожалуйста, войдите или зарегистрируйтесь для голосования в опросе.

Рекомендованные сообщения

(ne()) написал 2 минуты назад:
FeelYourDestiny написал 7 минут назад:

чел, ты безработный, что тут думать?

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

 

FeelYourDestiny написал 4 минуты назад:

да не, братан, просто забей хуй. точно не получится

 

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

А какая субд?


 

9Aa4jVY.jpeg

IFVau8G.png

AohP0ps.png

Поделиться сообщением


Ссылка на сообщение
besteady написал 2 минуты назад:
(ne()) написал 6 минут назад:
FeelYourDestiny написал 11 минут назад:

чел, ты безработный, что тут думать?

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

 

FeelYourDestiny написал 8 минут назад:

да не, братан, просто забей хуй. точно не получится

 

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

Показать больше  

А какая субд?

А вот этого мне именно он и не сказал, что угодно сказал кроме этого. Я когда на собесе был говорил что на прошлой работе ms sql server был, у них вроде то же самое. С каким-то простым функционалом я знаком, типо индексы перестроить, строки посмотреть последние, импортнуть таблицу, скрипты подредачить, даты там поменять, закоментить лишнее, ну и прочитать скрипт небольшой. Ничего особого, самое простейшее.


Доброта и взаимовыручка в разделе железо

OK4eIq8maRQ.jpg

Поделиться сообщением


Ссылка на сообщение
(изменено)
Index написал 8 часов назад:

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

 

И мы сторонний сервис и не дружим с челами типо кантов дефрелей.

Мы берем фетчим форум постранично/потопиково собирая инфу в коллекцию.

 

Собрали батч со страницы и кидаем его в бд.


INSERT INTO likedrochery (user,time,like_count,msg_id) VALUES
(Кант,1,4,44),
(GoldRobot,2,2,45),
(Index,1,3,46),
...
...
(Defrel,1,0,49),
ON DUPLICATE (user) DO UPDATE SET msg_id = excluded.msg_id WHERE excluded.like_count >= like_count AND excluded.time > time;

И все заебись работает. Апсерт с обновлением на основе имеющихся данных. Если лайков больше или время свежее при тех же лайках.

 

Но как только появляется хуйня


(Кант,1,7,49),
(Index,1,7,50),
(Кант,0,9,51),

синтаксис SQL ругается, мол не может эксклюдить больше чем одну запись сорян.

GoldRobot написал 9 часов назад:

Так непонятно пока в чем сложность просто

Может у тебя там три десятка инстансов по всему миру которые должны в одну базу это все сливать, а батчами ты назваешь сегменты табличные :honkler:

Чувак батч это набор данных на которых формируется insert/upsert кверя

У тараканбд есть оконные функции, они тебе и нужны

прилетает инкремент за день, из него select distinct(user_id), first_value(msg_id) over (partition by user_id order by timestamp desc) from ...

и это инсертишь с on duplicate как у тебя написано

Так по уму и делается по идее


Изменено пользователем besteady

 

9Aa4jVY.jpeg

IFVau8G.png

AohP0ps.png

Поделиться сообщением


Ссылка на сообщение
Just.Doit написал 13 минут назад:

какая-то разработка пока что перспективнее сисадминства

скл и дельфи конечно рак, но в целом ничего

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


Доброта и взаимовыручка в разделе железо

OK4eIq8maRQ.jpg

Поделиться сообщением


Ссылка на сообщение
besteady написал 22 минуты назад:

У тараканбд есть оконные функции, они тебе и нужны

прилетает инкремент за день, из него select distinct(user_id), first_value(msg_id) over (partition by user_id order by timestamp desc) from ...

и это инсертишь с on duplicate как у тебя написано

Так по уму и делается по идее

Это бы взлетело с временными таблицами.

А по поводу сложности SQL.

Это как говорится изи ту лерн, хард ту мастер.

Поделиться сообщением


Ссылка на сообщение

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


Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.
 

Поделиться сообщением


Ссылка на сообщение
(изменено)
Index написал 36 минут назад:
besteady написал 59 минут назад:

У тараканбд есть оконные функции, они тебе и нужны

прилетает инкремент за день, из него select distinct(user_id), first_value(msg_id) over (partition by user_id order by timestamp desc) from ...

и это инсертишь с on duplicate как у тебя написано

Так по уму и делается по идее

Это бы взлетело с временными таблицами.

А по поводу сложности SQL.

Это как говорится изи ту лерн, хард ту мастер.

Да, я что-то скипнул, что Кант тоже самое написал.

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


Изменено пользователем besteady

 

9Aa4jVY.jpeg

IFVau8G.png

AohP0ps.png

Поделиться сообщением


Ссылка на сообщение
JuJeu написал 11 минут назад:

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

EXPLAIN, логи БД, голова на плечах

Поделиться сообщением


Ссылка на сообщение
Index написал 1 час назад:
JuJeu написал 1 час назад:

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

EXPLAIN, логи БД, голова на плечах

ну ебать, конечно, ты рассказал историю. ты когда-нибудь дебажил кверис?


Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.
 

Поделиться сообщением


Ссылка на сообщение

а что ты там дебажить собрался?

ты шо императивную логику в скле ебашишь?

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

 

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


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение
Index написал 12 часов назад:

Хотите задачу?

  Показать содержимое

Есть итерируемая колекция упорядоченная по мере добавления (например посты этого топика).

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

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

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

Пример.

[А-1,Б-1,В-1,Б-2,В-2,Г-1,Б-3,А-2,Г-2,А-3] - где имя ключ число время+payload для наглядности

Разбиваются на

[А-1,Б-1,В-1], [Б-2,В-2,Г-1], [Б-3,А-2,Г-2], [А-3]

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

Но можно разбить более эффективно.

[А-1,Б-1,В-1,Г-1], [Б-2,В-2,Г-2], [Б-3,А-3]

 

Вот собственно задача как это сделать изящно, функционально, чтобы батчи были максимально объемные, их было как можно меньше, но все это не превышая O(n) и без больших объемов памяти.

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

 

Естественно число ключей и их диапазон не известен заранее.

А да, забыл ключевое.

Можно отбросить те данные для которых есть ключи в поздних батчах. Это если работа на конечной коллекции.

 

tl:dr это все сводится к тому, что

UPSERT INTO xxx (key,value) VALUES

(...),

(...),

(...),

(...),

(...);

 

Захлебывается если в списке дублируется одинаковый PK констрейнт.

UPSERT INTO xxx (key,value) VALUES

(...),

(...);

UPSERT INTO xxx (key,value) VALUES

(...),

(...),

(...);

Отработает нормально, если их разнести.

 

Нужно по сути в бд занести самый последний payload на ключ.

спасибо, чел

было весело читать жалкие попытки дебиков решить задачу для школьников 7-го класса

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

 

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


:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:    всё что пишу -- шизофренический бред     :zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

:zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu::zatrolka_tupostu:

Поделиться сообщением


Ссылка на сообщение
Kant написал 3 часа назад:

ты шо императивную логику в скле ебашишь?

 

:ponimau::ponimau::ponimau:

Kant понравилось это

 

DB

59221730.png


Я - гений, ёпта

bfe7003be27e8e81ce6a7d2d8192e9ae.jpg


22


msg-93176-0-72842500-1438846470_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
(изменено)
Kant написал 9 часов назад:

а что ты там дебажить собрался?

ты шо императивную логику в скле ебашишь?

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

 

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

Я видел даже циклы sql'евские :buba:


Изменено пользователем besteady

 

9Aa4jVY.jpeg

IFVau8G.png

AohP0ps.png

Поделиться сообщением


Ссылка на сообщение

Зависит от бизнес-задач. Если это обычная база для CMS это одно, а если там BI то другое, там могут быть функции/процедуры как для отчетов так и для ACL.

Поделиться сообщением


Ссылка на сообщение
(ne()) написал 14 часов назад:


В целом что от меня человек хочет - мне нужно выучить sql + освоить основы delphi и связать свою базу с fast report 

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

Поделиться сообщением


Ссылка на сообщение
MedVed_na_lesapede написал 53 минуты назад:
(ne()) написал 15 часов назад:


В целом что от меня человек хочет - мне нужно выучить sql + освоить основы delphi и связать свою базу с fast report 

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

Да, он примерно так и сказал. 


Доброта и взаимовыручка в разделе железо

OK4eIq8maRQ.jpg

Поделиться сообщением


Ссылка на сообщение

Никогда не понимал дрочку на дум.


Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.
 

Поделиться сообщением


Ссылка на сообщение

Начал курс проходить, поставил ms sql server, решаю пару заданий, дохожу до момента с 
SELECT title, 
       price, 
       round((price*18/100)/(1+18/100),2) AS tax, 
       round(price/(1+18/100),2) AS price_tax 
FROM book
и у меня выходит такой ответ

Мастер и Маргарита            670.99    120.78000000000000000    670.9900000000000
Белая гвардия                       540.50    97.29000000000000000    540.5000000000000
Идиот                                       460.00    82.80000000000000000    460.0000000000000
Братья Карамазовы            799.01    143.82000000000000000    799.0100000000000
Стихотворения и поэмы    650.00    117.00000000000000000    650.0000000000000
Т.е. тупо не считает то что находится во вторых скобках и не сокращает знаки после запятой до 2-х знаков, втф... Это из-за различий между SQL и T-SQL?  Я так понимаю чтоб курс без мозгоебли проходить мне нужен не ms sql server в этом случае? 
Только курс нашел где все расписано нормально и практики много, ну ёпрст.


Доброта и взаимовыручка в разделе железо

OK4eIq8maRQ.jpg

Поделиться сообщением


Ссылка на сообщение
(изменено)
(ne()) написал 29 минут назад:

Начал курс проходить, поставил ms sql server, решаю пару заданий, дохожу до момента с 
SELECT title, 
       price, 
       round((price*18/100)/(1+18/100),2) AS tax, 
       round(price/(1+18/100),2) AS price_tax 
FROM book
и у меня выходит такой ответ

Мастер и Маргарита            670.99    120.78000000000000000    670.9900000000000
Белая гвардия                       540.50    97.29000000000000000    540.5000000000000
Идиот                                       460.00    82.80000000000000000    460.0000000000000
Братья Карамазовы            799.01    143.82000000000000000    799.0100000000000
Стихотворения и поэмы    650.00    117.00000000000000000    650.0000000000000
Т.е. тупо не считает то что находится во вторых скобках и не сокращает знаки после запятой до 2-х знаков, втф... Это из-за различий между SQL и T-SQL?  Я так понимаю чтоб курс без мозгоебли проходить мне нужен не ms sql server в этом случае? 
Только курс нашел где все расписано нормально и практики много, ну ёпрст.

я не эксперт во всеq этой хуйне, но вроде round ОКРУГЛЯЕТ. Т.е. у тебя нули будут.

я не уверен, что ты там делаешь, но один из вариантов

convert(double precision, round((price*18/100)/(1+18/100),2)) AS tax, 


Изменено пользователем JuJeu

Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.
 

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...