Мигриране от AppEngine файлове към cloudstorage

Приложният програмен интерфейс (API) на файлове имаше необявен престой (ApiTemporaryUnavailableError) вчера, който продължи няколко часа.

Сега обмисляме да заменим (сега отхвърления) API за файлове с cloudstorage (GCS), но все пак да продължим да използваме API на blobstore за други операции (като качване или изтегляне на файлове). Също така бихме запазили съществуващи файлове, написани с API за файлове в blobstore.

Основният проблем изглежда е, че нашето приложение използва BlobInfo (за определяне на типове mime, имена на файлове, списък на петна) по-късно. Но в документацията се казва, че файловете, написани на GCS и вмъкнати чрез blobstore.create_gs_key в blobstore, нямат BlobInfo.

Какви са възможните решения?

  • Напишете арбитър за съхранение (който използва BlobInfo или GCS метаданни)
  • Съхранявайте собствена таблица с данни BlobInfo в допълнение към таблицата на Google
  • Преобразувайте цялата кодова база от blobstore в GCS (и мигрирайте съществуващи blob в GCS)
  • Забравете за AppEngine и стартирайте нашето самостоятелно приложение (вижте по-долу) на Compute Engine или EC2
  • ???

Забележка: Ние също имаме самостоятелна версия на нашето приложение (която работи локално), която използва частна реализация на частите от API на AppEngine (ние не използваме сървър за разработка), който се използва от нашето приложение. Така че всяко парче код се нуждае и от локална реализация.


person Ruediger Jungbeck    schedule 01.10.2014    source източник
comment
това определено не е отговор, но мисля, че си струва да се отбележи, че API за файлове е резервно копие. Не означава, че няма да се върне обратно, но старият ви код трябва да работи известно време :)   -  person Patrice    schedule 02.10.2014
comment
Ако решите да продължите да използвате AppEngine, подходящото за бъдещето решение е да преработите кода в GCS и да мигрирате съществуващи петна към GCS (напр. прост mapreduce, който ще обхожда всички обекти, чете блобове и ги записва в GCS).   -  person Nikita Uchaev    schedule 02.10.2014


Отговори (1)


Написах основно за използването на GCS. Погледнете тук: https://gist.github.com/voscausa/9541133 Показва как за инсталиране и използване на GCS приложение в DEV и разгърнато.

person voscausa    schedule 01.10.2014
comment
Вече разбрах как да пиша на GCS. Проблемът ми е, че нашето приложение използва BlobInfo. Получавате ли BlobInfo за GCS файловете? - person Ruediger Jungbeck; 02.10.2014
comment
GCS има функционален интерфейс, а не клас, подобен на BlobInfo. Но можете да напишете свой собствен клас BlobInfo, който използва тези функции за кофата по подразбиране. Не очаквам големи затруднения за тези, които споменавате: mime типове, имена на файлове и списъчен блок. Това ли имате предвид с арбитър за съхранение? - person voscausa; 02.10.2014
comment
В момента имаме данни в blobstore (посочен в друга част, ако базата данни чрез blobkey). Така че или ги преместваме в GCS; и актуализираме препратките), или се нуждаем от код, който обработва blobstore и GCS (това имах предвид с арбитър) - person Ruediger Jungbeck; 02.10.2014