Email             :
RPubs            : https://rpubs.com/ardifo/
Jurusan          : Statistika
Address         : ARA Center, Matana University Tower
                         Jl. CBD Barat Kav, RT.1, Curug Sangereng, Kelapa Dua, Tangerang, Banten 15810.


1 What is the difference between MariaDB, RMySQL, and RSQLite! Explain your answer accordingly!

SQLite, mariadb serta MySQL, adalah RDBMS open source.

  • SQLite adalah proyek open-source yang tersedia di domain publik
  • MySQL adalah proyek open-source yang dimiliki oleh Oracle
  • MariaDB adalah proyek open-source yang merupakan pengganti drop-in yang kompatibel. MariaDB adalah pengganti dari MySQL.
  • MariaDB memiliki layanan dukungannya sendiri.
  • SQLite mendukung tipe data ini: Blob, Integer, Null, Text, Real.
  • MySQL mendukung tipe data ini: Tinyint, Smallint, Mediumint, Int, Bigint, Double, Float, Real, Decimal, Double precision, Numeric, Timestamp, Date, Datetime, Char, Varchar, Year, Tinytext, Tinyblob, Blob, Text, MediumBlob, MediumText, Enum, Set, Longblob, Longtext.

Library SQLite berukuran sekitar 250 KB, sedangkan server MySQL sekitar 600 MB

MariaDB merupakan aplikasi yang dapat digunakan untuk memproses data SQL dalam waktu yang bersamaan, MariaDB berfungsi untuk menyediakan data yang bermacam-macam yang tentunya akan mempermudah pengguna ketika ingin menggunakan aplikasi database yang bukan hanya mampu menangani skala besar, melainkan juga menyediakan banyak pilihan data.

SQLite tidak memiliki fungsionalitas user management tertentu. Oleh karena itu, SQLite tidak cocok untuk akses multiple user. MySQL memiliki sistem manajemen user yang dibangun dengan baik sehingga dapat menangani banyak user dan memberikan berbagai tingkat perizinan.

SQLite cocok untuk database yang lebih kecil. Seiring pertumbuhan database, kebutuhan memori juga semakin besar saat menggunakan SQLite. Optimalisasi kinerja lebih sulit ketika menggunakan SQLite. Hal tersebut terjadi karena SQLite memiliki beberapa batasan penulisan.

SQLite tidak memiliki mekanisme otentikasi bawaan. Dengan begitu, file database SQLite dapat diakses oleh siapa saja. Namun, MySQL hadir dengan banyak fitur keamanan bawaan. Ini termasuk otentikasi dengan username, password, dan juga SSH.

SQLite tidak memerlukan konfigurasi rumit. Dapat dikatakan bahwa SQLite mudah untuk disetup. Sedangkan MySQL membutuhkan lebih banyak konfigurasi dibandingkan dengan SQLite. MySQL juga memiliki lebih banyak panduan setup.

Kelebihan dari SQLite:

  • Berbasis file, mudah diatur dan digunakan
  • Cocok untuk pengembangan dan pengujian dasar
  • Sangat portable
  • Menggunakan sintaks SQL standar dengan perubahan kecil
  • Mudah digunakan

Kekurangan dari SQLite:

  • Minim user management dan fitur keamanan
  • Tidak mudah diukur
  • Tidak cocok untuk database besar
  • Tidak dapat dikustomisasi

Kelebihan dari MySQL:

  • Mudah digunakan
  • Menyediakan banyak fitur terkait database
  • Fitur keamanan yang baik
  • Mudah diukur dan cocok untuk database besar
  • Memberikan kecepatan dan kinerja yang baik
  • Memberikan manajemen pengguna yang baik dan beberapa kontrol akses

Kekurangan dari MySQL:

  • Membutuhkan keahlian teknis untuk pengaturan
  • Sintaksnya sedikit berbeda dibandingkan dengan SQL konvensional

Kelebihan dari MariaDB :

  • Masuk ke dalam kategori aplikasi portabel
  • Merupakan aplikasi yang bersifat open source
  • Multi-user
  • Aplikasi data yang cepat
  • Memiliki banyak pilihan data
  • Mampu digunakan dalam skala besar
  • Dilengkapi dengan 20 bahasa

Kekurangan MariaDB

  • MariaDB hanya dapat digunakan oleh perusahaan besar dan tidak untuk perusahaan kecil
  • MariaDB memiliki keterbatasan di dalam menyimpan data pada saat data yang disimpan tersebut sudah berada di ambang batas atau bahkan melebihi kapasitas yang mampu ditampung oleh server.

2 Follow my Rpubs to make sure you understand about connecting the database to R.

2.1 Getting Started

Untuk memulai, install terlebih dahulu beberapa packages di R Console

install.packages(c("DBI",
                   "odbc",
                   "RMariaDB", 
                   "RMySQL",
                   "RSQLite"
                   )
                 )

Lalu,

# install.packages("pacman")
pacman::p_load(DBI,                # DBI Package membantu R untuk terhubung ke DBMS
               odbc,               # menghubung ke ODBC Compatible Database
               RMariaDB,           # Database Interface dan 'MariaDB' Driver
               RMySQL,             # Database Interface dan 'RMySQL' Driver
               RSQLite             # Database Interface dan 'RSQLite' Driver
               )

2.2 Connecting R to SQL

Ada banyak cara untuk menghubung database dengan R. Ada 3 cara yang akan saya jelaskan disini bagaimana caranya agar database terhubung ke R.

MariaDB <- dbConnect(MariaDB(),
                     user='root',
                     password='',
                     dbname='mysql',
                     host='localhost')
dbListTables(MariaDB)                            # table list di database kita
##  [1] "columns_priv"              "column_stats"             
##  [3] "db"                        "event"                    
##  [5] "func"                      "general_log"              
##  [7] "global_priv"               "gtid_slave_pos"           
##  [9] "help_category"             "help_keyword"             
## [11] "help_relation"             "help_topic"               
## [13] "index_stats"               "innodb_index_stats"       
## [15] "innodb_table_stats"        "plugin"                   
## [17] "proc"                      "procs_priv"               
## [19] "proxies_priv"              "roles_mapping"            
## [21] "servers"                   "slow_log"                 
## [23] "tables_priv"               "table_stats"              
## [25] "time_zone"                 "time_zone_leap_second"    
## [27] "time_zone_name"            "time_zone_transition"     
## [29] "time_zone_transition_type" "transaction_registry"     
## [31] "user"
# dbExecute(MariaDB,"CREATE DATABASE new_MariaDB") # membuat baru database 
# dbExecute(MariaDB,"DROP DATABASE new_MariaDB")   # menghapus database 
MySQL <- dbConnect(MySQL(),
                   user='root',
                   password='',
                   dbname='mysql',
                   host='localhost',)
dbListTables(MySQL)                             # table list di database kita
##  [1] "column_stats"              "columns_priv"             
##  [3] "db"                        "event"                    
##  [5] "func"                      "general_log"              
##  [7] "global_priv"               "gtid_slave_pos"           
##  [9] "help_category"             "help_keyword"             
## [11] "help_relation"             "help_topic"               
## [13] "index_stats"               "innodb_index_stats"       
## [15] "innodb_table_stats"        "plugin"                   
## [17] "proc"                      "procs_priv"               
## [19] "proxies_priv"              "roles_mapping"            
## [21] "servers"                   "slow_log"                 
## [23] "table_stats"               "tables_priv"              
## [25] "time_zone"                 "time_zone_leap_second"    
## [27] "time_zone_name"            "time_zone_transition"     
## [29] "time_zone_transition_type" "transaction_registry"     
## [31] "user"
# dbExecute(MySQL,"CREATE DATABASE new_MySQl")    # membuat baru database
# dbExecute(MySQl,"DROP DATABASE new_MySQL")      # menghapus database
library(sqldf)
## Loading required package: gsubfn
## Loading required package: proto
## sqldf will default to using MySQL
# RSQLite <- dbConnect(RSQLite::SQLite(), "folder_db/mydb3.sqlite")
# dbListTables(RSQLite)          # table list di data base 

2.3 Import Data CSV

Customers    <-read.csv("C:/Users/LENOVO/Dropbox/PC/Documents/R/Database System/Customers.csv")
Categories   <-read.csv("C:/Users/LENOVO/Dropbox/PC/Documents/R/Database System/Categories.csv")
Employees    <-read.csv("C:/Users/LENOVO/Dropbox/PC/Documents/R/Database System/Employees.csv")
OrderDetails <-read.csv("C:/Users/LENOVO/Dropbox/PC/Documents/R/Database System/OrderDetails.csv")
Orders       <-read.csv("C:/Users/LENOVO/Dropbox/PC/Documents/R/Database System/Orders.csv")
Products     <-read.csv("C:/Users/LENOVO/Dropbox/PC/Documents/R/Database System/Products.csv")
Shippers     <-read.csv("C:/Users/LENOVO/Dropbox/PC/Documents/R/Database System/Shippers.csv")
Supliers     <-read.csv("C:/Users/LENOVO/Dropbox/PC/Documents/R/Database System/Suppliers.csv")

2.4 Import Data XLSX

library(readxl)
Customers    <-read_excel("C:/Users/LENOVO/Dropbox/PC/Documents/R/Database System/RawDatabase.xlsx", sheet=1)
Categories   <-read_excel("C:/Users/LENOVO/Dropbox/PC/Documents/R/Database System/RawDatabase.xlsx", sheet=2)
Employees    <-read_excel("C:/Users/LENOVO/Dropbox/PC/Documents/R/Database System/RawDatabase.xlsx", sheet=3)
OrderDetails <-read_excel("C:/Users/LENOVO/Dropbox/PC/Documents/R/Database System/RawDatabase.xlsx", sheet=4)
Orders       <-read_excel("C:/Users/LENOVO/Dropbox/PC/Documents/R/Database System/RawDatabase.xlsx", sheet=5)
Products     <-read_excel("C:/Users/LENOVO/Dropbox/PC/Documents/R/Database System/RawDatabase.xlsx", sheet=6)
Shippers     <-read_excel("C:/Users/LENOVO/Dropbox/PC/Documents/R/Database System/RawDatabase.xlsx", sheet=7)
Suppliers    <-read_excel("C:/Users/LENOVO/Dropbox/PC/Documents/R/Database System/RawDatabase.xlsx", sheet=8)

2.5 Write Dataframe to Database

new_con <- dbConnect(MariaDB(),
                   user='root',
                   password='',
                   dbname='new_mariadb',
                   host='localhost') 

 
dbWriteTable(new_con, "Customers", Customers, append=T)
dbWriteTable(new_con, "Categories", Categories, append=T)
dbWriteTable(new_con, "Employees", Employees, append=T)
dbWriteTable(new_con, "OrderDetails", OrderDetails, append=T)
dbWriteTable(new_con, "Orders", Orders, append=T)
dbWriteTable(new_con, "Products", Products, append=T)
dbWriteTable(new_con, "Shippers", Shippers, append=T)
dbWriteTable(new_con, "Suppliers", Suppliers, append=T)

2.6 Remove Table

dbRemoveTable(new_con, "Orders")

2.7 Mengubah Tipe Data di Database

Orders["OrdersDate"] <-as.Date(Orders$OrderDate, format = "%Y-%m-%d")
dbWriteTable(new_con, "Orders", Orders, append=T)

2.8 General Query

2.8.1 Select From

The SELECT statment is uswwed to select data from a database

library(DT)
df1<-dbGetQuery(new_con, 'SELECT City, Address, Country 
                          FROM Customers')
datatable(df1)

2.8.2 WHERE

Menyeleksi Customers dari Germany

df2<-dbGetQuery(new_con, "SELECT *
                          FROM Customers
                          WHERE Country='Germany'")
datatable(df2)

2.8.3 INSERT INTO

Menambah data baru pada Databse Customers

dbExecute(new_con,"INSERT INTO Customers(CustomerName,ContactName,Address,City,PostalCode,Country)
                   VALUES('Ardifo','Syaa','Jl. Pandekar Lopo','Katingan','17454','Indonesia')")
## [1] 1

2.8.4 DELETE FROM

Menghapus data dari customers

dbExecute(new_con,"DELETE FROM Customers
          WHERE CustomerName ='Ardifo' ")
## [1] 1

2.8.5 UPDATE

Mengubah isi data

dbExecute(new_con,"UPDATE Customers
                    SET ContactName = 'Alfed Schmidt', City= 'Frankfurt'
                    WHERE CustomerID = 1")
## [1] 1