Архитектура для Microsoft Azure. CSV в SQL - PullRequest
3 голосов
/ 07 апреля 2011

Я стажер, отвечающий за исследование проекта Azure.
В данный момент я разрабатываю архитектуру для части проекта.

Цель - преобразовать несколько файлов CSV вбаза данных SQL в облаке.Эти csv будут отправлены из случайных мест в стране и должны быть обработаны, чтобы в конечном итоге доступ к базе данных можно было получить с помощью веб-службы.

Я совершенно новичок в лазурной сцене и учусь самостоятельно, но этовсе немного нечетко в моей голове.

некоторая информация:

CSV - это небольшие файлы, но около 20 000 будут приниматься ежедневно, да, это должно быть хранилище SQL, потому что мынужно легко агрегировать данные.

что будет в csv и должно быть сохранено ??
уникальное значение ключа (строка)
значение потребления (double)
метка даты-времени (datetime / string)
значение качества (int)

Архитектура, которую я имел в виду, будет:
Http-запросы к облаку(облачность нуждается в службе прослушивания?)
Служба очереди, которая хранит CSV-файлы перед их обработкой
Хранилище на диске sql (прямой импорт? или мне нужна какая-то рабочая роль между ними?)
Веб-сервис, которыйЯ получу запросы от внешнего AOS или клиентского приложения с запросом данных в sqlDB.

Правильно ли я считаю, что эту проблему можно решить стандартными компонентами или мне нужно реализовать роль vm?Как бы вы это настроили?

Любой вклад был бы очень признателен, потому что я действительно чувствую себя потерянным в облаках:)
Надеюсь, я дал четкий обзор требований ...
Это не таклегко объяснить что-то, что ты не до конца понимаешь

Ответы [ 2 ]

3 голосов
/ 07 апреля 2011

Вам вообще не нужна роль виртуальной машины. Вот идея сторожа:

  • Настройте веб-сервис, который позволяет вам выдвигать ваши CSV-файлы (это легко сделать в веб-роли с помощью SVC). Пусть этот сервисный метод сохранит каждый CSV-объект в BLOB-объекте Azure в каком-то определенном контейнере (например, «uploads») с именем, например «guid.csv» - просто вызовите Guid.NewGuid (). ToString (), чтобы сгенерировать guid на лету. , Как только это будет сделано, создайте сообщение очереди, ссылающееся на это имя файла.
  • В методе Run () того же экземпляра роли, где размещен ваш svc (просто переопределите Run ()), или в отдельной рабочей роли, установите цикл while (true), чтобы просто читать из очереди, чтобы получить csv требуется импорт, чтение большого двоичного объекта в поток памяти и выгрузка во временный файл на диске, а затем вызов локального вспомогательного метода для анализа CSV и вызова SQL-вставки.
  • Настройка другой веб-службы для получения данных. Опять же, это может быть размещено в той же веб-роли или другой.

Абсолютно не требуется роль VM.

0 голосов
/ 08 апреля 2011

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

...