Sistem Penyimpanan Sangat Bersamaan

12

Bayangkan kebutuhan Anda adalah bahwa Anda memiliki 3 tabel besar (data terstruktur) dengan katakanlah 30 miliar baris di masing-masing (ukuran total 4TB) dan banyak pengguna secara bersamaan (yang merupakan thread paralel atau os pada mesin LAN jarak jauh) perlu membaca sebagian dari data melalui permintaan SELELCT WHERE GROUPBY mereka dan sangat bersamaan, katakanlah 10.000 bersamaan berbunyi pada saat yang sama dan juga pengguna perlu memasukkan (tidak ada pembaruan) data ke dalam tabel ini yang sangat bersamaan juga seperti 2000 penulis bersamaan (di seluruh pusat data jaringan LAN) . Para pengguna ingin membaca dan menyisipkan secepat mungkin dari penyimpanan ini di mana setiap membaca dan menulis akan terjadi dalam rentang ms hingga 1 detik.

Teknologi apa yang Anda rekomendasikan untuk memenuhi persyaratan seperti itu? Apakah ada penyimpanan data atau penyimpanan nilai kunci yang bisa melakukan ini? Cloud BUKAN pilihan.

Beberapa Klarifikasi:

Para pengguna TIDAK harus melihat data segera dan akhirnya konsistensi dapat diterima. Data diakses melalui driver apa pun yang dapat disediakan oleh penyimpanan dan pengguna hanya menjalankan utas pada mesin jarak jauh dari pusat data. Pertanyaannya kebanyakan seperti SELECT WHERE GROUPBY.

Data dalam format tabel dan setiap baris sekitar 60 byte.

Tidak ada opsi cloud di mana saya tidak dapat menggunakan DynamoDB atau solusi serupa. Saya harus dapat meng-host-nya secara internal di pusat data.

Semua data dari tabel dapat dibaca sepanjang waktu dan pola penggunaan tidak dapat diprediksi. Tidak ada permintaan bergabung atau super panjang. Tidak diperlukan DR tetapi HA yang wajar diperlukan tetapi tidak harus mewah. Setiap pembaca mendapatkan kumpulan baris berdasarkan klausa dan barisnya yang tidak benar-benar terkait. Kita mungkin dapat memiliki panjang yang diperbaiki untuk setiap baris tetapi saya berharap lapisan penyimpanan akan mengkhawatirkannya.

Juga, perhatian terbesar saya adalah semua penulisan bersamaan yang terjadi dengan pembacaan bersamaan.

Wawasan Anda tentang hal ini sangat dihargai.

Dan lebih dari itu, saya memiliki tiga tabel tersebut dengan masing-masing 30 miliar baris memegang jenis objek yang berbeda

iCode
sumber
mendefinisikan cloud karena apa yang kebanyakan orang, katakanlah 99% dari populasi umum dan 100% orang pemasaran menyebut cloud hanyalah sebuah cluster yang dipelihara orang lain.
Maksud saya, saya tidak bisa menggunakan DynamoDB atau beberapa teknologi yang hanya tersedia di cloud publik seperti amazon atau azure dan sebagainya.
iCode

Jawaban:

6

Jika akhirnya konsistensi dapat diterima dan semua pertanyaan Anda adalah agregat maka mungkin sistem OLAP latensi rendah mungkin bekerja untuk Anda. Persyaratan Anda terdengar seperti platform perdagangan algoritmik. Jenis arsitektur ini sering digunakan dalam sistem lantai perdagangan yang memiliki persyaratan untuk melakukan perhitungan analisis statistik agregat pada data terkini.

Jika Anda dapat mempartisi data berdasarkan tanggal dan baris lama tidak diperbarui maka Anda dapat membangun sistem OLAP hybrid menggunakan server OLAP konvensional seperti layanan Analisis Microsoft yang didukung oleh platform RDBMS biasa. Seharusnya dimungkinkan untuk mengatasi ini ~ 4TB data dan SQL Server dan SSAS akan melakukan cluster disk bersama. Sistem OLAP serupa (mis. Oracle / Hyperion Essbase) tersedia dari vendor lain.

Server OLAP bekerja dengan mempertahankan data di toko asli, bersama dengan agregat. Sebagian besar akan mendukung data yang dipartisi. Selain itu, sebagian besar juga akan bekerja dalam mode ROLAP, di mana mereka mengeluarkan pertanyaan terhadap basis data yang mendasarinya. Yang penting untuk diperhatikan adalah bahwa strategi penyimpanan dapat dikelola berdasarkan per-partisi, dan Anda dapat mengganti partisi dari satu ke yang lain secara terprogram,

Dalam model ini, data historis disimpan di partisi MOLAP dengan agregat data juga bertahan. Jika suatu kueri dapat dipenuhi dari agregat maka server akan menggunakannya. Agregat dapat disetel agar sesuai dengan kueri, dan agregat yang benar akan secara dramatis mengurangi jumlah perhitungan yang dibutuhkan untuk menyelesaikan kueri. Permintaan agregat yang sangat responsif dimungkinkan dengan sistem jenis ini.

Data waktu nyata dapat diimplementasikan dengan mempertahankan partisi terkemuka kecil - untuk bulan saat ini, hari atau bahkan jam jika perlu. Server OLAP akan mengeluarkan kueri terhadap basis data; jika partisi ini cukup kecil, DBMS akan dapat merespons dengan cepat. Sebuah proses reguler menciptakan partisi terkemuka baru dan mengubah periode historis tertutup menjadi MOLAP. Partisi yang lebih lama dapat digabungkan, memungkinkan data historis dikelola pada setiap butir yang diinginkan.

Klien menulis ke database hanya menulis langsung RDBMS yang mendasarinya. Jika data historis tetap statis mereka hanya akan menulis ke partisi terkemuka. 4TB adalah volume praktis untuk menggunakan SSD karena jika Anda membutuhkan kinerja DBMS ekstra. Bahkan vendor mainstream memiliki penawaran berbasis SSD dengan unit SLC lebih cepat sebagai opsi.

ConcernedOfTunbridgeWells
sumber
Terima kasih atas tanggapan Anda. Anda benar. Masalah saya mirip dengan platform perdagangan algoritmik tetapi juga berbeda. kami telah mencoba rute RDBMS dan tidak dapat mengukur. Saya membutuhkan penyimpanan yang dapat menskala dan tidak memiliki kompleksitas sistem OLAP karena ukuran data kami bertambah dan begitu kami mendapatkan lebih banyak TB pada tiga tabel, RDBMS hanya akan membuat banyak masalah penguncian dan serupa. Saya berharap opsi nosql dapat memenuhi persyaratan tersebut. Adakah pemikiran tentang itu?
iCode
@MDotnet Harapan Anda / persyaratan untuk solusi sederhana untuk pengguna bersamaan 12k, masalah ukuran 4TB mungkin tidak realistis. Anda menyebutkan bahwa Anda melihat pendekatan RDBMS dan itu tidak skala; 1) dapatkah Anda menambahkan rincian ini ke Q 2) Jawaban ini menganjurkan pendekatan ROLAP / MOLAP hibrid, bukan basis data relasional murni.
Mark Storey-Smith
Saya bukan DBA dan saya pikir "drive oleh upvotes" buruk untuk sebagian besar situs khusus, tetapi saya tidak peduli, jawaban ini terlalu bagus untuk hanya satu upvote. +1
psr