Pengantar
Database adalah komponen penting untuk banyak aplikasi dan alat modern. Sebagai pengguna, Anda dapat berinteraksi dengan lusinan atau ratusan basis data setiap hari saat mengunjungi situs web, menggunakan aplikasi di ponsel, atau membeli barang di toko bahan makanan. Sebagai pengembang, database adalah komponen inti yang digunakan untuk menyimpan data di luar masa pakai aplikasi Anda. Tapi apa sebenarnya database itu dan mengapa begitu umum?
Dalam artikel ini, kita akan membahas:
- apa itu database
- bagaimana mereka digunakan oleh orang dan aplikasi untuk melacak berbagai jenis data
- fitur apa yang ditawarkan database
- jenis jaminan apa yang mereka buat
- bagaimana mereka dibandingkan dengan metode penyimpanan data lainnya
Terakhir, kita akan membahas bagaimana aplikasi bergantung pada database untuk menyimpan dan mengambil data untuk mengaktifkan fungsionalitas yang kompleks.
Apa itu database?
Database adalah struktur logis yang digunakan untuk mengatur dan menyimpan data untuk pemrosesan, pengambilan, atau evaluasi di masa mendatang. Dalam konteks komputer, struktur ini hampir selalu dikelola oleh aplikasi yang disebut sistem manajemen basis data atau DBMS . DBMS mengelola file khusus pada disk komputer dan menyajikan antarmuka logis untuk pengguna dan aplikasi.
Sistem manajemen basis data biasanya dirancang untuk mengatur data menurut pola tertentu. Pola-pola ini, disebut tipe database atau model basis data, adalah fondasi logis dan struktural yang menentukan bagaimana setiap bagian data disimpan dan dikelola. Ada banyak tipe database yang berbeda, masing-masing dengan kelebihan dan keterbatasannya sendiri. model relasional , yang mengatur data ke dalam tabel, baris, dan kolom referensi silang, sering dianggap sebagai paradigma default.
DBMS dapat membuat database yang mereka kelola dapat diakses melalui berbagai cara termasuk klien baris perintah, API, pustaka pemrograman, dan antarmuka administratif. Melalui saluran ini, data dapat diserap ke dalam sistem, diatur sesuai kebutuhan, dan dikembalikan sesuai permintaan.
Persistensi data vs penyimpanan sementara
Basis data menyimpan data baik di disk maupun di memori.
Pada penyimpanan disk umumnya dikatakan persisten , artinya data disimpan dengan andal untuk digunakan nanti, bahkan jika aplikasi database atau komputer itu sendiri dimulai ulang.
Sebaliknya, penyimpanan dalam memori dikatakan sementara atau tidak stabil . Penyimpanan sementara tidak dapat bertahan dari penghentian aplikasi atau sistem. Keuntungan dari database dalam memori adalah mereka biasanya sangat cepat.
Dalam praktiknya, banyak lingkungan akan menggunakan campuran kedua jenis sistem ini untuk mendapatkan keuntungan dari masing-masing jenis. Untuk sistem yang menerima penulisan baru ke lapisan ephemeral, ini dapat dicapai dengan menyimpan data ephemeral secara berkala ke disk. Sistem lain menggunakan salinan data persisten dalam memori hanya-baca untuk mempercepat akses baca. Sistem ini dapat memuat ulang data dari penyimpanan cadangan kapan saja untuk menyegarkan datanya.
Jenis penyimpanan cadangan | Data selamat dari restart? | Keuntungan | Contoh |
---|---|---|---|
Di disk | Ya | Daya tahan data | MySQL |
Dalam memori | Tidak | Kecepatan operasional | memcache |
Berinteraksi dengan database untuk mengelola data Anda
Sementara sistem database menangani bagaimana menyimpan data pada disk atau dalam memori, sistem ini juga menyediakan antarmuka untuk pengguna atau aplikasi. Antarmuka untuk database harus dapat mewakili operasi yang dapat dilakukan pihak eksternal dan harus dapat mewakili semua tipe data yang didukung sistem.
Menurut Wikipedia, database biasanya memungkinkan empat jenis interaksi berikut:
- Definisi data :Membuat, memodifikasi, dan menghapus definisi struktur data. Operasi ini mengubah properti yang mempengaruhi bagaimana database akan menerima dan menyimpan data. Ini lebih penting dalam beberapa jenis database daripada yang lain.
- Pembaruan :Menyisipkan, mengubah, dan menghapus data dalam database. Operasi ini mengubah data aktual yang sedang dikelola.
- Pengambilan :Menyediakan akses ke data yang disimpan. Data dapat diambil apa adanya atau sering dapat disaring atau diubah untuk diurutkan ke dalam format yang lebih berguna. Banyak sistem database memahami bahasa kueri yang kaya untuk mencapai hal ini.
- Administrasi :Tugas lain seperti manajemen pengguna, keamanan, pemantauan kinerja, dll. yang diperlukan tetapi tidak terkait langsung dengan data itu sendiri.
Mari kita bahas lebih detail di bawah ini.
Definisi data mengontrol bentuk dan struktur data dalam sistem
Membuat dan mengontrol struktur yang akan diambil data Anda dalam database adalah bagian penting dari manajemen database. Ini dapat membantu Anda mengontrol bentuk, atau struktur, data Anda sebelum Anda memasukkannya ke dalam sistem. Ini juga memungkinkan Anda untuk mengatur batasan untuk memastikan data Anda mematuhi parameter tertentu.
Dalam database yang beroperasi pada data yang sangat teratur, seperti database relasional, definisi ini sering dikenal sebagai skema database. . Skema database adalah garis besar yang ketat tentang bagaimana data harus diformat agar dapat diterima oleh database tertentu. Ini mencakup bidang spesifik yang harus ada dalam catatan individu serta persyaratan untuk nilai seperti tipe data, panjang bidang, nilai minimum atau maksimum, dll. Skema basis data adalah salah satu alat terpenting yang harus dimiliki pemilik basis data untuk memengaruhi dan mengontrol data yang akan disimpan dalam sistem.
Sistem manajemen basis data yang menghargai fleksibilitas daripada keteraturan sering disebut sebagai basis data tanpa skema . Meskipun ini tampaknya menyiratkan bahwa data yang disimpan dalam database ini tidak memiliki struktur, hal ini biasanya tidak terjadi. Sebaliknya, struktur database ditentukan oleh data itu sendiri dan pengetahuan aplikasi tentang dan hubungannya dengan data. Basis data biasanya masih menganut struktur, tetapi sistem manajemen basis data kurang terlibat dalam menegakkan batasan. Ini adalah pilihan desain yang memiliki kelebihan dan kekurangan tergantung pada situasinya.
Pembaruan data untuk menyerap, memodifikasi, dan menghapus data dari sistem
Pembaruan data mencakup operasi apa pun yang:
- Memasukkan data baru ke dalam sistem
- Memodifikasi entri yang ada
- Menghapus entri dari database
Kemampuan ini sangat penting untuk basis data apa pun, dan dalam banyak kasus, merupakan mayoritas tindakan yang diproses sistem basis data. Jenis aktivitas ini — operasi yang menyebabkan perubahan pada data dalam sistem — secara kolektif dikenal sebagai tulis operasi.
Tindakan tulis penting untuk sumber data apa pun yang akan berubah seiring waktu. Bahkan menghapus data, tindakan merusak, dianggap sebagai operasi tulis karena memodifikasi data di dalam sistem.
Karena operasi tulis dapat mengubah data, tindakan ini berpotensi berbahaya. Sebagian besar administrator basis data mengonfigurasi sistem mereka untuk membatasi operasi penulisan ke proses aplikasi tertentu untuk meminimalkan kemungkinan kerusakan data yang tidak disengaja atau berbahaya. Misalnya, analitik data, yang menggunakan data yang ada untuk menjawab pertanyaan tentang kinerja situs web atau perilaku pengunjung, hanya memerlukan izin baca. Di sisi lain, bagian dari aplikasi yang mencatat pesanan pengguna harus dapat menulis data baru ke database.
Mengambil data untuk mengekstrak informasi atau menjawab pertanyaan tertentu
Menyimpan data tidak terlalu berguna kecuali Anda memiliki cara untuk mengambilnya kembali saat Anda membutuhkannya. Karena mengembalikan data tidak memengaruhi informasi apa pun yang saat ini disimpan dalam database, tindakan ini disebut baca operasi. Operasi baca adalah cara utama mengumpulkan data yang sudah disimpan dalam database.
Sistem manajemen basis data hampir selalu memiliki cara yang mudah untuk mengakses data dengan pengidentifikasi unik, yang sering disebut kunci utama . Ini memungkinkan akses ke satu entri dengan memberikan kunci.
Banyak sistem juga memiliki metode canggih untuk meminta database untuk mengembalikan kumpulan data yang cocok dengan kriteria tertentu atau mengembalikan sebagian informasi tentang entri. Jenis fleksibilitas kueri ini membantu sistem manajemen basis data beroperasi sebagai pemroses data selain kemampuan penyimpanan data dasarnya. Dengan mengembangkan kueri tertentu, pengguna dapat meminta sistem basis data untuk mengembalikan hanya informasi yang mereka butuhkan. Fitur ini sering digunakan bersama dengan operasi tulis untuk mencari dan memodifikasi record tertentu berdasarkan propertinya.
Mengadministrasikan sistem database agar semuanya berjalan lancar
Kategori terakhir dari tindakan yang sering didukung oleh database adalah fungsi administratif. Ini adalah kelas tindakan umum yang luas yang membantu mendukung lingkungan basis data tanpa secara langsung memengaruhi data itu sendiri. Beberapa item yang mungkin cocok dengan grup ini meliputi:
- Mengelola pengguna, izin, autentikasi, dan otorisasi
- Menyiapkan dan memelihara cadangan
- Mengonfigurasi media pendukung untuk penyimpanan
- Mengelola replikasi dan pertimbangan penskalaan lainnya
- Menyediakan opsi pemulihan online dan offline
Serangkaian tindakan ini sejalan dengan masalah administratif dasar yang umum untuk aplikasi modern apa pun.
Operasi administratif mungkin tidak menjadi inti dari fungsionalitas manajemen data inti, tetapi kemampuan ini sering kali membedakan sistem manajemen basis data yang serupa. Mampu dengan mudah mencadangkan dan memulihkan data, menerapkan manajemen pengguna yang terhubung ke sistem yang ada, atau menskalakan basis data Anda untuk memenuhi permintaan adalah semua fitur penting untuk beroperasi dalam produksi. Basis data yang gagal memperhatikan area ini sering kali kesulitan untuk diadopsi di lingkungan dunia nyata.
Tanggung jawab apa yang dimiliki database?
Dengan uraian di atas, bagaimana kita dapat menggeneralisasi tanggung jawab utama yang dimiliki database? Jawabannya sangat tergantung pada jenis database yang digunakan dan kebutuhan aplikasi Anda. Meski begitu, ada serangkaian tanggung jawab umum yang ingin diberikan oleh semua basis data.
Melindungi integritas data melalui perekaman dan penyusunan ulang yang tepat
Integritas data adalah persyaratan mendasar dari sistem database, terlepas dari tujuan atau desainnya. Data yang dimuat ke dalam database harus dapat diambil dengan andal tanpa modifikasi, manipulasi, atau penghapusan yang tidak diharapkan. Hal ini memerlukan metode pemuatan dan pengambilan data yang andal, serta membuat serialisasi dan deserialisasi data yang diperlukan untuk menyimpannya di media fisik.
Basis data sering mengandalkan fitur untuk memverifikasi data saat ditulis atau diambil, seperti checksumming, atau untuk melindungi dari masalah yang disebabkan oleh shutdown yang tidak terduga, menggunakan teknik seperti write-ahead logs, misalnya. Integritas data menjadi lebih menantang semakin terdistribusi penyimpanan data, karena setiap bagian dari sistem harus mencerminkan keadaan yang diinginkan saat ini dari setiap item data. Hal ini sering dicapai dengan persyaratan dan tanggapan yang lebih kuat dari banyak anggota setiap kali data diubah dalam sistem.
Kinerja penawaran yang memenuhi persyaratan lingkungan penerapan
Basis data harus bekerja secara memadai agar berguna. Karakteristik kinerja yang Anda butuhkan sangat bergantung pada tuntutan khusus aplikasi Anda. Setiap lingkungan memiliki keseimbangan permintaan baca dan tulis yang unik dan Anda harus memutuskan arti kinerja yang dapat diterima untuk kedua kategori tersebut.
Basis data umumnya lebih baik dalam melakukan jenis operasi tertentu daripada yang lain. Karakteristik kinerja operasional seringkali merupakan cerminan dari jenis database yang digunakan, skema atau struktur data, dan operasi itu sendiri. Dalam beberapa kasus, fitur seperti pengindeksan , yang membuat penyimpanan data yang umum diakses dengan kinerja yang dioptimalkan, dapat memberikan pengambilan yang lebih cepat untuk item ini. Di lain waktu, database mungkin tidak cocok untuk pola akses yang diminta. Ini adalah sesuatu yang perlu dipertimbangkan ketika memutuskan jenis database yang Anda butuhkan.
Menyiapkan proses untuk memungkinkan akses serentak yang aman
Meskipun ini bukan persyaratan yang ketat, secara praktis, database harus memungkinkan akses bersamaan. Ini berarti bahwa banyak pihak harus dapat bekerja dengan database secara bersamaan. Rekaman harus dapat dibaca oleh sejumlah pengguna pada saat yang sama dan dapat ditulis saat tidak dikunci oleh pengguna lain.
Akses bersamaan biasanya berarti bahwa database harus mengimplementasikan beberapa fitur mendasar lainnya seperti akun pengguna, sistem izin, dan mekanisme otentikasi dan otorisasi. Itu juga harus mengembangkan strategi untuk mencegah banyak pengguna mencoba memanipulasi data yang sama secara bersamaan. Penguncian catatan dan transaksi sering diterapkan untuk mengatasi masalah ini.
Mengambil data satu per satu atau gabungan
Salah satu tanggung jawab mendasar dari database adalah kemampuan untuk mengambil data berdasarkan permintaan. Permintaan mungkin untuk bagian individu data yang terkait dengan satu catatan, atau mereka mungkin melibatkan pengambilan data yang ditemukan di banyak catatan yang berbeda. Kedua kasus ini harus dimungkinkan di sebagian besar sistem.
Di sebagian besar database, beberapa tingkat pemrosesan data disediakan oleh database itu sendiri selama pengambilan. Ini dapat mencakup jenis operasi berikut:
- Menelusuri menurut kriteria
- Memfilter dan mematuhi batasan
- Mengekstrak bidang tertentu
- Merata-rata, menyortir, dll.
Opsi ini membantu Anda mengartikulasikan data yang Anda inginkan dan format yang paling berguna.
Alternatif untuk database
Sebelum kita melanjutkan, kita harus melihat sekilas apa pilihan Anda jika Anda tidak menggunakan database.
Sebagian besar metode yang menyimpan data dapat diklasifikasikan sebagai semacam database. Beberapa pengecualian termasuk yang berikut ini.
Memori lokal atau sistem file sementara
Terkadang aplikasi menghasilkan data yang tidak berguna atau hanya relevan selama masa pakai aplikasi. Dalam kasus ini, Anda mungkin ingin menyimpan data tersebut dalam memori atau memindahkannya ke sistem file sementara karena Anda tidak akan membutuhkannya setelah aplikasi keluar. Untuk kasus di mana data tidak pernah berguna, Anda mungkin ingin menonaktifkan keluaran seluruhnya atau mencatatnya ke /dev/null
.
Menserialisasikan data aplikasi langsung ke sistem file lokal
Contoh lain di mana database mungkin tidak diperlukan adalah di mana sejumlah kecil data dapat diserialisasi dan dideserialisasi secara langsung. Ini hanya praktis untuk sejumlah kecil data dengan pola penggunaan yang dapat diprediksi yang tidak melibatkan banyak, jika ada, konkurensi. Ini tidak skala dengan baik tetapi dapat berguna untuk kasus-kasus tertentu, seperti mengeluarkan informasi log lokal.
Menyimpan objek seperti file langsung ke disk atau penyimpanan objek
Terkadang, data dari aplikasi dapat ditulis langsung ke disk atau penyimpanan alternatif alih-alih disimpan ke dalam database. Misalnya, jika data sudah diatur ke dalam format berorientasi file, seperti file gambar atau audio, dan tidak memerlukan metadata tambahan, mungkin lebih mudah untuk menyimpannya langsung ke disk atau ke penyimpanan objek khusus.
Untuk apa database digunakan?
Hampir semua aplikasi dan situs web yang tidak sepenuhnya statis bergantung pada database di suatu tempat di lingkungan mereka. Tujuan utama dari database sering menentukan jenis database yang digunakan, data yang disimpan, dan pola akses yang digunakan. Seringkali beberapa sistem database dikerahkan untuk menangani berbagai jenis data dengan persyaratan yang berbeda. Beberapa database cukup fleksibel untuk memenuhi banyak peran tergantung pada sifat kumpulan data yang berbeda.
Mari kita lihat contoh untuk membahas titik sentuh yang mungkin dimiliki aplikasi web biasa dengan database. Kami akan berpura-pura bahwa aplikasi tersebut berisi etalase dasar dan menjual item yang dilacaknya dalam inventaris.
Menyimpan dan memproses data situs
Salah satu kegunaan utama database adalah menyimpan dan memproses data yang terkait dengan situs. Item ini memengaruhi bagaimana informasi di situs diatur dan, dalam banyak kasus, merupakan sebagian besar "konten" situs.
Dalam contoh aplikasi yang disebutkan di atas, database akan mengisi sebagian besar konten situs termasuk informasi produk, detail inventaris, dan informasi profil pengguna. Ini berarti bahwa database atau cache perantara akan dikonsultasikan setiap kali daftar produk, halaman detail produk, atau profil pengguna perlu ditampilkan.
Sebuah database juga akan terlibat saat menampilkan pesanan saat ini dan masa lalu, menghitung biaya pengiriman, dan menerapkan diskon dengan memeriksa kode diskon atau menghitung hadiah pelanggan yang sering. Situs contoh kami akan menggunakan sistem database untuk membuat pesanan dengan benar dengan menggabungkan informasi produk, inventaris, dan informasi pengguna. Informasi gabungan yang dicatat dalam pesanan akan disimpan dalam database lagi untuk melacak pemrosesan pesanan, mengizinkan pengembalian, membatalkan atau mengubah pesanan, atau memungkinkan dukungan pelanggan yang lebih baik.
Menganalisis informasi untuk membantu membuat keputusan yang lebih baik
Tindakan dalam kategori terakhir terkait dengan fungsionalitas dasar situs web. Meskipun ini sangat penting untuk menangani persyaratan data dari lapisan aplikasi, mereka tidak mewakili keseluruhan gambar.
Setelah aplikasi web Anda mulai mendaftarkan pengguna dan memproses pesanan, Anda mungkin ingin dapat menjawab pertanyaan terperinci tentang bagaimana berbagai produk dijual, siapa pengguna Anda yang paling menguntungkan, dan faktor apa yang memengaruhi penjualan Anda. Ini adalah pertanyaan analitis yang dapat dijalankan kapan saja untuk mengumpulkan informasi terkini tentang tren dan kinerja organisasi Anda.
Jenis operasi ini sering disebut kecerdasan bisnis atau analitik . Bersama-sama, mereka membantu organisasi memahami apa yang terjadi di masa lalu dan membuat perubahan berdasarkan informasi. Sistem basis data menyimpan sebagian besar data yang digunakan selama proses ini dan harus menyediakan perkakas yang sesuai atau kemampuan kueri untuk menjawab pertanyaan tentangnya.
Dalam contoh aplikasi kami, database dapat ditanyai untuk menjawab pertanyaan tentang tren produk, nomor registrasi pengguna, yang menyatakan kami paling banyak mengirim, atau siapa pengguna kami yang paling setia. Kueri yang relatif mendasar ini dapat digunakan untuk menyusun pertanyaan yang lebih kompleks guna lebih memahami dan mengontrol faktor-faktor yang memengaruhi performa produk.
Mengelola konfigurasi perangkat lunak
Beberapa jenis database digunakan sebagai repositori untuk nilai konfigurasi untuk perangkat lunak lain di jaringan. Ini berfungsi sebagai sumber utama kebenaran untuk nilai konfigurasi pada jaringan. Saat layanan baru dimulai, mereka dikonfigurasi untuk memeriksa nilai untuk kunci tertentu di alamat jaringan database konfigurasi. Ini memungkinkan Anda untuk menyimpan semua informasi yang diperlukan untuk bootstrap layanan di satu lokasi.
Setelah bootstrap, aplikasi dapat dikonfigurasi untuk melihat kunci yang terkait dengan konfigurasinya untuk perubahan. Jika perubahan terdeteksi, aplikasi dapat mengkonfigurasi ulang sendiri untuk menggunakan konfigurasi baru. Proses ini terkadang diatur oleh proses manajemen yang meluncurkan nilai-nilai baru dari waktu ke waktu dengan menurunkan layanan lama saat layanan baru muncul, mengubah konfigurasi aktif dari waktu ke waktu untuk menjaga ketersediaan.
Aplikasi kita dapat menggunakan tipe database ini untuk menyimpan data konfigurasi persisten untuk seluruh lingkungan aplikasi kita. Server aplikasi kami, server web, penyeimbang beban, antrian pengiriman pesan, dan lainnya dapat dikonfigurasi untuk merujuk database konfigurasi untuk mendapatkan pengaturan produksinya. Pengembang aplikasi kemudian dapat memodifikasi perilaku lingkungan dengan mengubah nilai konfigurasi di lokasi pusat.
Mengumpulkan log, peristiwa, dan keluaran lainnya
Menjalankan aplikasi yang secara aktif melayani permintaan dapat menghasilkan banyak output. Ini termasuk file log, peristiwa, dan keluaran lainnya. Ini dapat ditulis ke disk atau lokasi lain yang tidak dikelola, tetapi ini membatasi kegunaannya. Mengumpulkan jenis data ini dalam database memudahkan untuk bekerja dengan, menemukan pola, dan menganalisis peristiwa ketika sesuatu yang tidak terduga terjadi atau ketika Anda perlu mencari tahu lebih banyak tentang kinerja historis.
Aplikasi contoh kami mungkin mengumpulkan log dari masing-masing sistem kami dalam satu database untuk analisis yang lebih mudah. Ini dapat membantu kita menemukan korelasi antar peristiwa jika kita mencoba menganalisis sumber masalah atau memahami kesehatan lingkungan kita secara keseluruhan.
Secara terpisah, kami mungkin mengumpulkan metrik yang dihasilkan oleh infrastruktur dan kode kami di basis data deret waktu , database yang dirancang khusus untuk melacak nilai dari waktu ke waktu. Basis data ini dapat digunakan untuk mendukung alat pemantauan dan visualisasi waktu nyata untuk memberikan informasi kepada tim pengembangan dan operasi aplikasi tentang kinerja, tingkat kesalahan, dll.
Bagaimana peran yang berbeda bekerja dengan database?
Basis data sangat penting untuk pekerjaan berbagai peran dalam organisasi. Dalam tim yang lebih kecil, satu atau beberapa individu mungkin bertanggung jawab untuk melaksanakan tugas dari berbagai peran. Di perusahaan yang lebih besar, tanggung jawab ini sering disegmentasikan ke dalam peran terpisah yang dilakukan oleh individu atau tim yang berdedikasi.
Arsitek data
Arsitek data bertanggung jawab atas keseluruhan struktur makro sistem database, antarmuka yang mereka gunakan untuk aplikasi dan tim pengembangan, serta teknologi dan infrastruktur dasar yang diperlukan untuk memenuhi kebutuhan data organisasi.
Orang-orang dalam peran ini umumnya memutuskan model database yang sesuai dan implementasi yang akan digunakan untuk aplikasi yang berbeda. Mereka bertanggung jawab untuk menerapkan keputusan basis data dengan menyelidiki opsi, memutuskan teknologi, mengintegrasikannya dengan sistem yang ada, dan mengembangkan strategi data yang komprehensif untuk organisasi. Mereka menangani sistem data secara holistik dan memiliki andil dalam memutuskan dan menerapkan model data untuk berbagai proyek.
DBA (administrator database)
Administrator database, atau DBA, adalah individu yang bertanggung jawab untuk menjaga sistem data berjalan dengan lancar. Mereka bertanggung jawab untuk merencanakan sistem data baru, menginstal dan mengkonfigurasi perangkat lunak, menyiapkan sistem basis data untuk pihak lain, dan mengelola kinerja. Mereka juga sering bertanggung jawab untuk mengamankan database, memantau masalah, dan membuat penyesuaian pada sistem untuk mengoptimalkan pola penggunaan.
Administrator basis data ahli dalam sistem basis data individu serta bagaimana mengintegrasikannya dengan baik dengan sistem operasi dan perangkat keras yang mendasarinya untuk memaksimalkan kinerja. Mereka bekerja secara ekstensif dengan tim yang menggunakan database untuk membantu mengelola kapasitas dan kinerja serta membantu tim memecahkan masalah dengan sistem database.
Pengembang aplikasi
Pengembang aplikasi berinteraksi dengan database dalam berbagai cara. Mereka mengembangkan banyak aplikasi yang berinteraksi dengan database. Ini sangat penting karena ini hampir selalu merupakan satu-satunya aplikasi yang mengontrol bagaimana pengguna individu atau pelanggan berinteraksi dengan data yang dikelola oleh sistem database. Performa, kebenaran, dan keandalan sangat penting bagi pengembang aplikasi.
Pengembang mengelola struktur data yang terkait dengan aplikasi mereka untuk menyimpan data mereka ke disk. Mereka harus membuat atau menggunakan mekanisme yang dapat memetakan data pemrograman mereka ke sistem database sehingga komponen dapat bekerja sama secara harmonis. Saat aplikasi berubah, mereka harus menjaga data dan struktur data dalam sistem database tetap sinkron. Kita akan berbicara lebih banyak tentang bagaimana pengembang bekerja dengan database nanti di artikel.
SRE (insinyur keandalan situs) dan profesional operasi
SRE (insinyur keandalan situs) dan profesional operasi berinteraksi dengan sistem database dari perspektif konfigurasi infrastruktur dan aplikasi. Mereka mungkin bertanggung jawab untuk menyediakan kapasitas tambahan, membangun sistem database, memastikan konfigurasi database sesuai dengan pedoman organisasi, memantau waktu aktif, dan mengelola cadangan.
Dalam banyak hal, individu-individu ini memiliki tanggung jawab yang tumpang tindih dengan DBA, tetapi tidak hanya berfokus pada database. Staf operasi memastikan bahwa sistem yang diandalkan oleh aplikasi lain di organisasi, termasuk sistem basis data, berfungsi dengan andal dan memiliki waktu henti yang minimal.
Intelijen bisnis dan analis data
Departemen intelijen bisnis dan analis data terutama tertarik pada data yang telah dikumpulkan dan tersedia dalam sistem basis data. Mereka bekerja untuk mengembangkan wawasan berdasarkan tren dan pola dalam data sehingga mereka dapat memprediksi kinerja masa depan, memberi saran kepada organisasi tentang kemungkinan perubahan, dan menjawab pertanyaan tentang data untuk departemen lain seperti pemasaran dan penjualan.
Analis data umumnya dapat bekerja secara eksklusif dengan akses baca-saja ke sistem data. Kueri yang mereka jalankan sering kali memiliki karakteristik kinerja yang sangat berbeda dari yang digunakan oleh aplikasi utama. Karena itu, mereka sering bekerja dengan replika database, atau salinan, sehingga mereka dapat melakukan kueri agregat yang berjalan lama dan kinerja intensif yang mungkin berdampak pada penggunaan sumber daya dari sistem database utama.
Bagaimana cara bekerja dengan database sebagai pengembang?
Jadi, bagaimana Anda sebenarnya bekerja dengan database sebagai pengembang aplikasi? Pada tingkat dasar, jika aplikasi Anda harus mengelola dan mempertahankan status, bekerja dengan database akan menjadi bagian penting dari kode Anda.
Menerjemahkan data antara aplikasi Anda dan database
Anda perlu membuat atau menggunakan antarmuka yang ada untuk berkomunikasi dengan database. Anda dapat terhubung langsung ke database menggunakan fungsi jaringan biasa, memanfaatkan pustaka sederhana, atau pustaka pemrograman tingkat tinggi (mis. pembuat kueri atau ORM).
ORM , atau pemetaan relasional objek, adalah lapisan pemetaan yang menerjemahkan tabel yang ditemukan dalam basis data relasional ke kelas yang digunakan dalam bahasa program berorientasi objek dan sebaliknya. Meskipun terjemahan ini sering berguna, terjemahan ini tidak pernah sempurna. Ketidakcocokan impedansi objek-relasional adalah istilah yang digunakan untuk menggambarkan gesekan yang disebabkan oleh perbedaan dalam cara database relasional dan program berorientasi objek menyusun data.
Meskipun database relasional dan pemrograman berorientasi objek menggambarkan dua pilihan desain khusus, masalah menerjemahkan antara aplikasi dan lapisan database adalah masalah umum yang ada terlepas dari jenis database atau paradigma pemrograman. Lapisan abstraksi basis data adalah istilah yang lebih umum untuk perangkat lunak dengan tanggung jawab menerjemahkan antara dua konteks ini.
Menjaga agar perubahan struktural tetap sinkron dengan database
Satu fakta penting yang akan Anda temukan saat mengembangkan aplikasi adalah karena database ada di luar basis kode Anda, maka perlu perhatian khusus untuk mengatasi perubahan pada struktur data Anda. Masalah ini lebih umum di beberapa desain database daripada yang lain.
Pendekatan paling umum untuk menyinkronkan struktur data aplikasi Anda dengan database Anda adalah proses yang disebut migrasi database atau migrasi skema (keduanya dikenal bahasa sehari-hari hanya sebagai migrasi). Migrasi melibatkan pembaruan struktur database Anda untuk mencerminkan perubahan saat model data aplikasi Anda berkembang. Ini biasanya berbentuk serangkaian file, satu untuk setiap evolusi, yang berisi pernyataan yang diperlukan untuk mengubah database ke dalam format baru.
Melindungi akses ke data Anda dan membersihkan input
Satu tanggung jawab penting saat bekerja dengan database sebagai pengembang adalah memastikan bahwa aplikasi Anda tidak mengizinkan akses tidak sah ke data. Keamanan data adalah masalah yang luas dan berlapis-lapis dengan banyak pemangku kepentingan. Pada akhirnya, beberapa pertimbangan keamanan akan menjadi kewajiban Anda untuk diperhatikan.
Aplikasi Anda akan memerlukan akses istimewa ke database Anda untuk melakukan tugas rutin. For safety, the database's authorization framework can help restrict the type of operations your application can perform. However, you need to ensure that your application restricts those operations appropriately. For example, if your application manages user profile data, you have to prevent a user from manipulating that access to view or edit other users' information.
One specific challenge is sanitizing user input. Sanitizing input means taking special precautions when operating on any data provided by a user. There is a long history of malicious actors using normal user input mechanisms to trick applications into revealing sensitive data. Crafting your applications to protect against these scenarios is an important skill.
Conclusion
Databases are an indispensable component in modern application development. Storing and controlling the stateful information related to your application and its environment is an important responsibility that requires reliability, performance, and flexibility.
Fortunately, there are many different database options designed to fulfil the requirements of different types of applications. In our next article, we'll take an in-depth look at the different types of databases available and how they can be used to match different types of application requirements.