У нас есть приложение, которое принимает данные в реальном времени и вставляет их в базу данных. он работает в течение 4,5 часов в день. Мы вставляем данные второй раз в 17 таблиц. Пользователь может в любое время запросить любую таблицу для последних вторых данных и некоторые записи в истории ...Лучшая практика для вставки и запроса данных из памяти
Обработка кормов и вставка делаются с использованием C# консольное приложения ...
Обработка запросов пользователей является проведенных через службу WCF ...
Мы выяснили, что вставка - наше узкое место; большую часть времени там проводят. Мы потратили много времени на то, чтобы завершить работу таблиц и индексов, но результаты были неудовлетворительными.
Предполагая, что у нас есть достаточная память, лучше всего вставлять данные в память вместо базы данных. В настоящее время мы используем datatables, которые обновляются и вставляются каждую секунду. . Наш коллега предложил другую службу WCF вместо базы данных между обработчиком фида и обработчиком запросов пользователей WCF. Предполагается, что средний уровень WCF будет основан на TCP и хранит данные в собственной памяти. Можно сказать, что обработчик корма может иметь дело с пользовательскими запросами вместо того, чтобы иметь средний уровень между двумя процессами, но мы хотим разделить вещи, поэтому, если сбой обработчика кормов, мы хотим, чтобы все еще были в состоянии предоставить пользователю текущие записи
Мы ограничены во времени, и мы хотим переместить все в память за короткий промежуток времени. Имеет ли WCF в середине 2 процесса плохое дело? Я знаю, что запросы добавляют некоторые накладные расходы, но все эти 3 процесса (обработчик фида, база данных с памятью (WCF), обработчик пользовательского запроса (WCF) будут находиться на одной машине, а пропускная способность не будет такой из вопроса.
Пожалуйста помогите!
Действительно хороший вопрос. – Kangkan