трехзвенка - возникли нюансы с большим набором данных
От: Аноним  
Дата: 22.03.04 08:15
Оценка:
В своем приложении использую трехзвенку. В основном у меня шла выборка данных из БД(MS SQL) через хранимые процедуры, обработка их в бизнес-логике и передача дальше уровнем выше. Занесение данных в БД осуществлялось также хранимыми процедурами. Как правило, заносится одно-два-три значения. И для занесения достаточно было создать объект SqlCommand("моя хранимая процедура", mySqlConnection) + cоздавал где-то три SqlParameter и .. . . . . .
Но, резко изменились требования. Возникла необходимость занесения большого количества данных.
Решение возникло сразу — динамически создавать строку для объекта SqlCommand т. е. в цикле перебирая мой "массив" информации формировать :
foreach (DictionaryEntry myEntry in myHashtable)
{
  myCommandText = myCommandText + "INSERT INTO my_Table (field1, field2) VALUES ("+myEntry.Key+", "+myEntry.Value+") ";
}

myCommand.CommandText = myCommandText;
.....и далее ......

Это у меня работает. Но, нарушается разделение бизнес-логики и данных. Есть ли способ, данную операцию "провернуть" через хранимые процедуры? То есть передать ей, грубо говоря, "массив" информации? Либо, может в ADO.NET есть какие-либо средства, которые могут помочь?
Re: трехзвенка - возникли нюансы с большим набором данных
От: Supervisor Беларусь  
Дата: 22.03.04 11:40
Оценка:
Здравствуйте, <Аноним>, Вы писали:

Попробуй так:

1. Создай временную таблицу
2. Забей в нее данные через insert
3. Затем вызови XP
4. Обработай данные
5. после выхода из ХП удали временную таблицу.

Так устроит?
... << RSDN@Home 1.1 beta 2 >>
Re: трехзвенка - возникли нюансы с большим набором данных
От: TK Лес кывт.рф
Дата: 22.03.04 11:48
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Это у меня работает. Но, нарушается разделение бизнес-логики и данных. Есть ли способ, данную операцию "провернуть" через хранимые процедуры? То есть передать ей, грубо говоря, "массив" информации? Либо, может в ADO.NET есть какие-либо средства, которые могут помочь?



В хранимую процедуру передавать xml документ. см sp_xml_preparedocument
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: трехзвенка - возникли нюансы с большим набором данных
От: Аноним  
Дата: 22.03.04 12:45
Оценка:
Здравствуйте, Supervisor, Вы писали:

S>Здравствуйте, <Аноним>, Вы писали:


S>Попробуй так:


S>1. Создай временную таблицу

S>2. Забей в нее данные через insert
S>3. Затем вызови XP
S>4. Обработай данные
S>5. после выхода из ХП удали временную таблицу.

S>Так устроит?

Нет. Хотя и произойдет разделение, но скорость будет маловата
Re[2]: трехзвенка - возникли нюансы с большим набором данных
От: Аноним  
Дата: 22.03.04 12:48
Оценка:
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, Аноним, Вы писали:


А>> Это у меня работает. Но, нарушается разделение бизнес-логики и данных. Есть ли способ, данную операцию "провернуть" через хранимые процедуры? То есть передать ей, грубо говоря, "массив" информации? Либо, может в ADO.NET есть какие-либо средства, которые могут помочь?



TK>В хранимую процедуру передавать xml документ. см sp_xml_preparedocument

Вот это похоже то, что мне надо!
Здесь вы уже дали ответ на эту тему
Автор: TK
Дата: 03.12.02
Re[2]: трехзвенка - возникли нюансы с большим набором данных
От: Аноним  
Дата: 22.03.04 13:16
Оценка:
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, Аноним, Вы писали:


А>> Это у меня работает. Но, нарушается разделение бизнес-логики и данных. Есть ли способ, данную операцию "провернуть" через хранимые процедуры? То есть передать ей, грубо говоря, "массив" информации? Либо, может в ADO.NET есть какие-либо средства, которые могут помочь?



TK>В хранимую процедуру передавать xml документ. см sp_xml_preparedocument

Сейчас по аське с другом большой спор зашел. Они как-раз таки от америкосов получили на доработку проект, в котором шла интенсивная работа через XML, по его дословному отзыву "потому что все что работает через XML — тормозит".
Так насколько "тормознутым" будет вариант, предложенный ТК?
Re[2]: трехзвенка - возникли нюансы с большим набором данных
От: DmitryMS  
Дата: 22.03.04 13:28
Оценка:
there's no need to delete temp table in SQL Server, unless it's a global one (with ##).
Re[3]: трехзвенка - возникли нюансы с большим набором данных
От: TK Лес кывт.рф
Дата: 22.03.04 13:28
Оценка:
Здравствуйте, Аноним, Вы писали:

TK>>В хранимую процедуру передавать xml документ. см sp_xml_preparedocument

А> Сейчас по аське с другом большой спор зашел. Они как-раз таки от америкосов получили на доработку проект, в котором шла интенсивная работа через XML, по его дословному отзыву "потому что все что работает через XML — тормозит".
А> Так насколько "тормознутым" будет вариант, предложенный ТК?

Нужно тестировать на реальных данных. В MSDN есть статья которую можно взять как некоторую основу для размышлений Performance Comparison: Data Access Techniques
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[4]: трехзвенка - возникли нюансы с большим набором данных
От: Аноним  
Дата: 22.03.04 14:06
Оценка:
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, Аноним, Вы писали:


TK>>>В хранимую процедуру передавать xml документ. см sp_xml_preparedocument

А>> Сейчас по аське с другом большой спор зашел. Они как-раз таки от америкосов получили на доработку проект, в котором шла интенсивная работа через XML, по его дословному отзыву "потому что все что работает через XML — тормозит".
А>> Так насколько "тормознутым" будет вариант, предложенный ТК?

TK>Нужно тестировать на реальных данных. В MSDN есть статья которую можно взять как некоторую основу для размышлений Performance Comparison: Data Access Techniques

Просмотрел статейку. Не все так печально ,как утверждал друг. В его громадном проекте ХМL — это действительно "тормоз". В моем же случае, накладные расходы лихвой компенсируються большей гибкостью программы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.