Data dalam DBMS relasional kami semakin besar, apakah ini saatnya untuk pindah ke NoSQL?

17

Kami membuat aplikasi jejaring sosial untuk tujuan eLearning. Ini adalah proyek percobaan yang sedang kami teliti di lab kami. Ini telah digunakan dalam beberapa studi kasus untuk sementara waktu dan data dalam DBMS relasional kami (SQL Server 2008) semakin besar. Sekarang beberapa gigabyte dan tabel-tabelnya saling terhubung satu sama lain. Performanya masih bagus, tetapi kapan kita harus mempertimbangkan opsi lain? Apakah ini masalah kinerja?

ePezhman
sumber
3
Untuk jejaring sosial apa pun, saya akan sangat merekomendasikan basis data grafik seperti Neo4j atau OrientDB
Apollo

Jawaban:

14

Beberapa gigabytes tidak terlalu " besar ". Ini lebih seperti ukuran normal DB perusahaan. Selama Anda menggunakan PK ketika bergabung dengan tabel, itu akan bekerja dengan sangat baik, bahkan di masa depan (selama Anda tidak mendapatkan data TB per hari).

Sebagian besar profesional yang bekerja di lingkungan data besar menganggap > ~ 5TB sebagai awal dari istilah data besar. Tetapi meskipun demikian itu tidak selalu merupakan cara terbaik untuk hanya menginstal database nosql terbaik berikutnya. Anda harus selalu memikirkan tugas yang ingin Anda arsipkan dengan data (agregat, baca, cari, milikku, ..) untuk menemukan alat terbaik untuk masalah Anda.

yaitu jika Anda melakukan banyak pencarian dalam database Anda, mungkin akan lebih baik untuk menjalankan instance / cluster solr dan mendenormalkan data Anda dari DBMS seperti Postgres atau SQL Server Anda dari waktu ke waktu dan memasukkannya ke dalam solr alih-alih hanya memindahkan data dari sql ke nosql dalam hal ketekunan dan kinerja.

Johnny000
sumber
10

Untuk menjawab pertanyaan ini, Anda harus menjawab jenis kompromi yang Anda mampu. RDBM mengimplementasikan ACID . Ini mahal dalam hal sumber daya. Tidak ada solusi NoSQL yang ACID. Lihat teorema CAP untuk mempelajari ide-ide ini.

Jadi, Anda harus memahami setiap kompromi yang diberikan oleh setiap solusi dan memilih salah satu yang paling sesuai untuk masalah Anda.

rapaio
sumber
8

Big Data sebenarnya tidak begitu tentang "seberapa besar itu".

Pertama, beberapa gigabytes tidak besar sama sekali, hampir tidak ada apa-apanya. Jadi jangan repot-repot sendiri, sistem Anda akan terus bekerja secara efisien untuk beberapa waktu saya pikir.

Maka Anda harus memikirkan bagaimana Anda menggunakan data Anda.

  • Pendekatan SQL: Setiap data berharga, dikumpulkan dan dipilih dengan baik, dan fokusnya adalah menyimpan data yang berharga dan terstruktur dengan baik. Ini bisa mahal, semuanya saling terkait, dan bagus untuk sistem dan data fungsional yang terstruktur dengan baik.
  • Pendekatan Big Data: Dalam big data Anda pada dasarnya menyimpan hampir semua, terlepas dari nilai yang dimilikinya, dan kemudian melakukan proses analisis aktif. Hal-hal yang tidak ditautkan, mereka disalin. Misalnya katakanlah saya punya entri blog. Di Big Data tidak akan ada tautan ke pembuatnya, tetapi penulis akan disematkan di dalam entri blog. Jauh lebih terukur, tetapi membutuhkan pendekatan yang berbeda dan lebih kompleks.

Jika Anda menyimpan "functionnal" data yang digunakan oleh aplikasi Anda, saya akan menyarankan Anda untuk tetap menggunakan SQL. Jika Anda menyimpan data untuk mencarinya nanti atau melakukan pelaporan, dan jika jumlah data ini dapat meningkat dengan cepat, saya akan menyarankan data besar. Menurut pendapat saya, big data berguna ketika Anda berurusan dengan data nyata yang harus dikumpulkan dan dianalisis secara terus menerus.

tanou
sumber
8

Saya memposting jawaban yang cukup terperinci tentang stackoverflow tentang kapan waktu yang tepat untuk menggunakan basis data relasional vs dokumen (atau NoSQL), di sini:

Motivasi untuk menggunakan database relasional / ORM atau database dokumen / ODM

Ringkasan:

  • untuk hal-hal kecil, gunakan alat apa pun yang Anda kenal

  • beberapa gigabytes jelas merupakan hal kecil: tidak menjadi besar sampai terlalu besar untuk ditampung dalam satu MySQL Cluster dengan jumlah node yang wajar (16-32), yang berarti mungkin data 8-16TB dan beberapa juta transaksi per detik (atau database berbasis hard drive yang lebih konvensional dengan data TB hingga 100-an dan beberapa ribu transaksi per detik).

  • jika Anda terjebak dengan database lain (bukan MySQL Cluster), dapatkan jarak tempuh lebih banyak darinya dengan melemparkan perangkat keras FusionIO.

  • setelah Anda memiliki data yang lebih besar dari beberapa TB dan lebih cepat dari ribuan transaksi per detik, ini adalah saat yang tepat untuk melihat pindah ke sharding logis dalam kode aplikasi terlebih dahulu dan kemudian ke NoSQL.

  • Cassandra :)

Alex I
sumber
6

Apakah waktu untuk pindah ke NoSQL akan tergantung pada 2 hal:

  1. Sifat / struktur data Anda
  2. Performa Anda saat ini

Basis data SQL unggul ketika data terstruktur dengan baik (misalnya saat dapat dimodelkan sebagai tabel, lembar bentang Excel, atau serangkaian baris dengan jumlah kolom tetap). Juga bagus ketika Anda perlu melakukan banyak gabungan tabel (yang sepertinya Anda lakukan).

Basis data NoSQL unggul bila data tidak terstruktur di luar pasangan nilai kunci.

Dari segi kinerja, Anda harus bertanya pada diri sendiri satu pertanyaan: apakah solusi SQL Anda saat ini lambat ?

Jika tidak, ikuti prinsip " IIABDFI ".

DVK
sumber