Сохранять данные полученные от вэб-сервиса в локальной базе... Стоит ли?

Sync

Новичок
Сохранять данные полученные от вэб-сервиса в локальной базе... Стоит ли?

Прошу наставить на путь истинный.

Есть небольшое тур-агентство, которое продает туры крупного оператора.

На сайте этой маленькой фирмы есть форма поиска по турам (период, откуда, куда, взрослые, дети).

Сайт построен на своей cms и имеет практически весь функционал для управления контентом, турами, прайсами и тд.
Естественно набивать все прайсы вручную по всем направлениям работа не хитрая, тем более что у крупного оператора крутится вэб-сервис (http://turtess-online.com.ua/TourML/Service.asmx).

В идеале система должна работать так: при поиске обращаемся к веб-сервису - если он работает - отдаем клиенту самое свежее. С другой стороны файлы xml могут периодически присылать по почте и кроном их можно заганять в локальную базу - в этом случае мы сможем работать автономно, хоть и не с супер актуальными данными.

В любом случае, проблема следующая. Файл имеет примерно такую структуру:
PHP:
  <references>
    <countries>
      <country key="9" name="Egypt" nameLat="Egypt" />
      <country key="47" name="Ukraine" nameLat="Ukraine" />
    </countries>
    <resorts>
      <resort key="37" name="Sharm" countryKey="9" />
      <resort key="36" name="Soma Bay" countryKey="9" />
    </resorts>
    <cities>
      <city key="379" name="Kiev" nameLat="Kiev" code="IEV" countryKey="47" />
      <city key="26" name="Hurghada" nameLat="Hurghada" code="HRG" countryKey="9" />
    </cities>
    <hotels>
      <hotel key="2243" name="Saint Maria" countryKey="9" cityKey="26" />
      <hotel key="2172" name="Calimera Hurghada" countryKey="9" cityKey="26" />
    </hotels>
    <flights>
      <flight key="890" code="2123" fromCityKey="379" toCityKey="26" airlineKey="4">
        <flightTime key="1" fake="true" fromAirportKey="8" toAirportKey="1" dateBegin="2007-01-21" dateEnd="2007-01-21" />
        <flightTime key="2" fake="true" fromAirportKey="8" toAirportKey="1" dateBegin="2007-01-24" dateEnd="2007-01-24" />
      </flight>
    </flights>

      ........
То есть сгенерирован он на основании БД крупного оператора. Мне же надо провести соответствие с локальной базой данных.
Чтобы выдать результат посетителю по его запросу в форме поиска.
У меня тоже страны, регионы, аэропорты, отели, комнаты и тд.

Честно говоря я даже не знаю как задать вопрос. У меня есть сомнения что я неправильно думаю, решив сопоставлять свои и чужие данные, так как по-моему что это очень большой кусок работы.
Может есть выход лучше в плане логики? Проблем с обработкой XML не возникает.
Все работает на своем сервере.

Очень нуждаюсь в ответе, спасибо.
 

Анатолий

Новичок
Если я правильно понял вопрос, то сохранять эти данные у себя целесообразно по двум причинам:
1) Если данные часто запрашиваются не нужно будет постоянно коннектиться к удаленному серваку
2) Удаленный сервак может и не работать или каналы до него будут перегружены в итоге тормоза и пользователь не получит нужной информации.
 

inTox

вёбных дел мастер
а может разницу? или пересечение? я не понял...
 

Sync

Новичок
Автор оригинала: inTox
что это значит, интересно?
У меня своя структура БД.
Например в форме поиска

country_id - ID страны
city_id - ID города откуда летим

В этих же файлах свои айдишники, и даже когда я буду парсить это и складывать у себя, я должен знать к какому аэропорту относиться какой рейс. С географией не так сложно, там есть международные представления, типа Киев-Борисполь - KBP и тд.
Но есть отели, комнаты, размещения и т.д, где глючом является численный идентификатор (INT PRIMARY KEY AUTO_INCREMENT)

Автор оригинала: Анатолий
Если я правильно понял вопрос, то сохранять эти данные у себя целесообразно по двум причинам
Да, я про это написал, но также добавил про трудность реализации этого процесса. Моя БД например около 80 таблиц.
 

inTox

вёбных дел мастер
а-а... кажется понял. Ты не знаешь как сджойнить две базы или 2 XML файла?
 

Sync

Новичок
Автор оригинала: inTox
а-а... кажется понял. Ты не знаешь как сджойнить две базы или 2 XML файла?
Нет, ты не понял.
Конкретный пример. На входе имеем xml файл с ценами для отеля на какой-то период.
Цена формируеться на основании размещения (1 человек, 2+2 детей, 3 человека), типа комнаты и может чего-то еще.

В админке у меня реализован функционал для управления отелями, их комнатами и тд.
Шаг 1:
PHP:
    <hotels>
      <hotel key="2243" name="Saint Maria" countryKey="9" cityKey="26" />
      <hotel key="2172" name="Calimera Hurghada" countryKey="9" cityKey="26" />
    </hotels>
У меня тоже есть отель в базе "Calimera Hurghada", но id его не такой как key="2172", нужно сопоставить. По названию отеля, как понимаешь, сопоставлять нежелательно, мягко говоря.

Аналогично для комнат будет что-то вроде:
PHP:
    <rooms>
      <room key="12311" name="Super Deluxe" hotelKey="2172" />
      <room key="12312" name="Bungalo" hotelKey="2172" />
    </rooms>
Опять надо найти соответствие этих комнат - своим, чтобы правильно сформировать прайс и тд.

----
Короче говоря, среди паттернов ООП есть такой как Адаптер (Adapter), он же wrapper. В моем случае нужно разработать адаптер, который приводит интерфейс данных входящего xml к интерфейсу моей БД.
Поэтому и возникли сомнения насчет приведения "в лоб" - сопоставление всех ключей сущностей.
 
Сверху