
KOT
19.11.2016
14:08:50

Fike
19.11.2016
14:17:03
Идентификатор может обозначать как пользователя, так и организацию

Al
19.11.2016
14:21:36
Вот чем мне нравятся графовые базы... никаких головняков за таблицы и прочий бред. Заноси в нее че хошь. Хоть черта лысого. И указывай связи с весами и подробностями.

Fike
19.11.2016
14:39:21
только не заново это все

Google

KOT
19.11.2016
14:52:01

Fike
19.11.2016
14:53:47
http://www.peoples.ru/character/movie/phil_connors/connors_1.jpg

Al
19.11.2016
14:53:50

KOT
19.11.2016
15:33:40
А где можно почитать?

Al
19.11.2016
15:36:12

KOT
19.11.2016
15:37:45

Al
19.11.2016
15:38:28
http://console.neo4j.org/?_ga=1.142652725.1675949446.1479403402

KOT
19.11.2016
15:40:37

Al
19.11.2016
15:42:54

KOT
19.11.2016
15:49:22
Не, я уже глянул и понял, что создовади велосипед, а вышел bmx

Google

Al
19.11.2016
15:50:41

Sergey
19.11.2016
15:55:54

KOT
19.11.2016
16:21:18

Dan
20.11.2016
20:31:22
cross-post коллеги, нужен совет ?
Девопсы, если mysql пишет в логах:
[ERROR] Cannot find or open table databasename/tablename from
the internal data dictionary of InnoDB though the .frm file for the
table exists.
это уже не вылечить? Только dump с параметром -f и снова накатывать?

here1am
20.11.2016
20:51:29
попробуй спросить не девопсов, а дба, может откликнутся

Dan
20.11.2016
20:54:44

Navern
20.11.2016
23:22:55
Если табличка не нужна конкретная то можно мувнуть фрмку куданить

Egor
20.11.2016
23:39:44
А почему бинарики в mysql не стрипают (strip -s)?
You are broking the debugging info :). You can safely strip it.
понял

Dan
21.11.2016
00:43:40

Egor
21.11.2016
00:43:59
Подскажите, почему так выходит - http://pastebin.com/FpVtqsYF ?

Navern
21.11.2016
00:45:21

lemi
21.11.2016
08:37:26
генерим число от 50 до 5051 потом от единицы отнимает его получаем то что получаем


KOT
22.11.2016
12:19:58
Есть задача.
Надо сделать максимально быстрой отклик в любой части планеты. Проект - рекламный трафик. Нужно записывать КАЖДЫЙ переход в базу, при этом делать это максимально быстро.
В момент захода на сервер скрипт делает 2 запроса выборки данные и до трёх INSERT´ов.
Сейчас сделано по принципу 1 мастер и 3 репликации. Мастер стоит в Ирландии, рядом сервер со скриптом, там код отдаётся за 9мс, второй слейв стоит в северной вирджинии, там время отдачи 1с, ещё один в мумбае, там примерно 2с. Задержка из-за INSERT´ов, это время максимальное, при всех трёх (один минимум).
Задача: поднять локации по всему миру с минимальным откликом.
В планах решить сразу несколько вопросов:
1. Подтянуть мастера к удалёным точкам
2. Сделать резервные копии на случай выпадения мастера по жести
Выбранная схема: Мультимастер Актив-Актив, 3 штуки, в Ирландии, Сингапуре и Северной Вирджинии, репликации "все на всех", чтобы не было зависимости от "кольца".
Далее у каждого мастера будут ещё свои слейв репликации по стандартной топологии звезды мастер-слейв актив-пассив.
Не стал сразу всё делать, а вынашиваю идею уже полтора месяца и постепенно начитался и наслушался, но пора начинать. Постепенно понял, что мне не нужно реплицировать ВСЕ данные во все стороны. А именно, данные деляться на 3 типа:
1. Записи трафика во время прохода, один проход одна стрoка в таблице
2. Данные из админки, настройки компаний и прочая шелуха
3. Сводные данные трафика, раз в час идёт выжимка из первого типа данных, где групируется по источнику, чтобы по ним потом отдавать гибкую статистику.
Первые данные надо раскидывать репликой Мультимастер Актив-Актив, это для резервного бэкапа и для других вычислений.
Вторые данные в принципе по сути будут всегда писаться из админки, её я пока не планирую разносить, будет в одном месте, писать будет в один мастер (если тот не отвалится), потому не уверен, есть ли смысл её реплицировать по той же схеме.
Третьи данные, это вообще жесткая такая нагрузка на базу, когда надо несколько миллионов, а может и несколько десятков миллионов прогнать математикой и записать. Потэтому не сильно хочется хочется грузить все мастера такой задачей, было бы интересней придумать схему, где скрипт, который это делает, опрашивал бы все 3 мастера на предмет загруженности ЦПУ, выбирал бы самый слакающий и на нём гнал, а остальным передавал row based репликацию. Либо же эту сводную базу не реплицировать, а каждый будет делать из своих данных, учитывая, что раз в час он обновляет не только часовую сводку но и немного предыдущей, то любые лаги репликации будут догоняться.
В качестве ДБ сервера подумываю взять последнию Перкону, она базируется на последнем mysql, а значит там есть и многопоточная репликация и паралельная репликация.
Какие подводные камни я уже наметил:
авто инкреминенты надо юзать с настройкай шага и оффсета
забыть про юник ключи в мастер-мастер схемах
забыть про триггеры, процедуры и прочие безконтрольные элементы, которые могут сломать репликацию
Не использывать запросы из разряда генерируемых сервером или основывающиеся на других данных, которые могут быть разными на разных мастерах.
Помогите котику найти брод в этом океане подводных камней.
Просьба: Не предлагайте уйти от мультимастера. Всё остальное преветствуется ^_^


Alex
22.11.2016
12:22:25
Могу предложить уйти от MySQL в сторону tarantool, и подумать хорошо над архитектурой.

KOT
22.11.2016
12:27:56

Alex
22.11.2016
12:29:08
вопрос не в том что SQL или noSQL, мы есть опыт построения на постгресе, и не могу сказать что всегда это правильно. Особенно расчеты всяких CPMов.

KOT
22.11.2016
12:29:10

Google

Alex
22.11.2016
12:30:07
Если правильно расположить сервера входящих данных, отдачи данных и собственно сервера расчетов, подозреваю что тарантул уделает традиционные СУБД по скорости
Мнение мое, необязательно правильное, но сейчас я бы в эту сторону смотрел.


Fike
22.11.2016
12:56:13
Есть задача.
Надо сделать максимально быстрой отклик в любой части планеты. Проект - рекламный трафик. Нужно записывать КАЖДЫЙ переход в базу, при этом делать это максимально быстро.
В момент захода на сервер скрипт делает 2 запроса выборки данные и до трёх INSERT´ов.
Сейчас сделано по принципу 1 мастер и 3 репликации. Мастер стоит в Ирландии, рядом сервер со скриптом, там код отдаётся за 9мс, второй слейв стоит в северной вирджинии, там время отдачи 1с, ещё один в мумбае, там примерно 2с. Задержка из-за INSERT´ов, это время максимальное, при всех трёх (один минимум).
Задача: поднять локации по всему миру с минимальным откликом.
В планах решить сразу несколько вопросов:
1. Подтянуть мастера к удалёным точкам
2. Сделать резервные копии на случай выпадения мастера по жести
Выбранная схема: Мультимастер Актив-Актив, 3 штуки, в Ирландии, Сингапуре и Северной Вирджинии, репликации "все на всех", чтобы не было зависимости от "кольца".
Далее у каждого мастера будут ещё свои слейв репликации по стандартной топологии звезды мастер-слейв актив-пассив.
Не стал сразу всё делать, а вынашиваю идею уже полтора месяца и постепенно начитался и наслушался, но пора начинать. Постепенно понял, что мне не нужно реплицировать ВСЕ данные во все стороны. А именно, данные деляться на 3 типа:
1. Записи трафика во время прохода, один проход одна стрoка в таблице
2. Данные из админки, настройки компаний и прочая шелуха
3. Сводные данные трафика, раз в час идёт выжимка из первого типа данных, где групируется по источнику, чтобы по ним потом отдавать гибкую статистику.
Первые данные надо раскидывать репликой Мультимастер Актив-Актив, это для резервного бэкапа и для других вычислений.
Вторые данные в принципе по сути будут всегда писаться из админки, её я пока не планирую разносить, будет в одном месте, писать будет в один мастер (если тот не отвалится), потому не уверен, есть ли смысл её реплицировать по той же схеме.
Третьи данные, это вообще жесткая такая нагрузка на базу, когда надо несколько миллионов, а может и несколько десятков миллионов прогнать математикой и записать. Потэтому не сильно хочется хочется грузить все мастера такой задачей, было бы интересней придумать схему, где скрипт, который это делает, опрашивал бы все 3 мастера на предмет загруженности ЦПУ, выбирал бы самый слакающий и на нём гнал, а остальным передавал row based репликацию. Либо же эту сводную базу не реплицировать, а каждый будет делать из своих данных, учитывая, что раз в час он обновляет не только часовую сводку но и немного предыдущей, то любые лаги репликации будут догоняться.
В качестве ДБ сервера подумываю взять последнию Перкону, она базируется на последнем mysql, а значит там есть и многопоточная репликация и паралельная репликация.
Какие подводные камни я уже наметил:
авто инкреминенты надо юзать с настройкай шага и оффсета
забыть про юник ключи в мастер-мастер схемах
забыть про триггеры, процедуры и прочие безконтрольные элементы, которые могут сломать репликацию
Не использывать запросы из разряда генерируемых сервером или основывающиеся на других данных, которые могут быть разными на разных мастерах.
Помогите котику найти брод в этом океане подводных камней.
Просьба: Не предлагайте уйти от мультимастера. Всё остальное преветствуется ^_^
вам нужно другое хранилище и другой ответственный за это дело


KOT
22.11.2016
12:56:42
И какое другое?

Fike
22.11.2016
12:57:51
о господи, какие автоинкременты
key-value хранилище + PN-счетчики, если они нужны + не-помню-как-они-называются-Sets (OR-sets, кажется), которые разрешают конфликт включен\удален с помощью LWW (лучше, кажется, пока ничего не придумали) + uuid для идентификаторов
потому что судя из описания, кроме key-value ничего не будет
работа с потоком записей это вообще из другой оперы и должно производиться другими вещами, хранилище должно только уметь потоком отдавать свое содержимое тому, кто с этим будет работать
я привык работать с кассандрой, ее бы и взял.
если критически важны конфликты и их разрешение, то лучше riak, но кассандра позиционируется как решение, которое съест любой объем данных, в то время как про riak тупо знаю только о том, что у него все типы данных CRDT (которые придется реализовывать вручную на кассандре)

Dmitry
22.11.2016
13:28:25
есть нормальный метод посмотреть позу в бинлоге?

Dmitry
22.11.2016
13:28:33
мускул

KOT
22.11.2016
13:29:25
Позу или по позе данные?

Dmitry
22.11.2016
13:36:03
по позе данные
позу саму я знаю
start-from фигню показывает
не ловит ее


Akzhan
22.11.2016
16:29:06
Есть задача.
Надо сделать максимально быстрой отклик в любой части планеты. Проект - рекламный трафик. Нужно записывать КАЖДЫЙ переход в базу, при этом делать это максимально быстро.
В момент захода на сервер скрипт делает 2 запроса выборки данные и до трёх INSERT´ов.
Сейчас сделано по принципу 1 мастер и 3 репликации. Мастер стоит в Ирландии, рядом сервер со скриптом, там код отдаётся за 9мс, второй слейв стоит в северной вирджинии, там время отдачи 1с, ещё один в мумбае, там примерно 2с. Задержка из-за INSERT´ов, это время максимальное, при всех трёх (один минимум).
Задача: поднять локации по всему миру с минимальным откликом.
В планах решить сразу несколько вопросов:
1. Подтянуть мастера к удалёным точкам
2. Сделать резервные копии на случай выпадения мастера по жести
Выбранная схема: Мультимастер Актив-Актив, 3 штуки, в Ирландии, Сингапуре и Северной Вирджинии, репликации "все на всех", чтобы не было зависимости от "кольца".
Далее у каждого мастера будут ещё свои слейв репликации по стандартной топологии звезды мастер-слейв актив-пассив.
Не стал сразу всё делать, а вынашиваю идею уже полтора месяца и постепенно начитался и наслушался, но пора начинать. Постепенно понял, что мне не нужно реплицировать ВСЕ данные во все стороны. А именно, данные деляться на 3 типа:
1. Записи трафика во время прохода, один проход одна стрoка в таблице
2. Данные из админки, настройки компаний и прочая шелуха
3. Сводные данные трафика, раз в час идёт выжимка из первого типа данных, где групируется по источнику, чтобы по ним потом отдавать гибкую статистику.
Первые данные надо раскидывать репликой Мультимастер Актив-Актив, это для резервного бэкапа и для других вычислений.
Вторые данные в принципе по сути будут всегда писаться из админки, её я пока не планирую разносить, будет в одном месте, писать будет в один мастер (если тот не отвалится), потому не уверен, есть ли смысл её реплицировать по той же схеме.
Третьи данные, это вообще жесткая такая нагрузка на базу, когда надо несколько миллионов, а может и несколько десятков миллионов прогнать математикой и записать. Потэтому не сильно хочется хочется грузить все мастера такой задачей, было бы интересней придумать схему, где скрипт, который это делает, опрашивал бы все 3 мастера на предмет загруженности ЦПУ, выбирал бы самый слакающий и на нём гнал, а остальным передавал row based репликацию. Либо же эту сводную базу не реплицировать, а каждый будет делать из своих данных, учитывая, что раз в час он обновляет не только часовую сводку но и немного предыдущей, то любые лаги репликации будут догоняться.
В качестве ДБ сервера подумываю взять последнию Перкону, она базируется на последнем mysql, а значит там есть и многопоточная репликация и паралельная репликация.
Какие подводные камни я уже наметил:
авто инкреминенты надо юзать с настройкай шага и оффсета
забыть про юник ключи в мастер-мастер схемах
забыть про триггеры, процедуры и прочие безконтрольные элементы, которые могут сломать репликацию
Не использывать запросы из разряда генерируемых сервером или основывающиеся на других данных, которые могут быть разными на разных мастерах.
Помогите котику найти брод в этом океане подводных камней.
Просьба: Не предлагайте уйти от мультимастера. Всё остальное преветствуется ^_^
Тут вам не вполне нужна РСУБД на первом этапе, скорее очереди событий. И уже потом из очередей выбирать и писать в БД


キリル
22.11.2016
17:00:06
очередь для записи событий можно в тоже же раббите например организовать. а потом фоновый процесс оттуда читает и переносит в в реляционную субд.

Google

KOT
22.11.2016
17:02:23
Так, видимо придётся вникнуть. Давайте начнём с простого - зачем мне очередь записей?

Akzhan
22.11.2016
17:07:02

Admin
ERROR: S client not available

Fike
22.11.2016
17:07:11
она позволит аккумулировать нагрузку при краткосрочных пиках, чтобы потом в нормальном режиме ее разобрать
но вообще интересно предыдущих авторов послушать

KOT
22.11.2016
17:08:25

Akzhan
22.11.2016
17:08:47
Транзакционность чего, когда, почем и зачем?

KOT
22.11.2016
17:09:33

Akzhan
22.11.2016
17:09:54
1. Используйте надежные очереди сообщений. Если речь о том, чтобы не терять события.

Fike
22.11.2016
17:10:48

KOT
22.11.2016
17:11:31
А момент о том, что Мастера друг другу реплицируют ты учитываешь?

Akzhan
22.11.2016
17:11:34
https://kafka.apache.org/

Fike
22.11.2016
17:11:42
а как он влияет?
ты же не будешь из азии в америку гнать?

KOT
22.11.2016
17:12:03

Fike
22.11.2016
17:12:09
запросы
или ты про "выравнены позиции репликации", а не "выравнена нагрузка"?

Akzhan
22.11.2016
17:12:37
исходя из распределенности системы, у вас нет выбора. только очереди. или вы надеетесь на асинхронную репликацию, или даже думаете о синхронной?)

KOT
22.11.2016
17:12:58
А про то, что мастера между собой будут иметь Master-Master Active-Active репликацию

Google

KOT
22.11.2016
17:13:12
Нет, синхронная репликация выбрысывается

Fike
22.11.2016
17:13:13

Akzhan
22.11.2016
17:13:27
ну опять-таки в случае очередей нет никакой нужды в master-master

Fike
22.11.2016
17:13:46

KOT
22.11.2016
17:13:50
Зачем мне лишние прослойки? Это про очереди

Fike
22.11.2016
17:14:00

Akzhan
22.11.2016
17:15:29
а причем тут это? формируем события на все кластеры, и пусть каждый пишет в БД себе по мере возможности. Никаких проблем с нагрузкой, никаких master-master, все надежно и предсказуемо

Alex
22.11.2016
17:18:42
Угу пока в диск не уткнемся

KOT
22.11.2016
17:18:46
тогда я не понимаю то сообщение про пики нагрущки )
Ну смотри, про пики начал ты. Меня не сильно волнуют пики, сервера должны стоять такие, чтобы переживать все пики, у меня всё достаточно быстро пишется, это не проблема. При желание можно разогнать MySQL/Percona до очень больших скоростей записи. Меня это совсем не напрягает до такой степени, чтобы думать, как подключить ещё лишние технологии и усложнить общую архиктетуру. А написал я про пики, что нету пиков таких, что вот 5 секунд всё ложится, как при ДДоС атаке, а потом 5 минут передышка, и есть время разобрать накопившиеся, там будет постоянная нагрузка, будут суточные калебания, наплывы и затишья. Но так как мы охватываем все континенты, то наплыву будут в разное время и тем самым, круглые сутки будет равномерно примерно одинаковая нагрузка.


Alex
22.11.2016
17:19:00
я вот не в курсе там в mysql хотя бы Unlogged таблицы впилили ?
на постгресе при быстрых SSD и поминутной аггрегации входящего потока вполне можно было жить

KOT
22.11.2016
17:19:44

Akzhan
22.11.2016
17:19:52
ну я надеюсь, там нет по условиям mysql, он же ненадежен немножка. postgres удачнее подойдет