Saya telah membaca frasa berikut di situs web:
Alih-alih menambahkan bidang baru ke jenis konten, menambahkan bidang yang ada adalah pilihan yang lebih baik untuk mengurangi kompleksitas sistem dan meningkatkan skalabilitas.
Dan beberapa keraguan muncul.
Dalam sistem yang kami kembangkan, kami memiliki kemungkinan untuk menggunakan kembali bidang di 3 atau 4 jenis konten tetapi alih-alih meningkatkan skalabilitas seperti ungkapan yang dikutip, saya khawatir itu akan menguranginya, karena tabel bidang akan lebih cepat menjadi hambatan. (Setidaknya itulah alasan saya dalam kasus ini, karena semua nilai bidang itu bersama-sama, akan menjadi beberapa juta per tahun dan itu akan membuat tabel terlalu besar). Apa kamu setuju?
Berapa banyak baris akan menjadi maksimum yang masuk akal untuk membidik ketika merancang? Dengan begitu kita bisa memutuskan kapan harus menggunakan kembali bidang dan kapan membuat yang baru (meskipun ada kesempatan untuk menggunakan kembali).
sumber
Jawaban:
Jumlah data dalam suatu bidang biasanya tidak menjadi masalah. Jika Anda khawatir tentang itu, lihat ke plugin penyimpanan lapangan alternatif atau tulis sendiri. Misalnya MongoDB , yang dapat menangani hampir semua yang Anda masukkan ke dalamnya. Ini misalnya digunakan di http://examiner.com .
Sebuah nyata masalah namun adalah jumlah bidang yang Anda miliki. Karena saat ini dalam Drupal 7, konfigurasi bidang lengkap dari semua bidang, tidak peduli apakah itu dimuat atau tidak, diambil dari cache pada setiap permintaan tunggal.
Saya telah melihat situs dengan lebih dari 250 bidang, tempat memuat dan membatalkan instalasi konfigurasi bidang membutuhkan memori 13MB +.
Sunting: Cache info bidang telah diperbaiki (lihat http://drupal.org/node/1040790 untuk detail) dengan Drupal 7.22, hanya bidang bundel yang ditampilkan pada halaman tertentu yang dimuat dari cache dan semuanya entri cache yang terpisah. Itu hanya berfungsi jika tidak ada panggilan API yang salah yang meminta instance di beberapa bundel.
sumber
Saya sepenuhnya setuju dengan berdir. Berikut adalah pengalaman saya dengan proyek dengan jutaan baris dan 30-40 bidang pada beberapa jenis simpul.
sumber
Jika Anda benar-benar khawatir tentang apa yang akan terjadi, maka saya pikir simulasi dilakukan.
Dapatkan akun di Rackspace Cloud, Amazon, Linode, atau di mana pun Anda dapat dengan mudah memutar VPS. Buat dua contoh yang identik. Instal Drupal di masing-masing. Buat beberapa jenis konten dummy, dan atur bidang satu arah dalam satu sistem, dan cara lainnya lainnya di lainnya. Gunakan modul devel untuk membuat konten muatan kapal. Sesuaikan pengaturan kinerja untuk memastikan Drupal caching sesuai kebutuhan. Jalankan mysqltuner dan sesuaikan MySQL pada setiap rekomendasi. Periksa pengaturan PHP dan APC sehingga Anda tidak memukul swap dan bahwa Anda tidak mengaduk cache APC.
Setelah Anda mendapatkan konfigurasi dasar yang baik untuk masing-masing, mulailah mensimulasikan lalu lintas (baik pengunjung normal maupun pembaruan admin) dengan wget dan drush, lalu profil.
Simulasi tidak pernah sempurna, tetapi bisa membuat Anda bergerak ke arah yang benar.
sumber
Satu masalah dengan skalabilitas dalam bidang dalam penggunaan indeks pada setiap bidang tabel tunggal di setiap bidang dalam tabel yang dibuat. Indeks berkerumun kunci utama adalah gabungan dari sebagian besar bidang, lalu dibuat indeks terpisah pada setiap individu bidang. Indeks membuat satu ton overhead menulis untuk database, dan dalam banyak kasus tidak pernah digunakan.
sumber
tip lain: memiliki banyak bidang akan menyebabkan masalah dengan banyak modul yang berbeda juga. GUI Token misalnya akan membuat browser Anda ketinggalan selama beberapa menit jika Anda mencoba mengedit alias URL misalnya. Perilaku ini dapat dilihat pada semua halaman di mana token akan dimuat dan ditampilkan (termasuk devel - dpm () dll.)
Tidak ada manfaat kinerja dalam memisahkan data ini di beberapa tabel saat menggunakan InnoDB (MyISAM berbeda karena penguncian tabel). Jadi - jika Anda tahu Anda akan memiliki banyak tipe konten yang serupa dengan bidang yang sama (konfigurasi yang juga akan sama, mungkin berbeda dalam pelabelan saja) menggunakan kembali bidang Anda!
Mungkin juga mempermudah pembuatan template karena atribut simpul yang sama.
sumber
Hanya berbagi cerita saya, kami menggunakan Drupal Commerce dan memiliki sekitar 40 bidang dalam variasi produk kami (Sku) dan kemudian 460 lainnya (ya, gila) di Tampilan Produk kami. Kami memiliki beberapa tampilan perbandingan produk yang akan melihat semua bidang ini. Tanpa caching, beberapa halaman bisa memakan waktu hingga satu menit!
Namun, itu berhasil. Jika Anda memang menggunakan caching dan Varnish, waktu tunggu pengguna tidak seburuk itu.
Masalah utama yang kami hadapi dengan begitu banyak bidang adalah dengan Display Suite, karena itu akan menjadi sangat lambat (kadang-kadang tidak responsif) jika kami mencoba mengatur ulang atau memindahkan bidang di sekitar.
Untungnya, kami memutuskan untuk memfaktorkan ulang produk kami sedikit sehingga mudah-mudahan kami bisa mendapatkan jumlah maksimum bidang kami ke kisaran 200-250 untuk produk kami yang paling kompleks (kami berada di instrumentasi ilmiah, sehingga diperlukan pengukuran dan spesifikasi yang kompleks) .
sumber
Itu pertanyaan yang menarik. Saya sudah memikirkan hal ini sebelumnya, kadang-kadang menggunakan kembali suatu bidang bisa menjadi nyaman untuk tidak memiliki banyak bidang serupa 'berbaring' tetapi sepertinya konyol memiliki jenis konten tertentu karena harus memilih dari banyak data yang kami tahu tidak dimaksudkan untuk dikembalikan pada hasil.
Saya perlu sedikit info lebih lanjut tentang proyek ini untuk memberi saran tentang praktik terbaik untuk penskalaan. Berapa lalu lintas yang diharapkan, berapa banyak dari pengguna tersebut yang akan masuk dll? Misalnya, jika semua lalu lintas kecuali pengguna admin Anda tidak diauthentikasi dan di-cache secara anonim
sumber
Saya sejauh ini selalu menggunakan kembali bidang tetapi sekarang saya mempertimbangkan untuk menggunakan bidang unik per jenis node untuk proyek baru. Saya sebenarnya ingin menyimpan semuanya dengan baik (bidang, tampilan, aturan, konteks, dll) untuk setiap bundel entitas. Jadi itu mengangkat pertanyaan tentang skalabilitas yang menuntun saya ke sini. Saya terhibur dengan hasil edit Berdir (Cache info bidang telah diperbaiki (lihat http://drupal.org/node/1040790 untuk detail) dengan Drupal 7.22, hanya bidang bundel yang ditampilkan pada halaman tertentu yang diambil dari cache dan keduanya entri cache yang terpisah. Itu hanya berfungsi jika tidak ada panggilan API yang salah yang meminta instance di beberapa bundel).
Saya hanya ingin menunjukkan bahwa ada modul yang sangat menarik yang telah saya gunakan selama berbulan-bulan di beberapa situs yang kompleks .: https://www.drupal.org/project/render_cache . Itu salah satu permata tersembunyi menurut saya.
Seperti yang tertulis di halaman proyek, bagian komentar sebenarnya digunakan pada DO itu sendiri.
Jadi, dengan semua itu dalam pikiran, akankah itu mengubah konsensus yang mendukung bidang yang berbeda? Peringatan yang disebutkan tentang DS masih mengecewakan. Ini sangat mengganggu cara menyimpannya melalui ajax alih-alih, misalnya, bagaimana antarmuka administrasi blok inti menangani pemesanan ulang. Saya merasa ini adalah masalah ds, meskipun ...
sumber
Sesuai saran saya Menggunakan bidang yang sama dalam tipe konten yang terpisah adalah ide bagus. Karena itu akan meningkatkan kinerja situs Anda. Di Drupal 7, Ketika Anda menggunakan operasi pilih waktu itu, Menggunakan bidang yang sama dalam tipe konten benar-benar Berguna untuk situs Drupal7 Anda.
sumber