@dba_ru

Страница 73 из 718
here1am
07.12.2016
19:09:07
ну поболтать там можно

KOT
09.12.2016
01:19:36
Кто-нибудь ставил такие эксперементы? https://stackoverflow.com/questions/778534/mysql-on-duplicate-key-last-insert-id

Нужно, чтобы вставка в таблицу с unique индексами не выдавала ошибки, и в добавок возвращала уже ранее существующий ИД.

lemi
09.12.2016
07:53:54
на Postgre както так insert into tbl (col1, col2, col3, ...) select nextval('tlb_id_seq'), t.col1, t.col2, ... from (values()) t (col1, col2....) where not exists ( select 1 from tbl where tbl.col1 = t.col1 and tbl.col2 = t.col2 ... ) returning id

Google
тнн Itjunky
09.12.2016
14:35:21
Кто-нибудь ставил такие эксперементы? https://stackoverflow.com/questions/778534/mysql-on-duplicate-key-last-insert-id
Не понял, а зачем вообще трогать поле под индексом и юником? Оно же через СуБД заполняется автоматически именно последним+1 значением

KOT
09.12.2016
14:42:21
Не понял, а зачем вообще трогать поле под индексом и юником? Оно же через СуБД заполняется автоматически именно последним+1 значением
Это была мысль в ночи, как использовать уники и не сломать мастер-мастер, но уже понял, что это не вариант.

Проще ходить скриптом и склеивать нужное.

тнн Itjunky
09.12.2016
14:56:28
Ясна

Fike
09.12.2016
16:26:25
да выкиньтевы вообще идею об автоинкрементах

тот, кто их придумал, был пьян

KOT
09.12.2016
16:41:53
да выкиньтевы вообще идею об автоинкрементах
Все вокруг идиоты, один ты Эйнштейн

Fike
09.12.2016
16:44:51
д'артаньян все же

Akzhan
09.12.2016
16:47:16
ничего не понял. есть же классика, 1) uuid 2) автоинкремент с шагом N. где N - максимальное число мастеров. И есть одна мысль - если у вас настоящий мастер-мастер, то, скорее всего, у вас нет бойцов, способных его нормально готовить.

Akzhan
09.12.2016
16:49:19
Это очень дорого, в разработке и в поддержке. Я бы предпочел независимые БД с очередями сообщений. Ну да ладно

Sergey
09.12.2016
16:51:03
Читал тут на днях внутреннюю статью, где хвалились tps-ами на мастер-мастер, не прошло и недели, как он у них сломался.

Google
Akzhan
09.12.2016
17:35:24
transactions per second. а пруф не помешал бы )

Sergey
09.12.2016
17:37:14
Что такое тпс и что конкретно там сломалось?
эм, а что обычно ломается на мастер-мастер? всё то же самое, даннае разъехались)

nikoinlove
09.12.2016
17:40:35
один мастер отстал а другой нет. а потом каак записали не того в отставший

Fike
09.12.2016
18:15:29
nikoinlove
09.12.2016
19:20:14
Никак же, это ж не шарды

Fike
09.12.2016
19:27:35
Никак же, это ж не шарды
каждый мастер же принимает (че хочет) в том размере, в котором сможет, не консультируясь с остальными, разве нет?

nikoinlove
09.12.2016
19:27:54
ага а потом еще принимает то же самое от других мастеров

в сумме нагрузки больше и он ломается

Akzhan
09.12.2016
19:30:12
А такие бойцы вообще есть?
очень дорого, есть. все первым делом попросят уйти от этой техники.

Fike
09.12.2016
19:30:17
а

тнн Itjunky
09.12.2016
19:31:00
Бггг, боец, который говорит, что в бой идти не надо? :)

Akzhan
09.12.2016
19:31:30
обход - хорошая тактика, во многих случаях

KOT
09.12.2016
20:10:17
каждый мастер же принимает (че хочет) в том размере, в котором сможет, не консультируясь с остальными, разве нет?
Если ты можешь в сервер А лить 2000 тпс максимум, то поставив второй такой же с М-М А-А рядом у тебя не будет 4000 тпс, у тебя будут раскиданны по 1000 тпс на каждую ноду.

Ты путаешь данный вариант с RAID0 / RAID10 массивами.

тнн Itjunky
09.12.2016
20:16:58
Единственное, что я встречал на работе и с СуБД MySQL, так это вариант, когда слэйв делается либо для чтений, либо для бэкапов, что бы не тормозил мастер на момент снятия дампа. Всё остальное видимо никто не умеет готовить нормально. Потому получили признание всякие NoSQL и шардообразные вариации.

Google
nikoinlove
09.12.2016
20:23:42
Так у nosql принцип такой же, просто изза внутренней простоты они шардируются из коробки

Что тоже не всегда хорошо

Монгос умеет занять весь кластер решардингом вместо работы

тнн Itjunky
09.12.2016
20:26:05
Хорошо мне с моими smalldata проектами, которые в sqlite прекрасно живут =)

nikoinlove
09.12.2016
20:29:23
Ну эскулайт может много в себя вместить. У него с конкаренси не очень

KOT
09.12.2016
20:32:17
Так у nosql принцип такой же, просто изза внутренней простоты они шардируются из коробки
Хорошо. 1. NoSQL умеет геораспределённое шардирование? 2. Я могу ему задавать сложные запросы выборки данных для подбора идеального рекламодателя на лету?

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

KOT
09.12.2016
20:35:49
Моя задача: Приходит пользователь А из Бонуэс-Айреса, ему надо отдать контент с минимальной задержкой, секунда не более. А спустя "очень короткий промежуток времени" приходит пользователь Б из Сиднея, и ему я тоже должен отдать контент. И допустим им нужен один и тот же контент, только вот проблема в том, что после посещения юзера А квота рекламодателя на контент исчерпана. Об этом должна вся система знать в идеале не более чем через 5 секунд, после того, как этот пользователь А зашёл.

nikoinlove
09.12.2016
20:36:22
Так их приземлять надо в разные страны, а ты хочешь на бд это свалить

А "знать вся система" не требкет синхронности же

KOT
09.12.2016
20:36:56
И того задача и тому и другому отдать нужный контент очень быстро, но чтобы друг о други "знали"

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

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

Там стоят сервера со скриптами.

Таких точек будет 10-12

Sergey
09.12.2016
20:39:16
Балансировка на базе днс?

Google
KOT
09.12.2016
20:39:28
Route53 от амазона

Это не столько балансировка

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

KOT
09.12.2016
20:40:52
что понимается под геораспределенным шардированием?
Читай дальше, я расписал. Как дочитаешь до этого поста, если что-то не внятно пояснил, спроси уточнения, я отвечу.

Sergey
09.12.2016
20:41:51
На нагрузку в принципе наплевать, это для того, чтобы юзер получал данные с сервера, который к нему по пингу ближе всего
Гм... если оно через edns работает, то это не совсем честно, тк далеко не все серверы его умеют

Fike
09.12.2016
20:41:57
ну да, тебе нужна не централизованная система, а несколько датацентров, каждый из которых едва знает о существовании остальных

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

Admin
ERROR: S client not available

Fike
09.12.2016
20:43:19
service layer agreement, те ограничения по вермени, которые ты описал

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

Sergey
09.12.2016
20:44:03
Поясни, я не совсем понял суть написаного (
Есть edns-client-subnet, который передаётся в запросе от рекурсивного сервера, чтобы авторитативный сервер знал откуда клиент и выдал ему максимально близкий ip-шник

Fike
09.12.2016
20:44:06
если рекламодатель исчерпает бюджет на +5 баксов - это будет проблема дешевле, чем поддержвать все это в живом состоянии

KOT
09.12.2016
20:44:07
Ну 5 секунд это 95% идеал

На пиках будет простреливать, и пускай, терпимо

тнн Itjunky
09.12.2016
20:44:29
На нагрузку в принципе наплевать, это для того, чтобы юзер получал данные с сервера, который к нему по пингу ближе всего
Это ж не обязательное условие что бы уложиться в секунду. Текущие задержки от России до Америки не более 300мс

Sergey
09.12.2016
20:45:30
И этот самый edns-client-subnet поддерживают далеко не все рекурсоры и авторитативный сервер будем ориентироваться не по тому где находится клиент а по тому, где находится его рекурсивный сервер

Google
Sergey
09.12.2016
20:46:46
Ну и плюс промежуточные кеши

тнн Itjunky
09.12.2016
20:47:12
Получается, что даже если 300 до другого конца планеты, плюс 300 обратно, остаётся ещё 400мс на выдачу результата

KOT
09.12.2016
20:48:10
Это ж не обязательное условие что бы уложиться в секунду. Текущие задержки от России до Америки не более 300мс
Вооооооооооот. Уже не плохо. НО. Это только пинг. А ещё вычисления, ещё несколько операций с базой. И того набегает. Я начал с Ирландии, потом поставил слейв в Калифорнии, потом сказали Азию добавить, поставил в Сингапуре, ну по моей логике главное было скриптосервер поближе к юзеру подтянуть, и дать ему реплику. А тот факт, что там идут записи, я прошляпил. И пишут мне манагеры "Чё за фигня, у нас потери трафика, ТДСка долго грузится!" я проверяю, а там 6 секунд на вшивый редирект. ШЕСТЬ СЕКУНД. Начал копать. Ну да, клиент до скриптосервера долетает за 50мс, а скриптосервер до мастера тратит по полторы секунды на одну запись, а их часто до 3 штук поочерёдно. ТАДАМ.

[Anonymous]
09.12.2016
20:56:07
По вашему взгляду - какая база лучше всего подходит для очень узкоспециализированной задачи - выборки по часовому поясу. Т.е. есть поле с датой и вот эти строки мы и будем запрашивать.

Несколько миллиардов записей.

Запросы типа "покажи записи от 10.10.2010 до 10.10.2011 по МСК".

Благодарю, если кто-то что-то подскажет.

KOT
09.12.2016
20:56:46
Так вот. Я поднял сервера на всех локациях доступных в амазоне. Устроил получасовой пинг всех на всех. И нарисовал карту скоростей между точками. Выделил 3 группы: Америка, Европа, Азия. В каждой по сумме пингов выявил сервер, который наиболее идеально минимальный пинг до всех других в своей группе имеет. И это будут у меня 3 мастера. Итого схема будет такая. юзер А (из задачи сверху) будет направлен на сервер в Сау-Паулу, все нужные селекты он запросит с слейв-реплики находящейся там же, а когда ему нужно сделать запись, он её сделает на Мастер сервере в Ohio, на это уйдёт меньше секунды, потом эта инфа через ещё секунды-полторы окажется в Сингапуре, где стоит второй Мастер, и ещё через столько же в Сиднее, где стоит слейв реплика от Сингапурского мастера.

Запросы типа "покажи записи от 10.10.2010 до 10.10.2011 по МСК".
Меня закидают тапками, но я бы сначала сдвигал до UTC, переводил бы в unixtimestamp а потом искал по колонке int(10) unsigned которая была бы индексом.

А в выдаче всех бы вновь свдигал обратно построчно до нужного отступа по таймзоне

[Anonymous]
09.12.2016
20:59:11
Вот я подумал, может быть есть какое-то специализированное решение для таких запросов.

KOT
09.12.2016
21:00:18
И как скорость по нескольким миллиардам?

[Anonymous]
09.12.2016
21:00:30
Ну смотря какие запросы...

Некоторые отрабатывают в фоне раз в X минут/часов.

KOT
09.12.2016
21:00:46
Арендуете сервак или прямой доступ к железу?

[Anonymous]
09.12.2016
21:00:48
Некоторые в живом режиме.

KOT
09.12.2016
21:01:38
Просто если бы была своя железка в НИИ (ну как пример), можно было бы её затюнить под эту задачу, если она у вас настолько генерально важная.

Страница 73 из 718