1. Merumuskan kembali pertanyaan
Contoh Anda menunjukkan bahwa data hanya dibaca di sisi Drupal, dengan sinkronisasi satu arah saja. Saya pikir ini adalah faktor yang paling penting untuk dipertimbangkan di sini, karena pada dasarnya solusi apa pun yang Anda terapkan akan menjadi varian penyimpanan jauh, sinkronisasi dan caching lokal - bahkan jika caching lokal akhirnya menjadi entitas dalam database Drupal.
Jadi pertanyaannya, daripada menjadi "penyimpanan lokal vs penyimpanan jauh" akan menjadi:
- Jika Anda menyimpan data secara lokal sama sekali;
- Jika Anda menyimpan data sebagai entitas aktual, dan menggunakan Umpan (atau serupa) untuk menyinkronkan data secara teratur; ATAU
- Jika Anda menggunakan modul yang dibuat khusus yang menyediakan sinkronisasi dan caching.
Artikel yang mungkin menarik bagi Anda adalah " Entitas Jarak Jauh di Drupal 7 ".
2. Caching data
Secara umum, caching data adalah ide yang baik:
Anda terlindungi dari pemadaman layanan lain, atau batas waktu dalam koneksi;
Memiliki data Anda hadir dalam database Drupal Anda akan mempercepat operasi;
Memiliki data Anda hadir dalam database Drupal Anda akan berarti bahwa Anda lebih mungkin untuk mendapatkan integrasi dengan modul lain, seperti Views (meskipun ini tidak dijamin).
Satu-satunya keuntungan dari tidak melakukan caching data adalah Anda tidak pernah mendapatkan data basi, yang dalam beberapa kasus lebih disukai - kadang-kadang lebih baik untuk tidak menampilkan data daripada data basi. Saya tidak melihat ini sebagai manfaat dalam contoh yang Anda berikan, jadi saya akan memfokuskan jawaban ini pada solusi yang melibatkan caching lokal.
3. Entitas lokal + Sinkronisasi
Jika Anda memilih opsi memiliki entitas lokal dan menyinkronkannya sendiri, maka kami kembali ke pertanyaan awal Anda:
3,1 Nodes vs entitas Kustom
Definisi apa sebenarnya sebuah simpul adalah definisi yang cukup terbuka. The halaman dokumentasi pada node menunjukkan bahwa node "postingan" yang "disimpan" di situs Anda - baik yang berlaku untuk data Anda;
Sebagai pengembang Drupal saya berharap bahwa jika sesuatu adalah sebuah node maka saya harus dapat memanipulasinya di situs itu sendiri;
Sebagai pengguna Drupal, saya juga berharap bahwa node dapat diedit;
Masalah Drupal 8 ini https://drupal.org/node/2019031 menyarankan bahwa konsep "hanya baca" adalah konsep yang akan berlaku di tingkat entitas, bukan pada tingkat bundel. Jika ini pernah diterapkan Anda akan mendapat manfaat dari itu karena telah menempuh rute ini.
Untuk meringkas: data Anda hanya dibaca dan disimpan dari jarak jauh , lebih masuk akal untuk menggunakan jenis entitas khusus untuk mewakili data Anda.
3.2 Sinkronisasi
Untuk bagian kedua, dua modul utama untuk ini adalah, seperti yang Anda sarankan, Umpan dan Migrasi .
Perbedaan antara Umpan dan Migrasi adalah bahwa Umpan dibuat untuk mengimpor konten secara teratur, sedangkan Migrasi dibuat untuk porting konten satu kali dari satu tempat ke tempat lain. Migrasi mendukung pembaruan data yang ada, namun mengingat kedua modul didukung dengan baik, lebih masuk akal untuk menggunakan modul yang dibuat untuk tugas yang sedang dikerjakan - Umpan lebih cocok.
Setelah menggunakan kedua modul itu sendiri (Umpan untuk sinkronisasi, Migrasi untuk migrasi) Saya tidak menemukan Feed lebih berantakan daripada Migrasi. Migrasikan memerlukan lebih banyak kode khusus dalam pengalaman saya, meskipun memigrasikan seluruh situs lebih kompleks daripada mengimpor tipe konten tunggal, jadi sulit untuk membandingkan.
4. Modul khusus untuk penyimpanan jarak jauh, sinkronisasi + caching
Ada sejumlah modul di luar sana yang dapat membantu tugas ini.
Anda menyebutkan modul Data Layanan Web , dan yang lain menyebutkan modul Data . Opsi lain untuk dipertimbangkan adalah modul Remote Entity API . Perhatikan bahwa satu-satunya yang saya alami adalah modul Data.
Modul Data Layanan Web belum memiliki rilis - yang mungkin menunjukkan kode belum stabil, API mungkin berubah dan sebagainya. Itu tidak mendukung Kueri Bidang Entitas (sesuai dengan halaman proyeknya), dan penelusuran cepat dari repositori kode tidak menunjukkan bukti bahwa ia memiliki dukungan Tampilan - sehingga Anda tidak akan dapat menggunakan Tampilan untuk menampilkan entitas Anda;
Modul Data lebih berorientasi, menurut pengalaman saya, terhadap non-pengembang yang memiliki data dalam tabel dan ingin mengeksposnya ke tampilan. Saya telah menemukan versi Drupal 6 cukup frustasi untuk digunakan - meskipun itu mungkin telah berubah sejak saat itu;
Modul Remote Entity API kedengarannya cukup menjanjikan - mendukung pengambilan dan caching entitas jauh, dan memiliki dukungan Views. Ini hanya pada rilis alpha - jadi API mungkin masih berubah. Pada pandangan pertama sepertinya tidak memiliki dukungan Entity Field Query, dan hanya mendukung satu jenis layanan jarak jauh sehingga Anda harus menerapkan sendiri.
Kesimpulan
Mengingat bahwa tidak ada modul penyimpanan jarak jauh yang mendukung Kueri Bidang Entitas, menggunakan entitas + umpan aktual adalah solusi yang akan memberi Anda integrasi terbaik dengan situs Drupal Anda.
Jika dukungan Views sudah cukup, dan Anda tidak khawatir tentang potensi integrasi dengan modul lain melalui Kueri Bidang Entitas, maka menggunakan API Entitas Jarak Jauh mungkin merupakan cara yang harus dilakukan - Anda perlu mengimplementasikan antarmuka jarak jauh Anda sendiri.