ISSN (e): 2598-8069
Analisis dan Perancangan Domain Specific Language untuk Data Generator pada Relational Database
VANIA NATALI 1 , PASCAL ALFADIAN 2
1 Universitas Katolik Parahyangan, Bandung, Indonesia 2 Universitas Katolik Parahyangan, Bandung, Indonesia Email: vania.natali@unpar.ac.id

## ABSTRAK
Data  dummy  seringkali  diperlukan  dalam  proses  belajar  basis  data,  pengujian perangkat  lunak,  pengujian  performansi  basis  data,  dan  lain-lain.  Proses pembuatan  data  dummy  seringkali  memerlukan  waktu  yang  tidak  sedikit. Penelitian ini bertujuan untuk merancang Domain Specific Language (DSL) yang dapat digunakan dalam kakas generator data. DSL yang dikembangkan didasarkan pada Data Definition Language (DDL) dari basis data relasional dengan spesifikasi pada sintaks create table. Kontribusi penelitian ini adalah DSL dan grammar yang dapat digunakan untuk melakukan proses parsing DDL yang akan menjadi bagian dari kakas generator data.
Kata kunci : data dummy, domain specific language, generator data.

## ABSTRACT
Dummy  data  is  often  required  in  database  learning  process,  software  testing, database performance testing, etc. The process of making dummy data often takes a long time. This research aims to design Domain Specific Language (DSL) that can be used in a data generator software. DSL has been developed based on Data Definition Language (DDL) of relational database with specification in create table DDL  command.  The  contribution  of  the  research  is  a  DSL  and  a  grammar  for parsing DDL that will be a part of data generator software.
Keywords : data generator, domain specific language, dummy data.

## Analisis dan Perancangan DSL untuk Data Generator pada Relational Database

## 1. PENDAHULUAN
Dalam  bidang  basis  data,  data dummy dapat  digunakan  sebagai  sarana  pembelajaran, pengujian  performansi  basis  data,  pengujian  perangkat  lunak,  dan  lain-lain  sebagainya. Jumlah data dummy yang diperlukan pada umumnya cukup besar. Saat ini, telah ada beberapa aplikasi  yang  dapat  digunakan  sebagai  data  generator.  Kemampuan  yang  difasilitasi  oleh masing-masing  data  generator  tentunya  berbeda.  Sebagian  besar  data  generator freeware tidak  memfasilitasi  pembuatan  data dummy yang  memperhatikan constraint basis  data, misalnya foreign key .
Pada penelitian ini, dilakukan analisis dan perancangan Domain Specific Language (DSL) dan grammar yang  dapat  digunakan  dalam  kakas  data  generator.  DSL  adalah  sebuah  bahasa pemrograman komputer yang diekspresikan secara terbatas dan fokus pada domain tertentu (Fowler & Parsons, 2010). DSL yang dibuat akan didasarkan pada input berupa script Data Definition Language (DDL). Dengan kebebasan mendefinisikan sebuah bahasa pemrograman baru, diharapkan dengan DSL tersebut, dapat dibuat sebuah perangkat lunak data generator yang  memperhatikan constraint basis  data  di  kemudian  hari.  Dalam  basis  data  relasional, constraint basis data penting untuk diperhatikan karena jika diabaikan, data yang dihasilkan akan  tidak  valid  dan  tidak  dapat  memenuhi  syarat  sebagai  data  untuk  pembelajaran  atau pengujian.
Pada bagian berikut ini akan dibahas mengenai beberapa penelitian terkait.
Dalam  penelitian  (Feuto,  Cardey,  &  Gree,  2013),  (Marinos  &  Krause,  2009),  dan (Moschoyiannis,  Marinos,  &  Krause,  2010),  peneliti  memanfaatkan  DSL  untuk  menyatakan aturan bisnis yang dituliskan dengan spesifikasi Semantic of Business Vocabulary and Business Rules (SBVR). Penulis menentukan beberapa kategori aturan bisnis, kemudian menentukan DSL  untuk  aturan-aturan  bisnis  tersebut.  DSL  tersebut  digunakan  dalam  pembangunan prototype perangkat lunak untuk menuliskan aturan bisnis dalam SBVR. DSL yang digunakan dalam penelitian (Feuto, Cardey, & Gree, 2013) tersebut tertera pada Gambar 1.

## Gambar 1. DSL untuk Aturan Bisnis (Feuto, Cardey, & Gree, 2013)
Dalam (Natali & Liem, 2015), peneliti mengembangkan DSL untuk aturan bisnis berbahasa Indonesia. DSL tersebut digunakan untuk membangkitkan query SQL secara otomatis. Query tersebut digunakan untuk memeriksa ketaatan data terhadap aturan bisnis.
Salah satu contoh pola kalimat yang digunakan dalam DSL pada (Natali & Liem, 2015) tertera pada Gambar 2.

## Gambar 2. Contoh DSL untuk Aturan Bisnis dalam Bahasa Indonesia (Natali & Liem, 2015)
Agar  kalimat  yang  telah  ditulis  dalam  pola  Gambar  2  dapat  dikenali  oleh  komputer,  maka diperlukan grammar atau pola bahasa. Cuplikan grammar yang digunakan pada (Natali & Liem, 2015) diberikan pada Gambar 3
Gambar 3. Grammar untuk Aturan Bisnis dalam Bahasa Indonesia (Natali & Liem, 2015)
Salah satu template query SQL yang digunakan dapat tertera pada Gambar 4.
Gambar 4. Template Query SQL (Natali & Liem, 2015)
Contoh query yang  dihasilkan  pada  penelitian  (Natali  &  Liem,  2015)  dapat  dilihat  pada Gambar 5.
Gambar 5. Contoh Query SQL untuk Pemeriksaan Data (Natali & Liem, 2015)
Jika [pernyataan 1] dan [pernyataan 2] dan …
[pernyataan m] maka [pernyataan n]
Analisis dan Perancangan DSL untuk Data Generator pada Relational Database

## 2. METODOLOGI

## 2.1. Domain Specific Language
Definisi dari Domain Specific Language (DSL) adalah sebuah bahasa pemrograman komputer yang diekspresikan dengan cara tertentu/terbatas dan berfokus pada domain tertentu (Fowler &  Parsons,  2010).  DSL  dapat  digunakan  dalam  domain  tertentu,  dimana  format  ekspresi bahasa dalam domain tersebut dapat diformulasikan dengan struktur tertentu. Implementasi DSL perlu melalui beberapa tahap, yaitu sebagaimana tertera pada Gambar 6.

## Gambar 6. Arsitektur Pemrosesan DSL (Fowler & Parsons, 2010)
Proses pertama yang perlu dilakukan adalah perancangan DSL script. Proses perancangan DSL script ini memerlukan penangkapan pola dari domain terkait. Pola tersebut dapat ditangkap jika ekspresi pada domain tersebut terbatas pada formula tertentu. Proses selanjutnya dapat dilakukan dengan bantuan aplikasi yang disediakan untuk memproses DSL, misalnya Another Tool for Language Recognition (ANTLR).

## 2.2. ANTLR
ANTLR adalah generator yang bermanfaat untuk membaca, memproses, dan mengeksekusi, atau  menerjemahkan  teks  yang  terstruktur  ( structured  text ).  Bahasa  ( language )  yang dimaksud adalah sekumpulan kalimat yang valid. Kalimat terbentuk dari frasa-frasa. Sebuah frasa tersusun dari sub-frasa dan simbol-simbol vocabulary . ANTLR bertindak sebagai parser atau syntax analyzer , yaitu program yang berguna untuk mengenali bahasa.
Pada  bagian  ini,  akan  diberikan  sekilas  ulasan  mengenai  cara  kerja  ANTLR.  Jika  diberikan grammar sebagai berikut:
assign : ID ‘=’ expr ’;’ ; dan input kalimat sp = 100 maka akan dihasilkan parse tree seperti yang diberikan pada Gambar 7.
Gambar 7. Proses Pengenalan Bahasa (Parr, 2012)

## 2.3. Database Language
Secara umum, database language dapat dikategorikan menjadi dua, yaitu Data Manipulation Language (DML) dan Data Definition Language (DDL). DML memungkinkan pengguna untuk
mengakses  atau  memanipulasi  data.  DDL  digunakan  untuk  menspesifikasikan  skema  basis data.
Salah satu bagian dari DDL adalah create table, yang dapat digunakan untuk membuat tabel pada basis data. Skema dasar create table dapat dilihat pada Gambar 8.
Gambar 8. Skema Dasar DDL Create Table (Silberschatz, Korth, & Sudarshan, 2011)
Dalam DDL, dapat juga dituliskan database constraint , yang pada Gambar 8 dituliskan sebagai integrity-constraint .  Beberapa constraint pada  basis  data  adalah not  null , foreign  key ,  dan primary key .
Skema dasar DDL create table yang tertera pada Gambar 8, dideskripsikan dengan cara yang berbeda-beda pada masing-masing Database Management System (BDMS). Berikut ini adalah contoh DDL create table pada dua buah DBMS.
Gambar 9. Contoh DDL Create Table pada Oracle DBMS (Center, 2018)
Gambar 9 adalah contoh DDL create table pada Oracle DBMS. Sedangkan contoh DDL create table pada MySQL DBMS diberikan pada Gambar 10.
Gambar 10 Contoh DDL Create Table pada MySQL DBMS (MySQLTutorial, 2018)
Analisis dan Perancangan DSL untuk Data Generator pada Relational Database
Metodologi yang digunakan pada perancangan DSL ini didasarkan pada proses yang tertera ada Gambar 6.

## 3. HASIL DAN PEMBAHASAN
Sebelum merancang DSL untuk data generator, dipelajari juga kakas data generator sejenis. Pembahasan kakas sejenis diberikan pada bagian 3.1 dan 3.2.

## 3.1. Kakas Data Generator
Saat ini telah terdapat beberapa kakas data generator, diantaranya adalah:
1. Mockaroo Realistic Data Generator.
Mockaroo menyediakan beberapa level data generator berdasarkan harga yang berbeda- beda. Data yang dapat di- generate oleh pengguna yang tidak berbayar adalah 1000 baris data.

## Gambar 11. Tampilan Data Generator Mockaroo (LLC, 2018)
Gambar 11 adalah tampilan dari Mockaroo. User dapat menentukan nama-nama field dan tipe  data  yang  diperlukannya  melalui user  interface tersebut.  Mockaroo  menyediakan banyak jenis data yang dapat membantu user untuk mendapatkan data yang sesuai dengan yang diharapkannya.

## 2. Generatedata.com
Generatedata,com  adalah  kakas  yang  sejenis  dengan  Mockaroo,  menyediakan  fasilitas untuk membangkitkan data dummy untuk satu buah tabel. Data tersebut dapat diunduh oleh pengguna dalam berbagai jenis file, diantaranya CSV, Excel, HTML, dan SQL. Tampilan generatedata.com dapat dilihat pada Gambar 12.
Gambar 12. Tampilan generatedata.com (Generatedata.com versi 3.2.8,

## 2018)
3. Data Generator from DDL-0.06
Data  Generator  from  DDL  (Furuyama,  2018)  ini  men- support tiga  jenis constraint basis data, yaitu primary key , unique key , dan foreign key . Jika dibandingkan dengan Mockaroo dan datagenerator.com, tipe data yang di- support oleh kakas ini lebih terbatas jenisnya. Namun pada kakas ini, pengguna tidak perlu mendefinisikan satu per satu field pada tabel yang ingin dibuatkan data dummy-nya. Kakas ini tidak menyediakan user interface khusus, melainkan user dapat menggunakan kakas ini dengan command line . Keterbatasannya saat ini adalah belum men- support composite constraints . Kakas ini terakhir dikembangkan pada tahuan 2014.

## 3.2. Analisis Kakas Sejenis
Berdasarkan beberapa kakas data generator yang tersedia, dapat disimpulkan beberapa hal yang perlu diperhatikan dalam pembuatan data generator, yaitu:
1. Kakas  generator  data  memberikan  pilihan  untuk  data  yang  umum  diperlukan,  misalnya nama depan, nama belakang, email, dan lain-lain.
2. Kakas  generator  data  memberikan  beberapa  pilihan  tipe  data,  misalnya  number,  text, tanggal, dan lain-lain.
3. Terdapat  kakas  generator  data  yang  memberi  peluang  kepada  user  untuk  menentukan persentase banyaknya data yang tidak mempunyai nilai ( null ).
Berdasarkan  hasil  analisis,  berikut  ini  adalah  hal-hal  yang  perlu  diperhatikan  dalam pengembangan kakas data generator, namun tidak tampak dalam data generator yang hanya digunakan untuk menghasilkan populasi data untuk satu tabel:
1. Penentuan field yang  menjadi primary key dalam  sebuah  tabel,  hal  ini  diperlukan  agar memastikan bahwa nilai untuk field ini tidak pernah null dan selalu bersifat unik.
2. Relasi antar tabel yang dibatasi oleh foreign key juga perlu diperhatikan. Constraint foreign key menjadi penting karena berpengaruh pada integritas data. Jika tabel A berelasi dengan tabel B dengan foreign key , maka data untuk field - field yang terkait pada dua buah tabel tersebut tidak bisa saling lepas.
3. Dapat diperhatikan juga constraint-constraint lain yang terkait dengan basis data, misalnya not null constraint , nilai minimum atau maksimum untuk suatu tabel, atau nilai-nilai spesifik apa saja yang boleh digunakan dalam suatu field .

## 3.3. Pola DDL Create Table
Masing-masing  DBMS  memiliki  sintaks  tersendiri  untuk  DDL create  table walaupun  tetap memiliki pola yang sama dengan pola yang tertera pada Gambar 8. Berdasarkan Gambar 8 dan implementasinya dalam DBMS MySQL, Oracle, dan SQLServer, pola DDL untuk sebuah tabel basis data diberikan pada Gambar 13 berikut ini.
Gambar 13. Pola DSL untuk sebuah tabel basis data
Pola  umum  dari  penulisan column  constraint pada  tabel  basis  data  dapat  dilihat  pada Gambar 14.
Gambar 14. Pola DSL untuk column constraint
Sedangkan  pola  umum  penulisan table constraint pada  tabel  basis  data  dapat  dilihat  pada Gambar 15.
Gambar 15. Pola DSL untuk table constraint
Berdasarkan DSL yang telah disusun, dikembangkanlah grammar yang akan digunakan untuk mengartikan  DDL  yang  menjadi  input  dari  kakas  generator  data.  Sebagian  dari grammar tersebut dapat dilihat pada Gambar 16. Grammar tersebut dikembangkan dengan ANTLR 4.7.1 dan  Eclipse  2018-09  (For  Java  Developers)  IDE. Grammar tersebut  akan  memerlukan penyesuaian  untuk  masing-masing  DBMS  jika  DBMS  tersebut  menggunakan  sintaks  yang berbeda.
Gambar 16. Sebagian dari grammar data generator
Beberapa hal yang perlu dikembangkan dalam perangkat lunak data generator adalah sebagai berikut:
1. Struktur data yang dapat digunakan untuk mencatat relasi antar tabel basis data. Relasi tersebut didapatkan dari DDL yang menjadi input kakas.
2. Penambahan tipe data yang saat ini belum ditangani, misalnya binary object .
3. Diperlukan data yang dapat digunakan sebagai data acak untuk data dummy , misalnya data nama orang, nama negara, nama kota, dan lain-lain.

## 4. KESIMPULAN DAN SARAN
Dalam penelitian ini, DSL yang didasarkan pada DDL basis data telah dianalisis dan dirancang. Grammar yang  dapat  digunakan  untuk  melakukan parsing DDL  yang  menjadi  input  untuk kakas generator data  pun telah dikembangkan. Karena adanya perbedaan sintaks dan tipe data  yang  terdapat  pada  masing-masing  DBMS,  menyebabkan  perlunya  modifikasi  pada grammar basis data jika grammar tersebut akan dikembangkan untuk DBMS lain.
Pada penelitian berikutnya, dapat dikembangkan kakas generator data yang memanfaatkan grammar yang  telah  tersedia. Grammar yang  telah  dikembangkan  hanya  dapat  digunakan untuk  relasi  antar  tabel  yang  dituliskan  dengan  berurutan,  yaitu  penulisan parent  table sebelum child  table .  Dalam  penelitian  berikutnya  dapat  dikembangkan  metode  untuk menangkap relasi antar tabel walau penulisan pada DDL-nya tidak berurutan.

## DAFTAR RUJUKAN
Fowler, M., & Parsons, R. (2010). Domain Specific Languages. Addison-Wesley Professional. Parr, T. (2012). The Definitive ANTLR 4 Reference. The Pragmatic Programmers, LLC.
Silberschatz,  A.,  Korth,  H.,  &  Sudarshan,  S.  (2011).  Database  System  Concepts  (Vol.  6th edition). McGraw-Hill.
Natali, V., & Liem, I. (2015). Automated data consistency checking using SBVR: Case study: Academic data in a University. 2015 International Conference on Data and Software Engineering (ICoDSE). Yogyakarta, Indonesia: IEEE.
Feuto,  P.,  Cardey,  S.,  &  Gree,  P.  (2013).  Domain  Specific  Language  Based  on  the  SBVR Standard  for  Expressing  Business  Rules.  Enterprise  Distributed  Object  Computing Conference Workshops (EDOCW). Vancouver, BC, Canada: IEEE.
Marinos, A., & Krause,  P. (2009). An SBVR Framework for RESTful Web Applications. Rule Interchange and Applications, RuleML (hal. 144-158). Springer Berlin Heidelberg.
Moschoyiannis, S., Marinos, A., & Krause, P. (2010). Generating SQL Queries from SBVR Rules.
Semantic Web Rules, RuleML (hal. 128-143). Springer, Berlin, Heidelberg.
Center,  O.  (2018,  November  3).  Database  Administrator’s  Guide.  Diambil  kembali  dari https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables003.htm#ADMIN110 04
Furuyama,  Y.  (2018,  November  1).  Data-Generator-FromDDL-0.06.  Diambil  kembali  dari https://metacpan.org/pod/datagen_from_ddl
Generatedata.com  versi  3.2.8.  (2018,  November  1).  Diambil  kembali  dari http://www.generatedata.com
LLC,  M.  (2018,  November  11).  Mockaroo  Realistic  Data  Generator.  Diambil  kembali  dari https://www.mockaroo.com/
MySQLTutorial.  (2018,  November  3).  MySQL  Primary  Key.  Diambil  kembali  dari http://www.mysqltutorial.org/mysql-primary-key/