Saya akan membangun proyek nyata pertama saya di Rails yang terdiri dari aplikasi web yang terbuat dari 3 bagian utama:
- Bagian statis di mana tidak ada basis data yang digunakan
- Bagian pendaftaran pengguna yang akan membutuhkan database dan saya dapat menggunakan MySQL karena setiap baris pengguna akan memiliki bidang yang sama
- "App" tempat pengguna dapat membuat, mengatur, mengedit ... item dalam koleksi dan membaginya dengan pengguna lain
Akan ada beberapa jenis item dan masing-masing akan memiliki opsi yang berbeda misalnya saya mungkin memiliki "video" item dengan opsi berikut:
- Indo
- identitas pengguna
- collection_id
- judul
- platform (jika tertanam)
- url (jika tertanam)
- nama file (jika dihosting di aplikasi saya)
- ukuran file (id dihosting di aplikasi saya)
dan item "peta":
- Indo
- identitas pengguna
- collection_id
- judul
- platform (google maps, bing maps ...)
- lokasi
- url
- ukuran peta
Seperti yang Anda bisa sementara untuk pengguna saya dapat menggunakan MySQL untuk item fleksibilitas MongoDB mungkin berguna karena setiap item mungkin memerlukan opsi yang berbeda maka item lain
Hingga kini saya selalu menggunakan PHP dan MySQL (selalu menggunakan shared hosting untuk proyek-proyek kecil) dan skalabilitas adalah kata yang sama sekali baru bagi saya.
Saya punya waktu untuk belajar tetapi saya ingin dapat melakukan sesuatu yang konkret dalam waktu 1 bulan.
Saya sudah membaca banyak tentang MongoDB dan NoSQL vs RDMS dan MySQL dan setelah mencobanya saya harus mengatakan bahwa saya suka cara kerja MongoDB: tidak ada tabel, tidak ada baris dan dokumennya JSON seperti:
- Dalam situasi saya, apa yang akan Anda sampaikan? Mengapa?
- Tentang skalabilitas mungkin ada masalah dengan MongoDB? jika ya kapan (dalam hal ukuran DB) dan dapatkah masalah ini memperlambat aplikasi saya?
Sunting: bagaimana aplikasi akan bekerja
Karena banyak yang bertanya ini bagaimana saya ingin aplikasi bekerja:
- Seorang pengguna mendaftar
- Dia login
- Dia menciptakan iside koleksi pertamanya yang dia dapat membuat item yang tak terbatas
- Item dari berbagai jenis dan masing-masing jenis memerlukan data yang berbeda untuk disimpan dalam database dan jenis item dapat ditambahkan atau dimodifikasi
Pengguna dapat membuat koleksi dan barang lain di dalamnya.
Jadi kami memiliki CRUD untuk koleksi dan item di dalamnya dan setiap koleksi / item dirujuk ke pengguna tertentu
Masalah utama dengan MySQL adalah bahwa ia tidak memiliki skema yang fleksibel, ada cara untuk menyelesaikan ini (solusi?)
Berpikir tentang NoSQL, satu-satunya keraguan yang saya miliki adalah tentang bergabung, misalnya diberi kolom tertentu, saya ingin mengambil data yang terkait dengan Pengguna dengan bidang id = user_id dalam koleksi
EDIT: Ide untuk tetap menggunakan MySQL
Buat bidang di tabel "item" dengan pengaturan opsional, masing-masing pengaturan dibagi dengan | atau simbol lain.
Kemudian saya akan menyimpan suatu tempat struktur dari setiap item pengaturan opsional, misalnya jenis item "catatan" perlu dua pengaturan opsional "warna" dan "odd_setting", ketika saya mendapatkan data dari MySQL saya akan membagi bidang untuk pengaturan opsional menjadi sebuah array mengetahui bahwa item pertama dalam array adalah untuk "warna" dan seterusnya.
Bagaimana menurut anda? ada masalah dengan solusi itu? apakah kamu punya ide lain