Какой метод проверки данных наиболее подходит для больших наборов данных - PullRequest
1 голос
/ 12 февраля 2009

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

  1. Пользователь использует веб-интерфейс (ASP.NET) для загрузки данных из базы данных в Excel.
  2. Пользователь изменяет файл Excel. Только определенные данные могут быть изменены в качестве другой карты в БД.
  3. Как только пользователь доволен своими изменениями, он загружает измененный файл Excel через интерфейс ASP.NET.
  4. Теперь задача сервера - извлечь данные из файла Excel (используя Gembox) и проверить данные в базе данных (вот где у меня проблемы)
  5. Результаты проверки отображаются на другой странице ASP.NET после завершения проверки. Проверка выполняется мягко, и поэтому серьезные сбои только происходят, когда, например, отсутствует сопоставление индекса с БД. (Отсутствие данных приводит к игнорированию и т. Д.)
  6. Пользователь может решить, будут ли предпринятые действия подходящими, при принятии этих изменений система будет применять изменения. (Добавить, изменить или игнорировать)

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

Недоступно для строк, нуждающихся в обновлении, для достижения более 65 тыс.

Вопрос в следующем: Каков наилучший способ анализа данных для проверки и построения наборов изменений и дополнений?

Если я загружу все данные, которые должны быть проверены в Excel, в память, я могу излишне повлиять на приложение, уже загруженное памятью. Если я делаю попадание в базу данных для каждого кортежа в файле Excel, я просматриваю более 65 000 обращений к базе данных.

Помощь

Ответы [ 4 ]

3 голосов
/ 12 февраля 2009

Подход, который я видел в прошлом:

  1. Массовая загрузка данных пользователя в «чистую» таблицу в базе данных.
  2. Проверка данных в рабочей таблице с помощью одной хранимой процедуры (выполнение серии запросов), маркировка строк, которые не прошли проверку, требуют обновления и т. Д.
  3. Действие помеченных строк соответствующим образом.

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

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

1 голос
/ 12 февраля 2009

Ваша проблема очень распространена в системах хранилищ данных, где массовая загрузка и очистка данных являются основной частью (регулярной) работы, которую необходимо выполнить. Я предлагаю вам поискать ETL (Extract Transform Load), промежуточные таблицы, и вы найдете множество хороших вещей.

В широком ответе на вашу проблему: если вы «загружаете данные в память» для проверки, вы фактически повторно внедряете часть механизма БД в свой собственный код. Теперь это может быть хорошо, если это сделать быстрее и умнее. Например, у вас может быть только небольшой диапазон допустимых дат для вашего экстракта Excel, поэтому вам не нужно присоединяться к таблице, чтобы проверить, что даты находятся в диапазоне. Однако для других данных, таких как внешние ключи и т. Д., Позвольте БД делать то, что у нее хорошо получается.

Использование промежуточной таблицы / базы данных / сервера является распространенным решением, поскольку объемы данных становятся большими. Кстати, позволить пользователям чистить данные в Excel - это действительно хорошая идея, а возможность «случайно» удалить важные данные - действительно плохая идея. Можете ли вы заблокировать ячейки / столбцы, чтобы предотвратить это, и / или ввести некоторую базовую проверку в Excel. Если поле должно быть заполнено и должно быть датой, вы можете проверить это в нескольких строках Excel. Ваши пользователи будут счастливы, так как им не нужно загружать файлы перед обнаружением проблем.

0 голосов
/ 03 апреля 2009

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

0 голосов
/ 12 февраля 2009

Чтобы ответить на этот вопрос правильно, была бы полезна следующая информация

  1. Как вы собираетесь уведомлять пользователя о сбоях?
  2. В результате одной ошибки проверки будет загружено 64 999 записей или нет?
...