powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как лучше хранить сырые данные
8 сообщений из 33, страница 2 из 2
Как лучше хранить сырые данные
    #38614160
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиAlex Kuznetsov,
да забудь те вы о много поточном инсерте в базу....
если вытесняющую многозадачность можно победить для такой невьебенной задачи дополнительным клястером
то база ну никак не будет писать в таблицу разными потоками..Коллеги, извините, если ввёл в заблуждение своей фразой "... сколько нужно для передачи файла в базу.".
Я имел в виду по одному потоку на файл, а никак не пучок потоков на один файл.
Понятно, что один такой файл можно будет слить в базу менее чем за 10 минут.

Просто идея в том, чтобы отделить заливку в базу от получения данных.
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38614755
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
A есть ли выгода в многопоточности? На много увеличится производительность? Где то попадалось что в каждый момент времени выполняется только один поток и бывает проигрыш из за постоянного переключения потоков.
К примеру, 5 серверов с которых сливаются данные по TCPIP для каждого создаю поток т.е. 5 потоков, каждый поток пишет свой файл и производит выборку с сервера. Много ли выиграю?
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38614761
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darlovA есть ли выгода в многопоточности? На много увеличится производительность? Где то попадалось что в каждый момент времени выполняется только один поток и бывает проигрыш из за постоянного переключения потоков.
К примеру, 5 серверов с которых сливаются данные по TCPIP для каждого создаю поток т.е. 5 потоков, каждый поток пишет свой файл и производит выборку с сервера. Много ли выиграю?Зависит от количества ядер процессоров. При наличии к примеру четырёх ядер можно распределить к четыре потока каждый на отдельное ядро. Как Вы думаете, при этом будет выигрыш по производительности?

А кстати, сервер БД, куда потом будут сливаться обработанные данные, он на отдельной машине или на той-же?
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38614769
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex Kuznetsov, А если 5 потоков 4 ядра, как будет выполняться?
БД на той же машине.
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38614810
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darlovAlex Kuznetsov, А если 5 потоков 4 ядра, как будет выполняться?
БД на той же машине.Вы меня проверяете что-ли?
Будет выполнять ровно так, как Вы нарисуете. Сможете запустить потоки на разных ядрах, значит три будет работать "отдельно" каждый в отдельном ядре, а два будут "разделять" одно ядро.
В какой момент какой именно из этих двух потоков быстрее завершит свою работу, этого Вам даже дядюшка билли не скажет, ибо в винде вытесняющая многозадачность, "кончил, не кончил - три минуты"...

В .Net, кстати, не так уж просто заставить поток Thread исполняться на каком-то определённом ядре, тем не менее возможно .

БД на той-же машине... хм... "и мы ещё боремся за звание образцовой культуры быта" ...
Сливать данные туда-же где будет и так нагружена дисковая подсистема...
Я бы подумал над тем, чтобы вынести БД на отдельный сервер...
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38614820
darlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex KuznetsovВы меня проверяете что-ли?

Нет, просто вытесняю недопонимание.
Alex KuznetsovЯ бы подумал над тем, чтобы вынести БД на отдельный сервер...

Пока на одной машине, при продакшене и понижении производительности буду думать насчет второй машины.
Спасибо.
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38614973
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darlov,
что-то вы усложняете, 40мб за 10 мин (70кб/сек) - это "ни о чем" даже для не очень мощного компа.
копите в памяти, и то что собрали - раз в минуту другим потоком, как вам уже подсказали, формируете групповой Insert.
Комп все успеет.
Делал схожую систему, и когда симуляцией нагружал диким потоком UDP пакетов - даже на не очень мощном компе все работало с загрузкой проца не более 60%.
При таком потоке данных, не уверен что стоит кэшировать все в файл перед заливкой в БД.
5 TCP - мне кажется, если делаете асинхронный прием данных, то принципиальной разницы между одним потоком и пятью не будет.
Возможно стоит для каждого TCP просто делать свою очередь (очередь А).
Поток заливающий в БД, должен лочить А, быстренько выгружать данные в свою очередь (Б) и отпускать очередь А чтоб туда мог продолжить писать TCP, и уже после из очереди Б формировать данные для загрузки.
Симулируйте нагрузку, и там поймете как часто надо в БД писать, и на сколько большими порциями. Также разделите во времени очистку в базе старых данных, с заливкой новых.
...
Рейтинг: 0 / 0
Как лучше хранить сырые данные
    #38616023
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы предложил вам протестировать самый быстрый (и самый надежный вариант) если заработает.
Тупо инсертить данные по приходу в том виде, в котором приходят без выгрузки их в XML.

В крайнем случае - можно их аггрегировать например минуту - и потом одним запросом инсертить.

Скорее всего проблемы не возникнет, т.к. данных не так много.
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как лучше хранить сырые данные
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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