Perlu diketahui bahwa storage dan database itu berbeda. Perbedaannya pada database terdapat engine sedangkan pada storage tidak. Seperti diketahui bahwa database membutuhkan server. Untuk menyimpan sementara data dari EC2 instance maka dibuat instance store. Jangan menyimpan file penting di instance store. Untuk menyimpan data yang penting diperlukan lokasi penyimpanan yang permanen sehingga data tidak hilang ketika EC2 instance stop. Amazon Elastic Store adalah media penyimpanan secara permanen. Data yang tersimpan tersebut memang telah permanen, namun akan ada baiknya dibuat cadangan untuk mencegah hal yang tidak diinginkan. Jika dilakukan duplikasi maka akan membuang banyak sumber daya, maka solusinya adalah pencadangan inkremental. Amazon EBS (Elastic Block Service) Snapshot adalah layanan yang disediakan.
Sumber: https://pixabay.com/id/vectors/skema-database-tabel-data-skema-1895779/
Setiap objek yang disimpan terdiri atas data, metadata, dan kunci. Yang dimaksud data itu bisa teks, dokumen, gambar, atau video. Sedangkan metadata itu berisi informasi mengenai data tersebut. Lain halnya dengan kunci yang berisi identifier atau pengenal yang unik. Tingkat penyimpanan itu ada dua, yaitu block-level storage dan object-level storage. Jika sebuah data dihapus pada level blok maka hanya data tertentu yang akan dihapus, sedangkan jika data dihapus pada level objek maka seluruh data itu akan diperbarui. Di dalam Amazon S3 atau Amazon Simple Storage Service terdapat kelas penyimpanan yaitu:
- S3 Standard
- S3 Standard-Infrequent Access (S3 Standard-IA), data yang jarang diakses
- S3 One Zone-Infrequent Access (S3 One Zone-IA), data yang jarang diakses dan disimpan di satu zona
- S3 Intelligent Tiering, menyimpan sekaligus mengetahui pola data
- S3 Glacier, menyimpan data untuk keperluan audit
- S3 Glacier Deep Archive, menyimpan data untuk keperluan audit namun aksesnya butuh waktu lebih lama
Amazon Elastic File System atau Amazon EFS merupakan sistem file terkelola yang bisa diskalakan dan bisa digunakan oleh AWS cloud dan on-premise. Berbeda dengan Amazon EBS yang tidak dapat membaca dan menulis data secara bersamaan, di Amazon EFS data tersebut dapat dibaca dan ditulis secara bersamaan sehingga dapat discaling secara horizontal berdasarkan AZ atau Availability Zone.
Data yang telah tersedia tentu akan diambil manfaat dengan diolah maka munculah Amazon Relational Database Service. Didalamnya terdapat beberapa fitur yaitu:
- Automated Patching (memperbaiki masalah dengan memperbarui program)
- Backup (pencandangan)
- Redundancy (memiliki lebih dari satu instance untuk berjaga-jaga jika instace pertama gagal beroperasi)
- Failover (instance lain akan mengambil alih saat instance utama mengalami kegagalan)
- Disaster Recovery (memulihkan pascabencana)
- Encryption at Rest (enkripsi data saat disimpan)
- Encryption in-transit (enkripsi data saat sedang dikirim dan diterima)
Pengelolaan database yang lebih maju bisa didapatkan dari Amazon Aurora. Jika Amazon RDS digunakan untuk data relasional, maka ada juga Amazon DynamoDB yang merupakan not only relational database atau noSQL. Setelah database dibuat maka data-data tersebut harus dapat dikonfigurasi, senantiasa tangguh, dan scaling secara berkelanjutan. Selain itu semua, tentu saja data-data tersebut mengandung informasi penting yang dapat digunakan perusahaan. Untuk mendapatkan informasi tersebut perlu dilakukan pengolahan data, hanya saja data yang diolah dalam hal ini sangat besar atau big data. Sebagai solusi muncul layanan Amazon Redshift.
Beberapa pengguna internet telah memiliki database sebelumnya. Jika ia hendak menggunakan layanan database dari Amazon maka perlu dilakukan migrasi dengan layanan AWS Database Migration Service. Migrasi database dilakukan menurut jenisnya ada dua yaitu homogen dan heterogen. Cukup mudah dan tidak membutuhkan waktu yang lama jika data antara database awal dan akhir berjenis homogen. Namun, untuk database yang bersifat heterogen maka diperlukan pengubahan data terlebih dulu menggunakan AWS Schema Conversion Tool.
Layanan database tambahan dari Amazon:
- Amazon DocumentDB
- Amazon Neptune
- Amazon Managed Blockchain
- Amazon Quantum Ledger Database
Akselerator database dari Amazon:
- Amazon ElastiCache
- Amazon DynamoDB Accelerator
Pada kasus tertentu misalnya nuxtjs yang tanpa SSR atau server side rendering dapat langsung di upload distribution folder-nya dan untuk memudahkan hosting bisa menggunakan AWS Amplify Hosting. Untuk mencegah terjadinya lonjakan user maka perlu ditambahkan layanan Amazon CloudFront.
Dalam mengelola database ada 4 peran, yaitu application developer, end user, data analyst, dan database administrator. Application developer berperan melakukan konsolidasi dan manipulasi data dengan sebuah database sehingga terbuat sebuah dashboard dan laporan untuk user. End user melakukan input informasi yang terkadang inputan ini memiliki variasi sehingga data yang dihasilkan tidak bersih, nah, di sanalah peran dari seorang data analyst untuk mengoleksi, membersihkan, dan menginterpretasikan data. Sedangkan database administrator berperan untuk melakukan desain, implementasi, administrasi, dan memantau data yang ada di dalam sistem database. Keempat peran tersebutlah yang melakukan transaksi dalam database.
Secara default transaksi di dalam database dilakukan dengan csv. Seperti namanya csv menggunakan koma sebagai pemisah, selain koma juga digunakan \n untuk membuat baris baru. Database yang baik tidak boleh mengandung null dan datanya sesuai tujuan. Maksud sesuai tujuan adalah kolom nama, ya seharusnya berisi nama dan bukan alamat. Perhatikan query penting yang ada di database khususnya SQL:
- Required clauses
- SELECT : untuk memilih kolom dalam tabel
- * : disebut sebagai wildcard yang menunjuk semua kolom dalam tabel
- FROM : dari tabel apa
- Optional clauses
- WHERE : kondisional dalam kondisi tidak di group
- GROUP BY : membuat grup tertentu
- HAVING : kondisional jika digunakan query GROUP BY
- ORDER BY : disusun berdasarkan kolom dengan ascending atau descending
Perhatikan standar proses awal dalam melakukan analisis dengan SQL:
- Buka command provider atau linux dan gunakan command:
- sudo su
- mysql -u root --password='(ketik password)'
- Tampilkan database yang tersedia
- Gunakan salah satu database yang diperlukan
- USE (nama database, ingat case sensitive);
- Tampilkan tabel yang tersedia dalam database
- Tampilkan field dan type yang ada di dalam tabel
- DESC (nama database).(nama tabel);
- Lakukan eksplorasi menggunakan required clauses dan/atau optional clauses, perhatikan contohnya:
- Menampilkan field continent dan surfacearea dari tabel country dengan nama Ireland
- SELECT continent, surfacearea FROM country WHERE name = 'Ireland';
- Menampilkan field name, life, dan life ditambah 5 dari tabel country dengan gnp lebih besar dari 1300000
- SELECT name, life, life+5 FROM country WHERE gnp > 1300000;
- Menampilkan field name dan population dibagi surfacearea dari tabel country dengan hasil population dibagi surfacearea lebih besar dari 3000
- SELECT name, population/surfacearea FROM country WHERE population/surfacearea > 3000;
- Menampilkan filed name dan district dari tabel city dengan countrycode IND dan district Delhi
- SELECT name, district FROM city WHERE countrycode = 'IND' AND district='Delhi';
- Menampilkan field name dan district dari tabel city dengan field district mengandung Delhi, Punjab, atau Kerala
- SELECT name, district FROM city WHERE district IN ('Delhi','Punjab','Kerala');
- Menampilkan field name dan district dari tabel city dengan field district yang mengandung huruf depan west
- SELECT name, district FROM city WHERE district LIKE 'west%';
- Menampilkan field name dan district dari tabel city dengan field district yang mengandung huruf belakang west
- SELECT name, district FROM city WHERE district LIKE '%west';
- Menampilkan field countrycode dan name dari tabel city dengan field countrycode terdiri atas 3 huruf dan huruf tengahnya B
- SELECT countrycode, name FROM city WHERE countrycode LIKE '_B_';
- Menampilkan field countrycode dan name dari tabel city dengan nilai populasi antara 500000 dan 505000
- SELECT countrycode, name FROM city WHERE population BETWEEN 500000 AND 505000;
- Menampilkan field name, district dan population dari tabel city dengan field countrycode berisi CAN dan field district tidak berisi Ontario atau Alberta
- SELECT name, district, population FROM city WHERE countrycode = 'CAN' AND district NOT IN ('Ontario', 'Alberta');
- Menampilkan field name, district dan population dari tabel city dengan countrycode PAK dan district Punjab atau Sindh dan nilai populasinya lebih besar dari 1500000
- SELECT name, district, population FROM city WHERE countrycode='PAK' AND (district='Punjab' OR district='Sindh') AND population > 1500000;
- Menampilkan field name, life dan life+5 yang dialiaskan dengan Life Expected berkondisi gnp lebih besar dari 1300000
- SELECT name, life, life+5 AS 'Life Expected' FROM country WHERE gnp > 1300000;
Sejauh ini sudah digunakan 11 jenis conditional search yang tentunya bisa dikombinasikan. Praktis conditional search hanya akan membuat tahu data yang ada sedangkan dalam analisis tentu diperlukan perhitungan, nah, untuk memudahkan perhitungan sudah disediakan function bawaan dari SQL seperti:
- Mengembalikan tanggal saat ini YYYY-MM-DD
- AVG () : mencari rata-rata
- COUNT () : menghitung jumlah item
- MAX () : mengembalikan nilai tertinggi
- MIN () : mengembalikan nilai terendah
- SUM () : mengembalikan jumlah seluruh nilai
Fungsi seperti AVG(*) disebut sebagai fungsi agregat yang akan mengembalikan satu nilai berupa rata-rata dari sederet angka. Kata kunci DISTINCT dapat ditambahkan setelah query SELECT jika ingin fokus pada data yang bersifat unik atau tidak duplikat. Selain itu ada funsi TRIM yang digunakan untuk menghapus karakter, jika RTRIM maka karakter di akhir sedangkan LTRIM artinya yang dihapus karakter di awal. Perhatikan query lanjutan:
- Menampilkan field name, continent dan surfacearea dari tabel country dengan surfacearea lebih besar atau sama dengan 5000000 kemudian diurutkan secara ascending pada field continent dan jika ada kandungan yang sama pada continent maka diurutkan secara descending berdasarkan field surfacearea
- SELECT name, continent, surfacearea FROM country WHERE surfacearea >= 5000000 ORDER BY continent ASC, surfacearea DESC;
- Alternatif
- SELECT name, continent, surfacearea FROM country WHERE surfacearea >= 5000000 ORDER BY 2 ASC, 3 DESC;
- Menampilkan field continent dan alias countries dari tabel country dengan continent bernama South America dan populasi lebih besar dari 12000000 atau continent sama dengan Antarctica kemudian di group berdasarkan continent dengan kondisi jumlah nama lebih besar dari 5 dan diurutkan secara ascending dari continent kemudian countries
- SELECT continent, COUNT(name) AS 'countries' FROM country WHERE (continent = 'South America' AND population > 12000000) OR continent = 'Antarctica' GROUP BY continent HAVING COUNT (name) > 5 ORDER BY 1,2;
Cara menarik data dari database menggunakan konsep diagram venn, perhatikan:
- Menggabungkan tanpa duplikat field name, district, population dari tabel city dengan field name, code, continent, population dari tabel country
- SELECT name, district, population FROM city
- UNION
- SELECT name, code, continent, population FROM country;
- Menggabungkan dengan duplikat filed name, district, population dari tabel city dengan field name, code, continent, population dari tabel country
- SELECT name, district, population, FROM city
- UNION ALL
- SELECT name, code, continent, population FROM country;
- JOIN
- INNER JOIN : irisan dari dua tabel atau lebih yang ditarik datanya
- LEFT JOIN : hanya tabel pertama dan irisan dengan tabel kedua yang ditarik datanya
- RIGHT JOIN : hanya tabel kedua dan irisan dengan tabel pertama yang ditarik datanya
Amazon RDS adalah layanan yang disediakan AWS untuk database yang bersifat relasional. RDS hanya bisa diakses melalui instance, artinya untuk mengakses RDS perlu membuat EC2 instance. Jadi masuk ke EC2 instance terlebih dahulu baru kemudian masuk ke RDS. Dengan RDS dimungkinkan pembuatan replica yang tentunya juga memberikan dampak biaya. Biasanya RDS replikasi yang bekerja secara synchronous ditempatkan di area yang privat. Ringkasan pembuatan RDS:
- Membuat sebuah Security Group untuk RDS DB Instance
- VPC > Security Group
- Inbound rules > type: MySQL/Aurora (3360)
- Membuat sebuah DB Subnet Group
- Membuat sebuah Amazon RDS DB Instance
RDS memungkinkan untuk diakses melalui security group yang diijinkan pada bagian inbound rule-nya. Maksudnya dalam kasus seperti sebuah perusahaan telah memiliki EC2 instance dengan nama Web Server dengan Security Group bernama web-server-securitygroup. Lalu perusahaan ingin membuat DB instance dengan RDS. Nah, agar DB instance bisa diakses melalui EC2 instance maka dibuat security group baru dengan nama db-server-securitygroup yang memiliki rule inbound MySQL/Aurora dengan source custom dan pilih web-server-securitygroup.
Not Only SQL
Sebelumnya telah disinggung bahwa database ada 2, yaitu SQL dan not only SQL. Di Amazon untuk data yang bersifat relational ada layanan Amazon RDS sedangkan untuk data yang bersifat not only SQL ada layanan Amazon DynamoDB. Perhitungan di Amazon DynamoDB menggunakan capacity unit atau CU yang terbagi menjadi 2, yaitu read dan write. WCU atau write capacity unit merupakan satuan yang digunakan untuk pricing di Amazon, misalnya digunakan 5 WCU per jam maka per bulan akan menjadi 5 x 24 x 30 = 3600 WCU per bulan. Nilai 1 WCU adalah 1 KB, untuk melakukan 1 KB penulisan standar maka dibutuhkan 1 WCU, akan tetapi untuk transaksional 1 KB maka membutuhkan 2 WCU. Contoh lain untuk melakukan penulisan 5 KB maka dibutuhkan 5 WCU, dan untuk melakukan transaksi maka dibutuhkan 10 WCU. Berbeda dengan RCU atau read capacity unit yang nilai 1 RCU sama dengan 4 KB, sehingga untuk membaca item dengan ukuran 8 KB maka memerlukan 2 RCU.
ref:
https://aws.amazon.com/