Apa mekanisme yang baik untuk menyimpan informasi di antara basis data SQLite dan Preferensi Bersama?
Mengapa menggunakan preferensi bersama? Mengapa menggunakan sqlite? Saya mencoba menemukan perbedaan di antara mereka, dan mana yang merupakan mekanisme penyimpanan data yang lebih baik, tetapi saya tidak dapat menemukan jawaban yang sesuai di Google. Tolong bantu saya dengan contoh dan penjelasan.
Jawaban:
Ini sangat tergantung pada data yang ingin Anda simpan.
SQLite
Sejumlah besar data terstruktur yang sama harus disimpan dalam database SQLite karena database dirancang untuk data jenis ini. Karena data terstruktur dan dikelola oleh basis data, dapat ditanyakan untuk mendapatkan subset data yang cocok dengan kriteria tertentu menggunakan bahasa query seperti SQL. Ini memungkinkan pencarian dalam data. Tentu saja mengelola dan mencari set data yang besar memengaruhi kinerja sehingga membaca data dari database bisa lebih lambat daripada membaca data dari SharedPreferences.
SharedPreferences
SharedPreferences adalah penyimpanan kunci / nilai tempat Anda dapat menyimpan data dengan kunci tertentu. Untuk membaca data dari toko Anda harus mengetahui kunci dari data tersebut. Ini membuat membaca data sangat mudah. Tetapi semudah menyimpan sejumlah kecil data sama sulitnya dengan menyimpan dan membaca data terstruktur besar karena Anda perlu mendefinisikan kunci untuk setiap data, terlebih lagi Anda tidak dapat benar-benar mencari di dalam data kecuali Anda memiliki konsep tertentu untuk memberi nama kunci.
sumber
Pertanyaan ini memiliki jawaban yang diterima, tetapi saya pikir ada lebih banyak untuk dikatakan pada topik - mengenai kecepatan.
SharedPreferences dan Sqlite DB aplikasi keduanya merupakan file, disimpan dalam direktori aplikasi pada sistem file perangkat. Jika jumlah data tidak terlalu besar, opsi Sqlite akan melibatkan file yang lebih besar dan lebih rumit dengan lebih banyak pemrosesan overhead untuk akses sederhana.
Jadi, jika sifat data tidak menentukan pilihan Anda (seperti yang dijelaskan dalam jawaban yang diterima), dan mempercepat, maka Anda mungkin lebih baik menggunakan SharedPreferences.
Dan membaca beberapa data sering kali berada di jalur kritis untuk menampilkan aktivitas utama, jadi saya pikir kecepatan seringkali sangat penting.
Satu pemikiran terakhir mengenai kecepatan dan efisiensi - jika Anda perlu menggunakan database Sqlite untuk beberapa data terstruktur maka mungkin lebih efisien untuk juga menyimpan preferensi pengguna dalam database sehingga Anda tidak membuka file kedua. Ini adalah pertimbangan yang cukup kecil - mungkin layak dipertimbangkan hanya jika Anda perlu mengakses data terstruktur dan preferensi sebelum Anda dapat menampilkan aktivitas utama.
sumber
Menurut saya, ini bukan tentang kecepatan atau ukuran tetapi jenis operasi yang ingin Anda lakukan untuk data Anda.
Jika Anda berencana untuk bergabung , mengurutkan , dan operasi DB lainnya pada data Anda, maka pergi untuk Sqlite . Contohnya adalah menyortir data berdasarkan tanggal.
Jika Anda ingin memetakan nilai sederhana (seperti int, boolean, String) maka gunakan Preferensi . Operasi DB tidak akan berfungsi di sini dan tidak perlu dikatakan Anda harus memiliki semua kunci. Contohnya adalah kata sandi pengguna atau konfigurasi aplikasi.
Godaan besar untuk merangkul Preferensi adalah ketika Anda ingin menggunakannya untuk menyimpan POJO yang diratakan (objek JSON berseri) sebagai String. Memiliki kebutuhan seperti itu sebenarnya adalah tanda untuk menggunakan Sqlite. Mengapa Karena data yang kompleks pada akhirnya akan membutuhkan operasi yang kompleks. Bayangkan mengambil entri tertentu yang dapat ditangani oleh "SELECT ... WHERE id = 1". Di jalur Preferensi, ini akan menjadi proses yang panjang dari deserializing hingga iterasi hasil.
sumber
SharedPreferences
kunci / nilai sekaligus (misalnya, kedua tomboluser
danpassword
), sehingga Anda yakin bahwa kedua tombol tidak disetel atau keduanya disetel.Untuk menyimpan sejumlah besar data, gunakan sistem database SQLite. Ini akan memungkinkan pengguna untuk mencari data juga.
Di sisi lain, untuk menyimpan sejumlah kecil data, pilih Preferensi Bersama. Dalam hal ini, sistem basis data besar tidak diperlukan. Ini akan memungkinkan pengguna untuk hanya menyimpan data dan memuatnya.
sumber
Lupakan SQLLite, lupakan SharedPreferences, gunakan Realm. Satu solusi untuk semua penyimpanan lokal Anda. Anda dapat menggunakan Java Objects biasa sebagai RealmObjects dan menyimpan data Anda di sana. Anda dapat mengubah kueri yang dipilih menjadi file JSON. Tidak perlu menguraikan seluruh basis data. Periksa tautan ini: https://realm.io/news/introducing-realm/
sumber