1. Переформулювання питання
Ваш приклад дозволяє припустити, що дані читаються лише на стороні Drupal, лише в односторонньому синхронізації. Я думаю, що це є найважливішим фактором, який слід враховувати тут, адже фактично яке б рішення ви не реалізували, це буде варіант віддаленого зберігання, синхронізації та локального кешування - навіть якщо локальне кешування в кінцевому підсумку є сутністю в базі даних Drupal.
Тож питання, а не "локальне та віддалене зберігання", буде таким:
- Якщо ви взагалі кешуєте дані локально;
- Якщо ви кешуєте дані як фактичні об'єкти та використовуєте канали (або подібні) для регулярної синхронізації даних; АБО
- Якщо ви використовуєте модуль, виготовлений на замовлення, який забезпечує синхронізацію та кешування.
Стаття, яка може вас зацікавити, знаходиться у " Віддалених об'єктах у Drupal 7 ".
2. Кешування даних
Загалом, кешування даних є хорошою ідеєю:
Ви захищені від перебоїв у роботі інших служб або тайм-аутів під час з'єднання;
Присутність ваших даних у вашій базі даних Drupal пришвидшить операції;
Наявність ваших даних у вашій базі даних Drupal означатиме, що ви швидше отримаєте інтеграцію з іншими модулями, такими як Views (хоча це не гарантується).
Єдиною перевагою не кешування даних є те, що ви ніколи не отримуєте несвіжих даних, що в деяких випадках є кращим - іноді краще відображати не дані, а нестареві дані. Я не вважаю це користю у наведеному вами прикладі, тому я зосередив цю відповідь на рішенні, яке передбачає локальне кешування.
3. Місцеві організації + синхронізація
Якщо ви хочете скористатися локальними сутностями та синхронізувати їх самостійно, ми повернемось до ваших оригінальних питань:
3.1 Вузли та спеціальні особи
Визначення того, що саме є вузлом, є досить відкритим. Сторінка документації по вузлах говорить про те, що вузли "розміщують", які "зберігаються" на вашому сайті - жодне з яких не стосується ваших даних;
Як розробник Drupal я би сподівався, що якщо щось є вузлом, то я повинен мати можливість маніпулювати ним на самому сайті;
Як користувач Drupal, я б також очікував, що вузли можна редагувати;
Цей випуск Drupal 8 https://drupal.org/node/2019031 передбачає, що поняття "лише для читання" - це те, що застосовуватиметься на рівні сутності, а не на рівні пакетів. Якщо це колись реалізується, ви отримаєте користь від цього, спустившись по цьому маршруту.
Підводячи підсумок: ваші дані лише для читання та віддаленого зберігання має більше сенсу використовувати для представлення ваших даних спеціальний тип сутності.
3.2 Синхронізація
У другій частині два основні модулі для цього є, як ви пропонуєте, каналами та міграцією .
Різниця між каналами та міграцією полягає в тому, що канали створюються для регулярного імпортування вмісту, тоді як Migrate - для одноразового перенесення вмісту з одного місця в інше. Migrate підтримує оновлення наявних даних, однак, враховуючи, що обидва модулі добре підтримуються, має сенс використовувати модуль, який було побудовано для завдання, що знаходиться під рукою - канали - це краще відповідність.
Використовуючи обидва модулі (канали для синхронізації, міграція для міграції), я не вважаю канали більш брудними, ніж міграція. Міграція вимагає більше спеціального коду за моїм досвідом, хоча міграція цілих сайтів є складнішою, ніж імпорт окремих типів вмісту, тому важко порівняти.
4. Спеціальний модуль для віддаленого зберігання, синхронізації + кешування
Існує ряд модулів, які можуть допомогти в цьому.
Ви згадали модуль даних веб-служб , а інші згадували модуль даних . Ще один варіант, який слід врахувати - це модуль API віддаленої сутності . Зауважте, що єдиний із тих, у кого я маю досвід, - це модуль даних.
Модуль даних веб-служб ще не має випуску - це може означати, що код ще не стабільний, API може змінюватися тощо. Він не підтримує запити полів Entity (відповідно до його сторінки проекту), і швидкий перегляд сховища коду не показує, що він має підтримку Views, тому ви не зможете використовувати Views для відображення своїх сутностей;
На мій досвід, модуль даних більше орієнтований на не розробників, які мають дані в таблиці та хочуть виставити їх переглядам. Я знайшов версію Drupal 6 досить неприємною у використанні - хоча це могло змінитися з тих пір;
Модуль API віддаленої сутності звучить досить перспективно - він підтримує отримання та кешування віддалених об'єктів та має підтримку Views. Це лише в альфа-релізі - API може все-таки змінюватися. На перший погляд, схоже, немає і підтримки Entity Field Query, і він підтримує лише один тип віддаленого сервісу, тож вам доведеться реалізувати свій власний.
Висновок
Зважаючи на те, що жоден з модулів віддаленого зберігання не підтримує запити по суті Entity, використання фактичних сутностей + каналів - це рішення, яке дасть вам найкращу інтеграцію з вашим сайтом Drupal.
Якщо підтримка Views достатня, і ви не турбуєтесь про потенційну інтеграцію з іншими модулями за допомогою Entity Field Queries, то можливим буде використання API віддаленої сутності - вам потрібно буде впровадити власний віддалений інтерфейс.