Sepertinya Anda membuat keputusan teknis penyimpanan data jangka pendek yang valid untuk aplikasi Anda - Anda memilih untuk menulis alat manajemen penyimpanan data kustom.
Anda duduk di sebuah kontinum, dengan opsi untuk bergerak ke arah mana pun.
Dalam jangka panjang, Anda kemungkinan besar (hampir, tetapi tidak 100% pasti) menemukan diri Anda mengalami masalah, dan mungkin lebih baik untuk berubah menggunakan solusi penyimpanan data yang ada. Ada masalah kinerja yang spesifik, sangat umum, dapat diprediksi, dan Anda akan terpaksa mengatasinya, dan Anda lebih baik menggunakan alat yang ada daripada menggulirkan sendiri.
Kedengarannya seperti Anda telah menulis basis data tujuan khusus (kecil), dibangun ke dalam dan langsung digunakan oleh aplikasi Anda. Saya berasumsi Anda mengandalkan OS dan sistem file untuk mengelola penulisan dan pembacaan disk yang sebenarnya, dan memperlakukan kombinasi sebagai penyimpanan data.
Kapan melakukan apa yang Anda lakukan
Anda sedang duduk di sweet-spot untuk penyimpanan data. OS dan penyimpanan data sistem file sangat praktis, mudah diakses, dan lintas platform portabel. Kombinasi ini sudah ada sejak lama, sehingga Anda yakin akan didukung, dan menjalankan aplikasi Anda, di hampir semua konfigurasi penggunaan standar.
Ini juga merupakan kombinasi yang mudah untuk menulis kode - API cukup mudah dan sederhana, dan dibutuhkan beberapa baris kode untuk membuatnya berfungsi.
Secara umum, sangat ideal untuk melakukan apa yang telah Anda lakukan ketika:
- Memprototipe ide-ide baru
- Membangun aplikasi yang sangat tidak mungkin perlu diukur, berdasarkan kinerja
- Terkendala oleh keadaan yang tidak biasa, seperti kurangnya sumber daya untuk menginstal database
Alternatif
Anda berada di kontinum pilihan, dan ada dua 'arah' yang bisa Anda tempuh dari sini, yang saya pikir sebagai 'turun' dan 'naik':
Turun
Ini adalah opsi yang paling tidak mungkin untuk diterapkan, tetapi ada di sini untuk kelengkapan:
Anda dapat, jika ingin, turun , yaitu memotong OS dan sistem file sekaligus dan benar-benar menulis dan membaca langsung dari disk. Pilihan ini biasanya hanya relevan dalam kasus-kasus di mana efisiensi ekstrem diperlukan - pikirkan, misalnya, perangkat pemutar MP3 minimal / kecil , tanpa RAM yang cukup untuk OS yang berfungsi penuh, atau sesuatu seperti Wayback Machine , yang membutuhkan massa yang sangat efisien operasi penulisan data (sebagian besar penyimpanan data menukar penulisan dengan lambat untuk pembacaan yang lebih cepat, karena itulah kasus penggunaan yang sangat umum untuk hampir semua aplikasi).
Naik
Ada beberapa sub-kategori di sini - ini tidak sepenuhnya eksklusif. Beberapa alat merentang keduanya, menyediakan beberapa fungsi di masing-masing, beberapa dapat sepenuhnya beralih dari bekerja dalam satu mode ke bekerja di yang lain, dan beberapa dapat berlapis di atas satu sama lain, menyediakan fungsionalitas yang berbeda ke berbagai bagian aplikasi Anda.
Menyimpan data yang lebih kuat
Anda mungkin perlu menyimpan volume data yang lebih tinggi dan lebih tinggi, sambil tetap mengandalkan aplikasi Anda sendiri untuk mengelola kompleksitas manipulasi data. Seluruh jajaran toko nilai kunci tersedia untuk Anda, dengan beragam dukungan untuk fungsi terkait. Alat NoSQL termasuk dalam kategori ini, serta yang lain.
Ini adalah jalur yang jelas untuk ditingkatkan ketika yang berikut menjelaskan aplikasi Anda:
- Ini adalah ketergantungan membaca yang luar biasa berat
- Anda setuju dengan menukar kinerja yang lebih tinggi untuk jaminan konsistensi yang lebih rendah (jangka pendek) (banyak yang menawarkan "konsistensi akhirnya").
- Apakah "langsung" mengelola sebagian besar manipulasi data dan kurangnya konsistensi (pada praktiknya, Anda mungkin pada akhirnya akan menggunakan alat pihak ketiga, meskipun pada akhirnya Anda akan membawa ini ke dalam aplikasi Anda atau ke lapisan perantara yang ditulis khusus) .
- Anda sedang mencari skala besar jumlah data yang Anda simpan dan / atau kemampuan Anda untuk mencari melalui itu, dengan persyaratan manipulasi data "relatif sederhana".
Ada beberapa ruang gerak di sini - Anda dapat memaksakan konsistensi membaca yang lebih baik, untuk bacaan yang lebih lambat. Berbagai alat dan opsi menyediakan apis manipulasi data, pengindeksan, dan opsi lain, yang mungkin lebih atau kurang cocok untuk dengan mudah menulis aplikasi spesifik Anda. Jadi, jika poin di atas hampir sepenuhnya menggambarkan aplikasi Anda, Anda mungkin "cukup dekat" untuk bekerja dengan solusi penyimpanan data yang lebih kuat.
Contoh terkenal: CouchDB , MongoDB , Redis , solusi penyimpanan cloud seperti Microsoft Azure , Google App Data Store dan Amazon ECE.
Mesin manipulasi data yang lebih kompleks
Keluarga "SQL" aplikasi penyimpanan data, serta berbagai lainnya, lebih baik digambarkan sebagai alat manipulasi data, daripada mesin penyimpanan murni. Mereka menyediakan berbagai fungsi tambahan, di luar penyimpanan data, dan seringkali melampaui apa yang tersedia di sisi penyimpanan nilai-penting. Anda akan ingin mengambil jalan ini ketika:
- Anda benar-benar harus memiliki konsistensi membaca, bahkan jika itu berarti Anda akan mendapat pukulan kinerja.
- Anda mencari untuk secara efisien melakukan manipulasi data yang sangat kompleks - pikirkan operasi JOIN dan UPDATE yang sangat kompleks, kubus dan pengiris data , dll ...
- Anda baik-baik saja dengan menukar kekakuan untuk kinerja (berpikir paksa, format penyimpanan data tetap, seperti tabel, yang tidak dapat dengan mudah dan / atau diubah secara efisien).
- Anda memiliki sumber daya untuk menangani seperangkat alat dan antarmuka yang sering kali lebih kompleks.
Ini adalah cara berpikir yang lebih "tradisional" tentang basis data atau penyimpanan data, dan telah ada lebih lama - jadi ada banyak yang tersedia di sini, dan sering ada banyak kerumitan untuk dihadapi. Mungkin saja, meskipun butuh keahlian dan pengetahuan, dan membangun solusi sederhana / menghindari banyak kerumitan - Anda kemungkinan besar akan menggunakan alat dan perpustakaan pihak ketiga untuk mengelola sebagian besar untuk Anda.
Contoh terkenal adalah MySQL , SQL Server , Oracle's Database, dan DB2 .
Mengalihdayakan pekerjaan
Ada beberapa, alat pihak ketiga modern dan perpustakaan, yang menempatkan diri di antara alat penyimpanan data Anda dan aplikasi Anda, untuk membantu Anda mengelola kompleksitas.
Mereka awalnya mencoba untuk mengambil sebagian besar atau semua pekerjaan yang masuk ke dalam mengelola dan memanipulasi penyimpanan data, dan, idealnya, memungkinkan Anda untuk membuat transisi yang lancar ke kompleksitas hanya ketika dan jika diperlukan. Ini adalah bidang aktif kewirausahaan dan penelitian, dengan beberapa hasil terbaru yang segera dapat diakses dan digunakan.
Contoh terkenal adalah alat MVC ( Django , Yii ), Ruby on Rails , dan Datomic . Sulit untuk bersikap adil di sini karena ada lusinan alat dan perpustakaan yang bertindak sebagai pembungkus API dari berbagai penyimpanan data.
PS: jika Anda lebih suka video daripada teks, Anda mungkin ingin menonton beberapa video yang berhubungan dengan database Rich Hickey; ia melakukan pekerjaan dengan baik untuk menjelaskan sebagian besar pemikiran yang digunakan untuk memilih, merancang, dan menggunakan penyimpanan data.