Я использую C# и имею открытое соединение tcpip, получающее данные. Можно ли сохранить поток в базе данных sql sqs, когда я его получаю, вместо того, чтобы получать все данные, а затем сохранить все это? Если поток может быть отправлен в базу данных по мере его получения, вам не нужно будет хранить весь фрагмент данных в памяти. Это вообще возможно?Потоковая передача непосредственно в базу данных
ответ
Вы записываете в БД в виде BLOB или переводят данные в некоторой форме, а затем выполняете вставки для каждой строки?
Ваш ответ в комментариях меня смущает. Запись потока в столбец BLOB значительно отличается, чем получение данных, а затем перевод их в вставки для отдельных строк.
Несмотря на это, потоковой в столбец BLOB можно сначала создать строку и столбец двоичных объектов, которые вам нужно вставить, многократно вызывающий оператор обновления:
update myTable set myColumn.Write(@data, @offset, @length) where someid = @someId
для кусков байт из потока ,
SQL Server 2005 поддерживает HTTP конечных точек (без необходимости IIS), чтобы одно решение было бы создать веб-службу на SQL Server, чтобы непосредственно получить потоковые данные.
Эти ссылки объясняют настройки один вверх: http://codebetter.com/blogs/raymond.lewallen/archive/2005/06/23/65089.aspx http://msdn.microsoft.com/en-us/library/ms345123.aspx
Почему бы просто не записать буфер в файл при получении пакетов, а затем вставить в базу данных при завершении передачи?
Если вы передаете непосредственно в базу данных, вы будете долгое время подключаться к базе данных, особенно если сетевое соединение клиента не самое лучшее.
В большинстве случаев я бы записывал данные в базу данных точно так, как это было получено. В некоторых случаях я бы читал необработанные данные, создавая поток xml и сохраняя это. Я уверен, что, если вы просто ответили на первый сценарий, я мог бы что-то сделать для второго сценария. Благодарю. – Jeremy 2008-10-31 03:37:27