2016-05-27 3 views
0

В Azure Web App Мне нужно эффективно запросить MaxMind GeoIP2 City Database (из-за объема запросов и требований к задержке мы не можем использовать API останова MaxMind).Как хранить (и запрашивать) базу данных MaxMind GeoIP2 в Azure?

Мне интересно, какой лучший способ хранения db (двоичный формат MMDB, доступ к которому осуществляется через official .NET api), так что его легко обновить с минимальным временем простоя (мы собираемся подписаться на ежемесячные обновления) и по-прежнему экономически выгодны Что касается хранения и транзакций Azure.

Очевидно, что блочные капли - это путь, но я не уверен в ежемесячных обновлениях и факте, что GeiIP2 api загружает в память весь db (я не знаю, было ли это проблемой для Интернета App, если мне нужен веб-рабочий, чтобы поддерживать его, или мне нужно что-то еще), но на самом деле я еще не знаю, насколько большой файл.

Какое наиболее экономичное решение, которое обеспечивает низкую задержку в огромном объеме?

+0

экономичным решением будет хранение в виде лазурного стола. если вы можете получить компиляцию rightkeykey rowkey, то не должно быть проблемой. я не уверен в том, в каком формате вы получите db. Если это csv, я столкнулся с этой библиотекой, которая облегчает хранение данных csv в хранилище таблиц azure. https://blogs.msdn.microsoft.com/jmstall/2012/08/03/converting-between-azure-tables-and-csv/ – Aravind

+0

@ Aravind - Я не вижу, как хранилище таблиц решает проблему хранения файл двоичной базы данных. Я не думаю, что речь идет о преобразовании контента из одного формата в другой. Даже используя версию csv, вам все равно придется копировать данные из хранилища таблиц на локальный диск, чтобы использовать его содержимое через api. Также: Хранилище таблиц и хранилище blob имеют одинаковую стоимость за каждый GB. –

+0

@ Давид справа. В любом случае вам все равно придется обновлять базу данных, когда и когда источник предоставит вам обновление. Если он двоичный, то блоком blobs является опция. также не думайте, что загрузка всего db в память - хороший выбор. – Aravind

ответ

1

В соответствии с API docs у вас должна быть база данных, доступная в файловой системе (API ничего не знает о хранилище Azure и соответствующем REST API). Таким образом, независимо от того, где вы постоянно сохраняете его, вам нужно будет иметь его на диске где-нибудь.

Я понятия не имею, насколько велик объем базы данных, но для веб-приложений, облачных сервисов (роли веб-/ рабочих) и виртуальных машин (будь то Linux или Windows) есть локальные диски. И у вас есть доступ на чтение и запись к этим дискам. Итак, вам нужно скопировать двоичный файл базы данных (или csv) на локальный диск откуда-то. На этом этапе, когда вы инициализируете SDK, вы должны создать DatabaseReader и указать его на локально загруженную копию файла базы данных.

Вы упомянули сохранение базы данных в хранилище памяти. Ничто не мешает вам сделать это и просто загрузить копию на локальный диск. И ничто не мешает вам хранить несколько версий в нескольких блоках. Примечание. Вы также можете воспользоваться хранилищем файлов Azure (общий ресурс SMB). Который вы выбираете, зависит от вас.

Что касается наиболее эффективного с точки зрения затрат решения: вам нужно будет заниматься настройкой цен самостоятельно, чтобы узнать, что наиболее эффективно. Вам также необходимо оценить, сколько оперативной памяти доступно для выбранного экземпляра виртуальной машины VM/роли/веб-приложения, которое вы выбрали. Вы упомянули веб-приложения в своем вопросе: количество экземпляров веб-приложений составляет от 0,5 до 14 ГБ, в зависимости от выбранного вами уровня (опять же, вам нужно оценить это).

+0

Помогла ли поддержка хранилища файлов в этом случае? Тем не менее, я не проверял цены. – Aravind

+0

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

+0

Это не очень хорошая идея, читатель базы данных берет только поток и не дает вам возможности использовать в базе данных памяти, только память сопоставлена ​​с блоком памяти .... не очень хорошая идея –

Смежные вопросы