Гость
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Подскажите БД для 100000 INSERT-ов в секунду / 25 сообщений из 29, страница 1 из 2
17.11.2018, 15:20
    #39734549
flight-op
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
Вставляются данные в такие таблицы:

Главная

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
CREATE TABLE "Syslog"(
  "MessageID" INTEGER PRIMARY KEY ON CONFLICT REPLACE AUTOINCREMENT UNIQUE ON CONFLICT REPLACE, 
  "Facility" INTEGER, 
  "Severity" INTEGER, 
  "HostID" INTEGER REFERENCES "Hosts"("IDHost") ON DELETE CASCADE ON UPDATE CASCADE, 
  "HostIPID" INTEGER REFERENCES "HostIPs"("IDHostIP") ON DELETE CASCADE ON UPDATE CASCADE, 
  "ProcessID" INTEGER REFERENCES "Processes"("IDProcess") ON DELETE CASCADE ON UPDATE CASCADE, 
  "DateTimeSend" DATETIME, 
  "DateSend" CHAR(10), 
  "TimeSend" CHAR(10), 
  "Message" VARCHAR, 
  "Alert" BOOLEAN, 
  "AlertReason" VARCHAR, 
  "AlertCategory" VARCHAR);

CREATE INDEX "idxDateTimeSend" ON "Syslog"("DateTimeSend" DESC);
CREATE INDEX "idxProcessIDSyslogMessages" ON "Syslog"("ProcessID");
CREATE INDEX "idxAlert" ON "Syslog"("Alert");
CREATE INDEX "idxHostIDSyslogMessages" ON "Syslog"("HostID");
CREATE INDEX "idxFacilityIDSyslogMessages" ON "Syslog"("Facility");
CREATE INDEX "idxSeverityIDSyslogMessages" ON "Syslog"("Severity");
CREATE INDEX idxTimeSend ON Syslog(TimeSend);
CREATE INDEX idxDateSend ON Syslog(DateSend);
CREATE INDEX "idxHostIPIDSyslogMessages" ON "Syslog"("HostIPID");



Производная от главной:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
CREATE TABLE Firewalls (
 MessageID INTEGER REFERENCES Syslog(MessageID) ON DELETE CASCADE ON UPDATE CASCADE ,
 inInterface VARCHAR,
 outInterface VARCHAR,
 SrcMAC VARCHAR,
 DstMAC VARCHAR,
 SrcIP VARCHAR,
 DstIP VARCHAR,
 SrcPort INTEGER,
 DstPort INTEGER,
 Protocol VARCHAR);

CREATE INDEX idxDstPortFirewalls ON Firewalls(DstPort);
CREATE INDEX idxSrcMACFirewalls ON Firewalls(SrcMAC);
CREATE INDEX idxDstMACFirewalls ON Firewalls(DstMAC);
CREATE INDEX idxSrcIPFirewalls ON Firewalls(SrcIP);
CREATE INDEX idxSrcPortFirewalls ON Firewalls(SrcPort);
CREATE INDEX idxinInterfaceFirewalls ON Firewalls(inInterface);
CREATE INDEX idxoutInterfaceFirewalls ON Firewalls(outInterface);
CREATE INDEX idxMessageIDFirewalls ON Firewalls(MessageID);
CREATE INDEX idxDstIPFirewalls ON Firewalls(DstIP);
CREATE INDEX idxProtocolFirewalls ON Firewalls(Protocol);



Могу отказаться от всех индексов, кроме Primary и idxDateTimeSend в главной таблице и idxMessageIDFirewalls в производной от главной.
...
Рейтинг: 0 / 0
17.11.2018, 15:22
    #39734550
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
MS SQL, Cache, любая in-memory.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.11.2018, 15:24
    #39734552
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
А если говорить в целом, то с таким потоком данных проблема не в том, чтобы их вставить в
БД, а чтобы понять "а назачем они туда вставляются", ибо плоские CSV-файлы со вставкой
справятся лучше.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.11.2018, 15:32
    #39734554
flight-op
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
Dimitry SibiryakovMS SQL, Cache, любая in-memory.


А что-то полегче не потянет: Firebird, ADS?
...
Рейтинг: 0 / 0
17.11.2018, 15:35
    #39734555
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
flight-opА что-то полегче не потянет: Firebird, ADS?

Как написано выше: плоский CSV файл потянет. Firebird... ну, это будет зависеть от
ловкости твоих рук и мощности железа.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.11.2018, 17:20
    #39734583
Barclay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
flight-op,

SAP HANA 2.0 Express Edition (бесплатно)
...
Рейтинг: 0 / 0
17.11.2018, 18:04
    #39734594
flight-op
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
Barclayflight-op,

SAP HANA 2.0 Express Edition (бесплатно)

(*Перекрестился*)
...
Рейтинг: 0 / 0
17.11.2018, 20:05
    #39734625
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
Dimitry Sibiryakovплоские CSV-файлы со вставкой
справятся лучше.+1
С промежуточной буферизаций в CSV/TSV потянет, наверное, практически любая СУБД.

И типы данных стоило бы пересмотреть. Например, дату/время явно будет экономичнее хранить в специализированных типах данных. В MySQL одно поле DATETIME занимает всего 5 байт, а у вас 20 отведено.
...
Рейтинг: 0 / 0
17.11.2018, 23:22
    #39734649
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
> "DateTimeSend" DATETIME,
> "DateSend" CHAR(10),
> "TimeSend" CHAR(10),

Зачем последние два?


> inInterface VARCHAR,
> outInterface VARCHAR,

Почему не номер интерфейса?


> SrcMAC VARCHAR,
> DstMAC VARCHAR,

byte(6)


> SrcIP VARCHAR,
> DstIP VARCHAR,

byte(4)


> SrcPort INTEGER,
> DstPort INTEGER,

Целое, 2 байта.


> Protocol VARCHAR);

Целое, 1 байт.
...
Рейтинг: 0 / 0
17.11.2018, 23:36
    #39734654
flight-op
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
miksoftDimitry Sibiryakovплоские CSV-файлы со вставкой
справятся лучше.+1
С промежуточной буферизаций в CSV/TSV потянет, наверное, практически любая СУБД.


А идея-то, по факту хороша. Простой парсер csv обработал миллион строк за ~6 секунд. Сразу, было дело, подумал "Да нет, бред какой-то" :)
...
Рейтинг: 0 / 0
17.11.2018, 23:51
    #39734660
flight-op
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
Alibek B.> "DateTimeSend" DATETIME,
> "DateSend" CHAR(10),
> "TimeSend" CHAR(10),

Зачем последние два?

для группировки


> inInterface VARCHAR,
> outInterface VARCHAR,

Почему не номер интерфейса?

Код: pascal
1.
<30>Nov 17 23:41:42 MT-CORE Masquerade-WAN srcnat: in:(unknown 0) out:ByFly, proto UDP, 192.168.2.1:45262->91.189.91.157[alphyn.canonical.com]:123, len 76 [Core:0]



Тут нет номера интерфейса. Здесь вообще может быть что угодно - от лога Cisco ASA до Windows Security EventLog. За универсальность решения приходится чем-то платить, в данном случае - избыточностью данных.
...
Рейтинг: 0 / 0
18.11.2018, 02:13
    #39734686
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
flight-op,

до varchar без размера запись где-то 52 байта (если однобайтовые символы в строках).
это значит, что 100к записей по 52 байта в секунду это 5 мегабайт в секунду, что не бог весть что.
Но если перемножить на минуты и т.д., выходит
300 мегабайт в минуту
18 гиг в час
423 гигабайта в сутки
157 терабайт в год.

Хрень какая-то. А если еще безразмерные варчары сюда приклеить, вообще бред какой-то. Очередная супер-база?
...
Рейтинг: 0 / 0
18.11.2018, 02:15
    #39734688
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
собственно, я тут 15 лет, и за это время вижу, что мало кто из постановщиков таких задач освоил простое умножение.
Парадокс?
...
Рейтинг: 0 / 0
18.11.2018, 02:54
    #39734692
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
kdvНо если перемножить на минутыДля этого пока мало информации. Возможно, желаемые 100000 в секунду - это всего лишь пиковая нагрузка, у которой неизвестна ни длительность, ни периодичность.
...
Рейтинг: 0 / 0
18.11.2018, 06:59
    #39734707
Очень лысый
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
Зависит от того, для чего оно будет пользоваться и сколько храниться. Если будет храниться долго и ещё запросы к нему нужно делать, то можно какой-нибудь хадуп с паркетом. Записи сливаются в текстовое файло. Файло сливается в паркет с сжатием. Над ним какой-нибудь hive, да сейчас уже кучу движков придумали - выбирай на вкус.
...
Рейтинг: 0 / 0
19.11.2018, 15:43
    #39735175
flight-op
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
kdvflight-op,

до varchar без размера запись где-то 52 байта (если однобайтовые символы в строках).
это значит, что 100к записей по 52 байта в секунду это 5 мегабайт в секунду, что не бог весть что.
Но если перемножить на минуты и т.д., выходит
300 мегабайт в минуту
18 гиг в час
423 гигабайта в сутки
157 терабайт в год.

Хрень какая-то. А если еще безразмерные варчары сюда приклеить, вообще бред какой-то. Очередная супер-база?

Не надо перемножать, всё-таки актуальность логов имеет временные ограничения.
Преамбула:
Есть самописная система анализа логов. Скриптами парсит входящие данные и раскладывает их по таблицам. База SQLite, благо ничего критичного нет и данных максимум на сотню INSERT-ов в секунду.
Временами, почитывая всякое-разное из опыта эксплуатации людьми enterprise-решений удается почерпнуть что-то полезное для себя - где интересный отчет, где идею стэктрейса логов. В-общем, в мире больших решений есть вещи, полезные и для "игрушечных" систем. Перечитывая Хабр, наткнулся на интересный комментарий:

На данный момент у меня кластер А 10 машин (каждая машина 24 ядра 48 гб памяти) с трудом тянет 15к логов в секунду. На кластере Б памяти 128 гб на машину, что дает порядка 50к логов в секунду. Это при дневных индексах, 7-ми дневно ретеншене и около 1000 шард на кластер А, около 3000 шард на кластер Б. Если переключится на часовые индексы и снизить ретеншен до 3-х дней количество шард на кластере Б поднимается до 25к и он начинает падать с завидной периодичностью. У всех машин стоит по 4 диска 1.8тб. На кластере А количество документов около 7г и диски заняты от 26% до 45%, на кластере Б документов около 3.5г, диски заняты от 9% до 14%. Полный траффик логов у меня 130 логов/с, что значит мне нужно кластер А расширить до как минимум 200 машин, что будет 2 миллиона долларов только на покупку железа, обслуживание встанет в отдельные деньги. Глядя на подобные суммы начинаешь уже задумываться о спланке, который безумно дорог, но тебе вообще не надо думать об инфраструктуре.

Решил глянуть - а что же у меня с производительностью, получил (в зависимости от вида лога) цифры порядка 10-15к на ядро.
Упаси господь, думать что я со своей приблудой на Delphi собрался покорять мир, но нездоровое любопытство и толика свободного времени располагают попробовать реализовать полную производительность.

Преамбула закончилась

Я тут что подумал: можно действительно писать в csv-файл, производительность будет лимитирована дисковой подсистемой, а чтобы вытаскивать оттуда информацию - создать разреженный внешний индекс - с MessageID и временем с разрешением, скажем, в 0.5-1 сек.
Да, спасибо за идею!
...
Рейтинг: 0 / 0
19.11.2018, 17:25
    #39735252
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
flight-opа чтобы вытаскивать оттуда информацию - создать разреженный внешний индекс - с MessageID и
временем с разрешением, скажем, в 0.5-1 сек.

Обычно информация из логов нужна исключительно в виде каких-то агрегатов. Эти агрегаты
имеют гораздо меньший объём, чем сырые данные, так что тебе агрегатор, складывающий
выжимку в базу будет, вероятнее всего, полезнее, чем индекс.

Ну а хабар уже давно стал блогом чайников, хвастающихся как они смогли чего-то достичь
своими руками с нулевым радиусом кривизны.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
19.11.2018, 17:35
    #39735257
flight-op
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
Dimitry SibiryakovОбычно информация из логов нужна исключительно в виде каких-то агрегатов. Эти агрегаты
имеют гораздо меньший объём, чем сырые данные, так что тебе агрегатор, складывающий
выжимку в базу будет, вероятнее всего, полезнее, чем индекс.

А оно так и работает, по сырым данным формируются alert-ы. Но при разборе инцидента зачастую желательно знать, что происходило до и после. Так сказать, нужен контекст alert-а.
...
Рейтинг: 0 / 0
19.11.2018, 20:08
    #39735298
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
flight-opданных максимум на сотню INSERT-ов в секунду.flight-opполучил (в зависимости от вида лога) цифры порядка 10-15к на ядро.У вас и так запас в 100-150 раз. Зачем вам вся эта деятельность?
...
Рейтинг: 0 / 0
19.11.2018, 20:12
    #39735302
flight-op
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
"Почему кот яйца лижет? Потому что может" :))
...
Рейтинг: 0 / 0
20.11.2018, 00:31
    #39735378
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
flight-op,

а говорил что у тебя всё чики пуки - 21730248 , а оно вон оно что, в базу он складывает....
...
Рейтинг: 0 / 0
20.11.2018, 00:59
    #39735381
flight-op
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
kealon(Ruslan)flight-op,

а говорил что у тебя всё чики пуки - 21730248 , а оно вон оно что, в базу он складывает....

Прости, с трудом тебя понимаю, в базу нынче складывать постыдно и осуждается соборно?
Да, у меня есть проблемы записать то, что я могу обработать.
...
Рейтинг: 0 / 0
20.11.2018, 08:55
    #39735413
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
flight-op,

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

В базу скидывать не постыдно, это определённый уровень. Но если программа претендует на что-то большее, то универсальные детские песочницы идут в топку. Представьте, например, что Procmon обрабатывал бы со скоростью 16к/с и грузил все процы под завязку.
...
Рейтинг: 0 / 0
20.11.2018, 13:14
    #39735592
flight-op
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
kealon(Ruslan)flight-op,

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

(*Миролюбиво*) Извини, Руслан, я что-то опять тебя не понимаю. В однопоточной программе я мог записать то, что обрабатываю. При повышении производительности за счет использования потоков возникло узкое место - запись на диск. Всегда возникает следующее бутылочное горлышко - в пределе это законы физики. В чём проблемы-то?

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

WBR
...
Рейтинг: 0 / 0
20.11.2018, 16:01
    #39735720
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите БД для 100000 INSERT-ов в секунду
flight-opkealon(Ruslan)flight-op,

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

(*Миролюбиво*) Извини, Руслан, я что-то опять тебя не понимаю. В однопоточной программе я мог записать то, что обрабатываю. При повышении производительности за счет использования потоков возникло узкое место - запись на диск. Всегда возникает следующее бутылочное горлышко - в пределе это законы физики. В чём проблемы-то?

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

WBRОпять же вам говорю, у вас не хватит терпения пригрузить любой более-менее посредственный диск на запись, это надо сотнями мегабайт шпарить. Узкое горлышко у вас межпроцессное взаимодействие с БД.

мы на разных языках говорим, по поводу ваших неуверенности в себе: скрипты же вы не для себя добавили? наверное для кого-то? каким образом вы этого "кого-то" ассоциировали с собой?
...
Рейтинг: 0 / 0
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Подскажите БД для 100000 INSERT-ов в секунду / 25 сообщений из 29, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]