Data dari sumber eksternal seringkali tidak dalam struktur formator yang dapat langsung
diproses.
Perselisihan data diperlukan untuk memfilter, membersihkan, menyiapkan data untuk
analisis hilir.
BigDatadatasets sering kali perlu disimpan dalam beberapa salinan.
Membutuhkan strategi investor inovatif.
Teknologi untuk mencapai solusi penyimpanan yang hemat biaya dan berskala tinggi.
Cluster
Kumpulan server atau node yang sangat erat.
Memiliki spesifikasi perangkat keras yang sama dan terhubung bersama melalui jaringan
untuk bekerja sebagai satu unit.
Setiap node memiliki sumber daya khusus: memori, prosesor, hard drive.
Sebuah cluster dapat menjalankan tugas dengan membaginya menjadi potongan-
potongan kecil dan mendistribusikan eksekusinya ke komputer yang berbeda.
File system
Sebuah metode menyimpan dan mengatur data di perangkat penyimpanan.
File adalah unit penyimpanan atom yang digunakan oleh sistem file untuk menyimpan
data
Memberikan tampilan data yang logis.
OS menggunakan sistem file untuk menyimpan dan mengambil data atas nama aplikasi
Setiap OS mendukung satu atau lebih sistem file (NTFS dari Microsoft Windows dan
exton Linux)
Distributed file system
Sistem file yang dapat menyimpan file besar yang tersebar di seluruh node cluster.
Bagi klien, file tampaknya bersifat lokal; Namun, ini hanya tampilan logis karena secara
fisik file didistribusikan ke seluruh cluster.
Memungkinkan file diakses dari berbagai lokasi.
Contoh: Google File System (GFS) dan Hadoop Distributed File System (HDFS).
NOSQL (not-only SQl)
Database non-relasional yang sangat skalabel, toleran terhadap kesalahan, dan dirancang
khusus untuk menampung data semi-terstruktur dan tidak terstruktur.
Seringkali menyediakan antarmuka kueri berbasis API yang dapat dipanggil dari dalam
dan aplikasi.
Mendukung bahasa query selain SQL:
Dioptimalkan untuk menyimpan XML dan menggunakan Xquery.
Dirancang untuk menyimpan RDF dan menggunakan SPARQL.
Beberapa database NoSQL juga menyediakan antarmuka kueri seperti SQL.
Sharding
Proses mempartisi secara horizontal kumpulan data yang lebih besar menjadi kumpulan
kumpulan data yang lebih kecil dan lebih mudah dikelola yang disebut pecahan.
Didistribusikan ke beberapa node (server atau mesin).
Setiap pecahan disimpan di node terpisah.
Setiap node hanya bertanggung jawab atas data yang disimpan di dalamnya.
Setiap pecahan memiliki skema yang sama.
Semua pecahan secara kolektif mewakili kumpulan data lengkap.
How sharding works
Setiap shard dapat secara independen melayani pembacaan dan penulisan untuk subset
data tertentu yang menjadi tanggung jawabnya.
Bergantung pada kueri, data mungkin perlu diambil dari kedua shard.
Manfaat sharding
Memberikan toleransi parsial terhadap kegagalan.
Jika terjadi kegagalan node, hanya data yang disimpan di node tersebut yang terpengaruh.
Peringatan Sharding
Pola kueri perlu diperhitungkan untuk menghindari kemacetan.
Kueri yang membutuhkan data dari beberapa bagian akan meningkatkan kinerja penalti.
Lokalitas data membuat data yang sering diakses tetap berada di lokasi yang sama
Replication
Menyimpan banyak salinan dari sebuah set data, yang dikenal sebagai replika, di
beberapa node.
Memberikan skalabilitas dan ketersediaan.
Data yang sama direplikasi di berbagai node.
Toleransi kesalahan juga dicapai dengan redundansi data.
Dua metode berbeda:
o To different methods
o Peer-to-peer
Master-Slave
Semua data ditulis ke node master.
Setelah disimpan, data direplikasi ke beberapa node budak.
Semua permintaan tulis eksternal, termasuk menyisipkan, memperbarui, dan menghapus,
terjadi pada node master, sedangkan permintaan baca dapat dipenuhi oleh node slave
mana pun.
Permintaan baca dapat dipenuhi oleh node slave mana pun.
Ideal untuk membaca beban intensif.
Performa tulis menurun karena jumlah penulisan meningkat.
Jika node master gagal, pembacaan masih dapat dilakukan melalui node slave mana pun.
Master-Slave write consistency
Penulisan konsisten, karena semua penulisan dikoordinasikan oleh node master.
Node budak dapat dikonfigurasi sebagai node cadangan untuk node master.
Jika node master gagal, penulisan tidak didukung hingga node master dibuat kembali.
Node master dapat dibangkitkan dari cadangan dari node master, atau masternode baru
dipilih dari node slave.
Peer-to-peer
Dengan replikasi peer-to-peer, semua node beroperasi pada level yang sama.
Setiap node, yang dikenal sebagai peer, sama-sama mampu menangani baca dan tulis.
Setiap tulisan disalin ke semua rekan.
Rawan menulis ketidakkonsistenan yang terjadi sebagai akibat dari update simultan dari
data yang sama di beberapa peer.
Concurrency handling strategy
Konkurensi pesimistis
• Menggunakan penguncian: hanya satu pembaruan pada rekaman yang dapat terjadi
dalam satu waktu.
• Merugikan ketersediaan: rekaman database yang sedang diperbarui tetap tidak tersedia
sampai semua kunci dilepaskan.
Konkurensi yang optimis
•Tidak menggunakan penguncian.
• Memungkinkan terjadinya ketidakkonsistenan.
• Konsistensi akhirnya akan tercapai setelah semua pembaruan disebarkan.
• Rekan mungkin tetap tidak konsisten untuk beberapa periode waktu sebelum mencapai
konsistensi.
Sharding and replication
•Meningkatkan toleransi kesalahan terbatas yang ditawarkan oleh sharding.
•Memanfaatkan peningkatan ketersediaan dan skalabilitas replikasi.
•Baik sharding dan replikasi dapat digabungkan.
•Dua cara untuk menggabungkan:
•Replikasi sharding dan master-slave
•Sharding dan replikasi peer-to-peer
Sharing + Master-Slave Replication
• Banyak pecahan menjadi budak dari satu master.
• Master itu sendiri adalah pecahan.
• Menghasilkan banyak master.
• Satu pecahan slave hanya dapat dikelola oleh satu pecahan master.
• Konsistensi penulisan dipertahankan oleh master-shard.
• Jika master-shard menjadi non-operasional, toleransi kesalahan untuk operasi tulis akan
terpengaruh.
• Replika pecahan pada beberapa node budak memberikan skalabilitas dan toleransi kesalahan
untuk operasi pembacaan.
CAP Theorem
•Konsistensi, Ketersediaan, dan Toleransi partisi (CAP) teorema, juga dikenal sebagai Teorema
Brewer.
•Ini menyatakan bahwa sistem database terdistribusi, yang berjalan di cluster, hanya dapat
menyediakan dua dari tiga properti berikut:
• Konsistensi: Pembacaan dari node mana pun akan menghasilkan data yang sama di
beberapa node.
• Ketersediaan: Permintaan baca / tulis akan selalu diakui dalam bentuk berhasil atau gagal.
• Toleransi partisi: Sistem database dapat mentolerir pemutusan komunikasi yang
memisahkan cluster menjadi beberapa silo dan masih dapat melayani permintaan baca / tulis
ACID
Prinsip desain database yang terkait dengan manajemen transaksi.
Atomicity
Consistency
Isolation
durability
Memanfaatkan konkurensi pesimistis untuk memastikan konsistensi melalui aplikasi kunci
rekaman.
Pendekatan tradisional untuk transaksi database yang digunakan oleh RDBMS.
Durabillity
Memastikan bahwa hasil operasi permanen.
Setelah dilakukan, transaksi tidak dapat dibatalkan, terlepas dari kegagalan sistem apa
pun
Base
Prinsip desain database berdasarkan CAPtheorem dan dimanfaatkan oleh sistem database
yang menggunakan teknologi terdistribusi.
BASE singkatan dari:
Basically available
Soft state
Eventual consistency
Lebih mengutamakan ketersediaan daripada konsistensi
Memanfaatkan konkurensi optimis dengan melonggarkan batasan konsistensi kuat yang
diamanatkan oleh properti ACID.
Basically Available
Selalu terima permintaan klien.
Baik dalam bentuk data yang diminta atau notifikasi berhasil / gagal.
Eventual consistency
Status yang dibaca oleh klien yang berbeda, segera setelah menulis ke database, mungkin
tidak mengembalikan hasil yang konsisten
Basis data hanya mencapai konsistensi setelah perubahan telah disebarkan ke semua
node.
Bace versus ACID
BASE menekankan ketersediaan daripada konsistensi langsung.
ACID memastikan konsistensi langsung dengan mengorbankan ketersediaan karena
pencarian catatan.
Database BASE dapat melayani banyak klien tanpa latensi apa pun meskipun
memberikan hasil yang tidak konsisten.
Basis data yang sesuai dengan BASE tidak berguna untuk sistem ransaksional di mana
kurangnya konsistensi menjadi perhatian.