2010-07-22 3 views
4

Я рассматриваю модернизацию программы реального времени ASP.NET C#, которая принимает очень часто обновляемые данные и перемещает их из одной базы данных в другую.Что более эффективно, SQL или плоский доступ к файлам?

В настоящее время используется приложение среднего человека, которое тянет от одного и вставляет в другое, используя SqlBulkCopy.

Лучше ли, чтобы исходный сервер db написал плоский файл, а средний человек собирался из этого плоского файла?

Или триггеры sql? Или DTS?

Любые советы были бы замечательными!

Благодаря

+3

Не понимает ASP.NET и в реальном времени в том же предложении! – leppie

+0

Очень часто, как в миллисекундах, в секунду, в минуту, ..? Плоские файлы никогда не будут ответом. Триггеры - это «самая быстрая» (самая низкая задержка). Какая латентность вам нужна? –

+0

Текущее приложение получает доступ к sql каждые 60 секунд. –

ответ

2

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

Какую нагрузку вам ожидает? Вы делаете сложные преобразования? Если у вас есть ресурсы для использования SSIS, я бы рекомендовал, чтобы он масштабировался так высоко, как вы хотите.

+1

В идеале я бы пошел с DTS/SSIS - особенно если базами данных являются SQL Server. Это в основном потому, что, по моему опыту, логика вокруг передачи данных может со временем усложняться, и для этой цели создан SSIS. – InSane

+0

Я перемещаю приблизительно 250 строк, 10 столбцов, в основном varchars и datetime - каждые 60 секунд. SSIS вы думаете? - Я буду исследовать. Благодаря! –

+0

В таком случае, с такими небольшими числами, я бы просто написал SQL-запрос для выполнения работы, а затем запустил его как SQL-задание каждые 60 секунд. –

1

Считаете ли вы, что SQL Server Replication или SSIS?

+0

Считается да, правильно расследовано нет. Спасибо за отзыв, я рассмотрю эти технологии сегодня. –

2

Чтение и запись в плоский файл более эффективны. Но если вы хотите использовать индексный поиск и другие функции SQL, лучше использовать SQL.

+0

Плоский файл? Это просто не может быть хорошим, не так ли? Как насчет проблем с блокировкой? Зачем писать его на диск, а затем читать его снова, когда вся ситуация находится в рамках проблемы (т. Е. Он имеет полный контроль)? Как это более эффективно? –

+0

В настоящее время отсутствуют индексы или элементы sql. буквально собирайте x строк за x период, а затем дамп на новый сервер. Если SQL-сервер может использовать сохраненный proc для записи в плоский файл - тогда я мог бы собрать и сбросить новый ящик? –

+0

Думаю, вам следует предоставить дополнительную информацию. Сбор за х период означает использование индекса. Зачем вам нужна процедура SQL в случае плоского файла? – Trurl

2

Насколько я знаю, что есть три различных «стандартных» способов сделать это с сервером SQL:

  • Replication. Обычно используется для синхронизации таблиц между базами данных с издателем и подписчиками.
  • SSIS (прежний DTS). Может быть автоматизирован с запланированным заданием.
  • Service Broker. Новый парень на блоке.

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

0

Если вам нравится писать C# и не нравится SSIS. Вы можете посмотреть на Rhino ETL в качестве альтернативы. Я нашел, что он работает очень быстро.

Плоский файл кажется ненужным, поскольку вы повторно записываете на диск, когда вам это не нужно.