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

Главная

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


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

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

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

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

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

И типы данных стоило бы пересмотреть. Например, дату/время явно будет экономичнее хранить в специализированных типах данных. В MySQL одно поле DATETIME занимает всего 5 байт, а у вас 20 отведено.
...
Рейтинг: 0 / 0
Подскажите БД для 100000 INSERT-ов в секунду
    #39734649
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> "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
Подскажите БД для 100000 INSERT-ов в секунду
    #39734654
flight-op
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftDimitry Sibiryakovплоские CSV-файлы со вставкой
справятся лучше.+1
С промежуточной буферизаций в CSV/TSV потянет, наверное, практически любая СУБД.


А идея-то, по факту хороша. Простой парсер csv обработал миллион строк за ~6 секунд. Сразу, было дело, подумал "Да нет, бред какой-то" :)
...
Рейтинг: 0 / 0
Подскажите БД для 100000 INSERT-ов в секунду
    #39734660
flight-op
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Подскажите БД для 100000 INSERT-ов в секунду
    #39734686
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flight-op,

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

Хрень какая-то. А если еще безразмерные варчары сюда приклеить, вообще бред какой-то. Очередная супер-база?
...
Рейтинг: 0 / 0
Подскажите БД для 100000 INSERT-ов в секунду
    #39734688
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
собственно, я тут 15 лет, и за это время вижу, что мало кто из постановщиков таких задач освоил простое умножение.
Парадокс?
...
Рейтинг: 0 / 0
Подскажите БД для 100000 INSERT-ов в секунду
    #39734692
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvНо если перемножить на минутыДля этого пока мало информации. Возможно, желаемые 100000 в секунду - это всего лишь пиковая нагрузка, у которой неизвестна ни длительность, ни периодичность.
...
Рейтинг: 0 / 0
Подскажите БД для 100000 INSERT-ов в секунду
    #39734707
Очень лысый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зависит от того, для чего оно будет пользоваться и сколько храниться. Если будет храниться долго и ещё запросы к нему нужно делать, то можно какой-нибудь хадуп с паркетом. Записи сливаются в текстовое файло. Файло сливается в паркет с сжатием. Над ним какой-нибудь hive, да сейчас уже кучу движков придумали - выбирай на вкус.
...
Рейтинг: 0 / 0
Подскажите БД для 100000 INSERT-ов в секунду
    #39735175
flight-op
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Подскажите БД для 100000 INSERT-ов в секунду
    #39735252
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
flight-opа чтобы вытаскивать оттуда информацию - создать разреженный внешний индекс - с MessageID и
временем с разрешением, скажем, в 0.5-1 сек.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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