Arsip: [saran] db server untuk data jumlah besar
more 17 years ago
simba
Hi all,
Saya saat ini sedang mengembangkan sistem informasi berbasis web. Data yg akan
diolah sangat besar, sekitar 50 juta record (dan terus berkembang). Load
transaksinya juga lumayan tinggi, sekitar 400-500 concurrent hits.
Untuk saat ini saya menggunakan database mySQL dgn engine myISAM dgn harapan
bisa melayani transaksi dan data dgn cepat. Struktur database dan aplikasi telah
saya rancang sedemikian rupa untuk optimasi kecepatan. Dalam beberapa hal,
terpaksa saya mengorbankan constraint database, walaupun tetap dijaga di level
aplikasi.
Namun demikian, saya masih merasa mySQL cukup "keteteran" juga dgn jumlah data
dan load transaksi seperti di atas, terutama saat bulk data processing. Proses
bulk data, krn alasan tertentu, tidak bisa dihindarkan walaupun tidak terlalu
sering. Saya udah coba pindah database server ke DB2, PostgreSQL, dan Firebird,
tapi ternyata hasilnya juga gak jauh berbeda. Dalam beberapa hal, mySQL masih
lebih cepat.
Saya mohon saran dan masukan dari rekan2 semua, yg mungkin pernah punya
pengalaman dgn sistem yg serupa dgn yg saya bangun di atas. Kira2 alternatif
database server apa yg mampu menangani load transaksi dan jumlah data seperti yg
saya sebutkan di atas? Syukur2 kalo performance tetep bagus tanpa mengorbankan
constraint database. Beberapa teman menyarankan untuk mencoba Oracle 10g. Tapi
krn saya belum pernah berurusan dgn Oracle, saya juga mohon masukan juga dari
rekan2 yg pernah menggunakan Oracle.
Atas saran dan masukannya, sebelumnya saya ucapkan terima kasih.
more 17 years ago
cyber_hecker
diriku belum pernah membuat aplikasi dengan data yang jumlahnya lebih dari 10 juta. walau begitu udah terlalu sering nemu masalah lambatnya proses data.
diriku malah bingung untuk bagian :
'Dalam beberapa hal,
terpaksa saya mengorbankan constraint database, walaupun tetap dijaga di level
aplikasi.'
karena kecepatan akses database bila di beri konstraint lebih baik daripada tidak diberi constraint. contoh sederhana misalnya tabel pelanggan dan tabel transaksi. bila kita membuat query yang merelasikan kedua tabel tersebut, antara di beri konstraint dan tidak diberi konstraint (menurut pengalamanku) lebih baik diberi konstraint.
diriku juga belum pernah menggunakan / membuat program dengan database Oracle 10g, tapi diriku udah mencoba mengakses program yang berdasarkan Oracle 10g (simduk milik pusat) dan kayaknya lebih kurang deh soal akses data dengan MS SQL Server ataupun mySQL jika datanya udah lumayan.
emang semua nya kembali kepada rancangan database kita pertama kali. semakin baik rancangan yang kita buat. semakin cepat proses data yang akan dilakukan. saran ku dari yang masih bodoh ini :D :
1. dalam membuat query biasakan menggunakan inner join.
2. selalu menfilter query yang digunakan, jangan di buka secara keseluruhan (maksudnya gunakan WHERE)
3. kalo gak terpaksa jangan gunakan klausa WHERE ... LIKE ...
4. hati-hati melakukan sorting pada query. jika tidak diperlukan dan bener-bener kepepet, hindari klausa SORT ...
5. selalu gunakan constraint.. jika emang data yang akan di entri boleh di kosongkan.. pasangkan dengan constraint 0 - TIDAK TAHU atau sejenisnya (constraint pada umumnya tidak boleh NULL).
6. gunakan nested query untuk memperkecil range proses data.
7. jangan gunakan *.dbf apa lagi paradox buat nyimpen datanya. wekekekeke....
more 17 years ago
n3o_cybertech
wah walaupun diriku masih awam tentang ini tapi aq mo ngucapin makasih ke cyber_hecker yang dah ngasih tips2 yang sangat bermanfaat.
more 17 years ago
juan81
data 50 jt itu apanya??? transaksinya apa masternya juga??? wew kalo masternya juga perushaan apa itu 50jt record..... kalo gua saranin 2 database deh... kalo bukan ms sql server 2005 atau oracle 10 g....
gua buat program untuk toko biasa paling mentok transaksinya 1jt record... itupun udah banyak....
wew servernya harus kuat... ahahahaha..... kalo kayak saya bilang bukan sesuai dengan CH bilang masalahnya bentuk laporan biasanya di minta sama pemilik... kita harus memikirkan supaya jadi laporan itu... mau pake like pake join... itu tergantung situasi masalahnya gak ada lagi jalan ya terpaksa pake itu.... wkwkkwkwkw.... :lol: :lol: :lol: :lol:
kalo data besar mikirkan data mining sama data werehouse.... kalo udah gede gini gak peduli storage besar yang penting aksesnya cepat....
more 17 years ago
wh4nx
nambahin ya :
1. lakukan tuning MySQL (ada di ebook diriq lupa judulnya apa xixixix)
2. gunakan index, peng-indekan akan mempercepat akses bahkan mpe > 50%
3. lakukan optimasi query (join dll)
4. Normalisasi tabel
5. Relasi dengan constraint integrity
6. klausa WHERE ... LIKE .... bisa diganti dengan MATCH(...) AGAINTS(...) gunakan FULLTEXT index dlm hal ini.
7. dll ada yg mo nambahin hehehe
semoga bermanfaat, ganbate kudasai!!
more 17 years ago
deLogic
Hmm.. kalo untuk DB dengan jumlah data besar, Anda perlu melakukan berbagai tuning dan optimalisasi, Indexing, bla bla bla, seperti yang sudah diungkapkan oleh beberapa rekan sebelumnya. Anda perlu menggunakan DBEngine kelas traktor, mungkin Oracle bisa jadi pilihan, atau bisa dicoba MaxDB (walaupun yg ini saya belum pernah coba)
Sebenarnya DBServer tersebut untuk apa dulu, jika untuk transaksai, constraint cukup penting, walaupun tidak mutlak, tapi kalo untuk reporting, data warehouse.. segala macam constraint, relasi, trigger, normalisasi, dsb harus seminimal mungkin Anda hindari, gunakan model Flat dan DBEngine yang super kenceng.
selain software, Anda perlu memperhatikan faktor hardware dan konfigurasinya. RAM nya harus besar, I/O nya juga harus cepat. Kalau perlu pake model Load-Balancing, master-slave atau clustering.
more 17 years ago
simba
@deLogic:
Betul. Saya dan tim udah profiling, gonta-ganti setting/konfigurasi, optimasi, dlsb... tapi kayaknya memang harus upgrade hardware, terutama memory. Tapi, solusi sementara udah ada. Duh, harus berurusan ama duit (lagi) deh, males banget sebenarnya. :( Anyway, thanks atas masukan dan saran dari semua rekan.
more 17 years ago
DelphiExpert
bro simba udah gunakan RAM berapa besar? ini basic & harus terpenuhi terlebih dahulu.
jenis RAM juga harus se-level utk RAM kelas cluster server. (10x lipat lebih mahal)
data yang 50 jt record tersebut benar seperti om deLogic bilang apakah bersifat static (master) atau transaksi?
kebanyakan di perusahaan2 besar DB di partisi menjadi beberapa cluster (misal operator's customers data). misal 50jt record tsb adalah bersifat master maka data dipartisi menjadi minimal 2 buah computer (atau idealnya adalah sebanyak uniqe search index).
haha... agak ekstrim memang, tapi mau ngga' mau seperti itu. cluster computers total at least "A .. Z / 2" :mrgreen:
Oracle versi 10g sudah built-in support clustering, tapi konfigurasinya lumayan ribet...
more 17 years ago
n3o_cybertech
waduh...waduh gak mudeng saya soal pembahasan sampe sejauh ini, emang benar kata orang ilmu di luar itu lebih banyak daripada ruang lingkup kampus, tapi dengan ini akan menjadikan modalku untuk besok...Thread ini berguna banget untukku.
more 17 years ago
hello_kitty
he he...
mumpung lagi pada mbahas ini, nitip masalah juga
pada case gw, dikarenakan kondisi sedemikian rupa DB server dialihkan ke Oracle 9i
sehingga opsi untuk fine tuning bisa lebih banyak :
- menghilangkan constraint secara DDL (FK, UNIQUE)
setuju, akan mempercepat DML secara bulk
asal terdapat garansi bahwa constraint tetap bisa dijaga, baik dari modul program maupun konsistensi data itu
sendiri. pertimbangan : meskipun klaim dari banyak DB Engine bahwa proses pengecekan constraint hanya memerlukan
sedikit resource (memory, CPU Time), tapi tetap merupakan hal yang perlu dipertimbangkan untuk manipuasi data
secara bulk
- index dan reindex
meskipun memakan waktu yang lama, hal ini sangat vital untuk tuning performa query select, lebih bagus kalo
ditempatkan di schedule tengah malam, biar ga kelamaan nunggu
- kalo bukan transaksional, jangan sungkan pake materialized view yang sudah di-denormalisasi untuk kepentingan
searching n viewing, bisa dikombinasikan dengan cut-off data secara periodik (misalnya, data 1 minggu terakhir)
- gunakan hint, semacam /+ PARALLEL / atau /+ USE_HASH /
akan lebih optimal untuk lingkungan multiprosesor semacam server Sun Fire
- fungsi/procedure yang berkaitan dengan bisnis proses jangan dibebankan ke PL-SQL DB server, mendingan di layer
atasnya (java / php framework)
- menggunakan Grid Computing, yang ini gw belon jelas, bisikan dari temen sebelah
- jangan pake RAID, idem dg yang diatas
- 1 keping memory 1 GB =kurang lebih 1 jt, kalo 10 GB ya 10 jt-an, bandingkan dengan manggil OCA / OCP yang 2.000
dollar sekali visit + konsulting + problem solving
naaaah, masalahnya gw juga punya kasus yang sama...
jumlah data, ya segituan lah... pertumbuhan 17 jt record per hari
ketika user pengen bisa nampilkan grafik dari data tsb kurang dari 30 detik, point2 diatas ternyata belon memecahkan masalah juga :P
ada yang punya saran lagi?
more ...
reply |
Report Obsolete
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 3 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 4 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 12 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 12 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 12 years ago
Random Topic
- Hide salah satu field
by Yudho in Hal umum tentang Pascal Indonesia more 17 years ago - Query Processing Integrated with ProgressBar
by n3o_cybertech in Hal umum tentang Pascal Indonesia more 17 years ago - Need Attention Please! About HACKER TATA KRAMA
by DelphiExpert in Hal umum tentang Pascal Indonesia more 18 years ago - Pop up menu di dbgrid
by Brams in Tip n Trik Pemrograman more 17 years ago - (help, master delphi) Aplikasi database delphi dengan input
by din_dim in Network, Files, I/O & System more 13 years ago - gabungin 2 komponen
by esafm in Tip n Trik Pemrograman more 16 years ago - safe mode
by bodoh in OOT more 15 years ago - Tanya : Lihat meteran listrik ? bisa ga sih?
by boy_borland in Network, Files, I/O & System more 17 years ago - membuat report yang berisi data gambar
by asepolin in Hal umum tentang Pascal Indonesia more 15 years ago - copy file dengan parameter date modified
by jagur in Tip n Trik Pemrograman more 17 years ago