Вывод Oracle: курсор, файл или очень длинная строка? - PullRequest
0 голосов
/ 23 апреля 2010

Во-первых, установка: у меня есть таблица в базе данных Oracle10g с пространственными столбцами. Мне нужно иметь возможность передать пространственную привязку, чтобы я мог перепроектировать геометрию в произвольную систему координат. В конечном итоге мне нужно сжать результаты этой проекции в zip-файл и сделать его доступным для загрузки через проект Silverlight.

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

В частности, я вижу пару возможностей. Есть еще много, но это идея того, как я думаю:

a) Передать SRID в динамическое представление -> выполнить проецирование, вывести курсор -> отправить курсор в UTL_COMPRESS -> записать вывод в файл (каким-либо образом) -> отправить URL-адрес в приложение Silverlight

б) Используйте SRID для вызова функции Oracle из приложения Silverlight -> выполнить проекцию, вывести строку -> построить строки в файл -> сжать файл с помощью библиотеки SharpZipLib в .NET -> отправить поток обратно обратно в Silverlight приложение

Я сделал первые два шага из пункта b), и преобразование 100 баллов заняло около 7 секунд, что недопустимо медленно. Я надеюсь, что в Oracle будет быстрее выполнять обработку полностью.

Если кто-то может увидеть потенциальные проблемы с любым из способов сделать это, или может предложить лучший способ, это было бы очень полезно.

Спасибо!

ETA: Я хотел дать этому лучшее название, прежде чем отправлять. К сожалению.

1 Ответ

0 голосов
/ 24 августа 2010

Просто убираю оставшиеся без ответа вопросы. Этот вопрос касался системы, которую мне нужно было создать, чтобы пользователь приложения Silverlight мог выбрать набор точек (несколько тысяч из них) и экспортировать эти точки, повторно спроецированные в координаты плоскости состояния. Проблема заключалась в том, что преобразование тысяч точек было слишком медленным, чтобы произойти, пока пользователь ждал. поэтому я сделал следующее:

Я передаю SRID из приложения Silverlight в Oracle и создаю запрос на преобразование. У меня есть отдельная работа опроса таблицы запросов. Когда он находит один, он конвертирует все точки, выбранные в запросе, и записывает их в файл. Когда файл завершен, служба отправляет электронное письмо на адрес в запросе с URL-адресом, необходимым для загрузки файла.

...