пакетные манипуляции для онлайн веб-приложения - PullRequest
1 голос
/ 04 октября 2009

У клиента есть веб-система управления запасами. Система является запатентованной и сложной. у него около 100 таблиц в БД и сложные отношения между ними. у него ~ 1500000 предметов.

Заказчик проводит некоторые реорганизации в своих процессах, и теперь ему необходимо произвести массовые обновления и манипуляции с данными (только изменения данных, без структурных изменений). Онлайн-экраны не разрешают такую ​​работу, поскольку они были разработаны с самого начала без учета этого требования. База данных MS Sql 2005, а приложение - asp.net, работающий на IIS.

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

Однако потребности клиентов срочны из-за некоторых нормативных требований, поэтому мне интересно, будет ли эффективнее использовать какое-либо отображение между MSSQL и Excel или Access для предоставления необходимой информации. внесите изменения в Excel или Access, затем сохраните в БД. может использовать SSIS для этого. Я не знаком с SSIS или другими технологиями, которые делают такие вещи, поэтому я не могу судить, действительно ли второе решение эффективнее и лучше первого. Конечно, второе решение потребует некоторой работы и тестирования, но будет ли оно быстрее и дешевле?

Другой вопрос, есть ли другие способы сделать это?

любые идеи будут высоко оценены.

Ответы [ 3 ]

0 голосов
/ 04 октября 2009

В любом случае, вам понадобится тестирование.

Скажем, вы экспортируете 40000 продуктов в Excel, он реорганизует их, а затем вы возвращаете их в промежуточные таблицы и применяете изменения к вашим таблицам SQL. Поскольку Excel в основном является системой произвольной формы, что произойдет, если он введет недопустимые ситуации? Ваше обновление должно будет обнаружить его, выполнить сбой и выполнить откат или обработать его каким-либо указанным способом.

В любом случае, оба ваши предложения могут быть выполнены.

Лично для таких больших изменений я предпочитаю, чтобы опытный разработчик баз данных разрабатывал изменения в прямом SQL (жестком кодировании или на основе таблиц), тестировал их на производственных данных в тестовой среде (проводил сравнение таблицы до и после) и развернуть тот же сценарий для производства. Это также позволяет использовать существующие хранимые процедуры (вы используете SP, для обеспечения согласованного интерфейса с этой сложной базой данных, верно?), Так что базовая логика базы данных, которая уже используется, просто используется повторно.

0 голосов
/ 04 октября 2009

Вот стратегия, которая, как мне кажется, поможет вам добраться от А до Б в кратчайшие сроки.

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

Редко хорошей идеей будет встроить интерфейс в основную систему, который вы будете использовать только один или два раза. Это займет дополнительное время, и вы, вероятно, потратите больше времени на его обслуживание, чем на его использование.

Это позволит нам использовать уже существующие функции, которые имеют дело с отдельные предметы (нам просто нужно реализовать цикл)

Соберите свой собственный маленький дрянной интерфейс в приложении .NET, единственная цель которого - выполнить эту единственную задачу. Храните его в своей папке «вещи, которые я мог бы использовать позже».

Поскольку вы имеете дело с такими огромными объемами данных, убедитесь, что вы не запускаете свое приложение из удаленного местоположения.

Получите копию SQL 2005 и установите ее на уровне виртуализации. Скопируйте производственную базу данных на этот виртуализированный сервер SQL. Сделайте снимок вашей виртуализированной копии перед началом тестирования . Напишите и протестируйте свое приложение на соответствие этой виртуализированной копии. Откатывайтесь на исходный снимок каждый раз, когда будете тестировать. Изменяйте код, тестируйте и откатывайте, пока ваше приложение не сможет безошибочно выполнить желаемые изменения.

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

О да, убедитесь, что у вас есть свежая резервная копия, прежде чем запускать большое обновление.

0 голосов
/ 04 октября 2009

Я сомневаюсь, что Excel сможет работать с 1,5 милыми элементами / строками.

Когда вы говорите визуализировать данные в сетках - как ваш клиент будет вносить изменения? Вручную или за этим стоит какая-то автоматизация? Я бы настоятельно рекомендовал автоматизацию (поскольку на данный момент вы знаете только о 2 типах изменений). Может быть, даже простое автономное приложение-конвертер - не включайте в основную программу - в будущем им будет слишком заманчиво редактировать данные прямо в таблицах БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...