Karena jumlah data perusahaan pada umumnya telah tumbuh secara eksponensial, menjadi semakin penting untuk mengoptimalkan penyimpanan data. Ukuran data Anda tidak hanya memengaruhi ukuran dan biaya penyimpanan, tetapi juga memengaruhi kinerja kueri. Faktor kunci dalam menentukan ukuran data Anda adalah tipe data yang Anda pilih. Tutorial ini akan menjelaskan cara memilih tipe data yang tepat.
Apa itu Tipe Data?
Jenis data menentukan jenis dan rentang data apa yang dapat disimpan dalam bidang (atau kolom) tertentu.
Pertimbangkan tabel penjualan dengan catatan sampel berikut:
Setiap bidang memiliki jenis dan rentang nilainya sendiri:
waktu_pembelian :tanggal dan waktu obralsale_id :nilai integer bertambah satu untuk setiap penjualan barucustomer_id :nilai integer bertambah satu untuk setiap pelanggan barumata uang :teks selalu dalam kode mata uang 3 karakterjumlah_bayar :nilai numerik riil moneter antara $0,00 dan $1,000.00perangkat :teks, di mana nilainya dapat berupa:'desktop', 'aplikasi seluler', dan 'web seluler'has_discount :boolean di mana entri bisa TRUE
atau FALSE
catatan :teks, di mana entri dapat sepanjang yang diizinkan di alat input agen kami (250 karakter)
Jenis data (bilangan bulat, teks, bilangan real, dll...) dan rentang nilai yang mungkin (0 hingga 1.000; 3 karakter apa pun; dll...) sesuai dengan tipe data basis data tertentu .
Apa Jenis Data yang Mungkin?
Basis data yang berbeda memiliki tipe data berbeda yang tersedia, tetapi sebagian besar cocok dengan kategori berikut:
Numerik:
- bilangan bulat :untuk bilangan tanpa pecahan. Dapat ditandatangani (mengizinkan nilai positif dan negatif) atau tidak ditandatangani (hanya mengizinkan angka positif). Biasanya digunakan untuk bidang ID dan jumlah sesuatu
- desimal(x,y) :untuk bilangan dengan pecahan yang membutuhkan ketelitian yang tepat. Dapat ditandatangani (mengizinkan nilai positif dan negatif) atau tidak ditandatangani (hanya mengizinkan angka positif). Biasa digunakan untuk bidang moneter. Pengguna menentukan jumlah digit signifikan yang diperbolehkan secara keseluruhan (x) dan setelah titik desimal (y) dalam tanda kurung
- mengambang / ganda :untuk bilangan pecahan yang tidak membutuhkan ketelitian yang tepat. Dapat ditandatangani (mengizinkan nilai positif dan negatif) atau tidak ditandatangani (hanya mengizinkan angka positif). Biasa digunakan untuk semua bilangan real kecuali bidang moneter
Tanggal/waktu:
tanggal :untuk nilai tanggal
- waktu :untuk nilai waktu
- stempel waktu / tanggal waktu :untuk nilai tanggal dan waktu
Teks:
- karakter(n) :untuk string karakter dengan panjang tetap, di mana nilai dalam tanda kurung menentukan ukuran tetap setiap entri
- varchar(n) :untuk string karakter dengan panjang variabel, di mana nilai dalam tanda kurung menentukan ukuran maksimum yang diterima dari setiap entri
Boolean:
- boolean :untuk nilai boolean (benar/salah). Beberapa database (seperti MySQL) tidak memiliki tipe data boolean dan sebaliknya mengubah nilai boolean menjadi bilangan bulat (1=TRUE, 0 =FALSE)
Sebagian besar database menawarkan variasi ukuran untuk setiap jenis. Misalnya, MySQL menyediakan kemungkinan tipe data integer berikut:
Cara Memilih Jenis Data yang Tepat
Strategi dasar untuk memilih tipe data terbaik adalah memilih tipe data terkecil yang cocok dengan jenis data yang Anda miliki dan yang memungkinkan untuk semua nilai layak dari data Anda.
Misalnya, customer_id
dalam tabel sampel penjualan kami adalah bilangan bulat yang dimulai dengan 0. Saat ini perusahaan fiksi kami hanya memiliki 15.000 pelanggan. Menggunakan tabel tipe data integer MySQL dari bagian sebelumnya, kita mungkin tergoda untuk memilih SMALLINT
unsigned sebagai tipe data, karena itulah tipe data terkecil yang akan menerima nilai integer kami saat ini dari 0 hingga 15.000. Namun, kami berharap untuk mendapatkan 100.000 pelanggan selama 6-12 bulan ke depan. Saat kita melewati 65.535, SMALLINT
tidak akan mencukupi lagi. Jadi, pilihan yang lebih baik adalah MEDIUMINT
unsigned, yang akan melindungi kita selama beberapa tahun ke depan.
Anda bisa membiarkan database Anda memilih tipe data untuk Anda saat membuat tabel Anda dengan catatan sampel. Namun, ini jarang memberi Anda pilihan tipe data terbaik. Misalnya, membiarkan MySQL memilih tipe data untuk tabel penjualan dengan nilai sampel yang ditampilkan sebelumnya memberikan beberapa masalah.
Masalah yang kami temui dengan tipe data yang dipilih MySQL secara otomatis adalah:
- tipe data salah :Anda tidak akan dapat menggunakan bidang seperti yang Anda harapkan. Misalnya, memiliki
purchase_time
sebagai string dan bukan tipe data waktu berarti Anda tidak akan dapat melakukan operasi waktu (seperti menghitung sudah berapa lama sejak pembelian) di bidang - terlalu dibatasi :MySQL akan memberikan kesalahan ketika Anda mencoba memasukkan nilai yang lebih besar dari yang diizinkan oleh tipe data. Misalnya, kami akan mendapatkan kesalahan jika kami memiliki penjualan dengan jumlah_dibayar sebesar $100,00 atau lebih atau komentar_agen yang lebih panjang dari 65 karakter
- terlalu konservatif :sementara tidak ada yang akan pecah karena terlalu konservatif dengan tipe data, Anda akan membuang-buang ruang penyimpanan. Dengan contoh data kami, kami dapat menghemat 15% penyimpanan dengan menggunakan opsi pilihan yang tidak terlalu konservatif
Secerdas database modern, pemilik data masih tahu yang terbaik tentang jenis data apa yang disimpan dan nilai apa yang mungkin diambil data di masa mendatang. Jadi, Anda perlu menentukan dengan cermat tipe data untuk setiap bidang Anda.
Dokumentasi tentang tipe data untuk database umum yang berbeda disediakan di sini:
- MySQL
- Pergeseran Merah Amazon
- Apache Hive
- Teradata
Kesimpulan
Agar database Anda berfungsi dengan benar dan seoptimal mungkin, penting untuk memilih tipe data dengan cermat untuk setiap bidang di tabel Anda.