PRAKTIKUM DBMS.

download PRAKTIKUM DBMS.

of 14

Transcript of PRAKTIKUM DBMS.

  • 7/24/2019 PRAKTIKUM DBMS.

    1/14

    LAPORAN PRAKTIKUM

    BASIS DATA

    DATABASE MANAGEMENT SYSTEM (DBMS)

    NAMA : NUR ASIYAH S

    NIM : 425 14 037

    KELAS : D4 TKJ 1B

    TEKNIK KOMPUTER DAN JARINGAN

    POLITEKNIK NEGERI UJUNG PANDANG

  • 7/24/2019 PRAKTIKUM DBMS.

    2/14

    PRAKTIKUM

    DATABASE MANAGEMENT SYSTEM (DBMS)

    1. T!"#

    Setelah menyelesaikan modul ini, anda diharapkan dapat :

    1. Mengetahui fungsi DBMS

    2. Mampu menjelaskan struktur/modul-modul DBMS

    . Mampu mem!andingkan !er!agai DBMS

    ". Mampu menentukan DBMS yang sesuai untuk !er!agai jenis implementasi.

    2. D"$"% T&'%

    DBMS merupakan perangkat lunak utama dalam pengelolaan dan pengolahan !asis data.

    DBMS-lah yang menetukan !agaimana !asis data dikelola dan diorganisasi se#ara fisik dalam

    media penyimpan perangkat komputer. $ika dimanfaatkan dalam jaringan komputer, maka

    DBMS pula !erperan dalam menerapkan mekanisme keamanan %security& dan mengontol

    penggunaan pada 'aktu yang sama.

    Se!uah Sistem (engelola Basis Data %Database Management System& ter!agi atas modul-

    modul yang masing-masing memiliki tanggung ja'a! dalam mem!entuk Struktur Sistem Basis

    Data se#ara keseluruhan. Be!erapa fungsi-fungsi dalam sistem pengelola !asis data mungkin

    telah disediakan oleh sistem operasi.

    )elengkapan fungsi/modul antara DBMS yang satu dengan yang lain !isa !er!eda, !aik

    dari sisi kualitas maupun kuantitasnya. DBMS sederhana, seperti dBase, (arado* atau MS.

    +##ess tidak mengakomodasi pemakaian !asis data oleh !anyak pemakai. etapi dengan DBMS

    sema#am ra#le, Sy!ase atau MS-S-Ser0er, hal terse!ut terakomodasi dengan !aik.

    Se!uah DBMS umumnya memiliki sejumlah modul fundamental yaitu :

    DM ompiler

    DM (re#ompiler

    DD nterpreter

    uery 30aluation 3ngine

    4ile Manager

    Buffer Manager

    5ntuk DBMS dengan fasilitas/fitur yang le!ih lengkap, tentu saja masih ada sejumlah

    modul lain, seperti modul untuk mengelola keamanan data %security&, menjaga integritas data,

    serta melakukan penggandaan data %backup&.

  • 7/24/2019 PRAKTIKUM DBMS.

    3/14

    Aplikasi A

    Aplikasi B

    DBMS

    D""*"$& M"#"+&, S-$&, (DBMS) "# A/"$ B"$$ D""

    (emanfaatan !asis data melalui DBMS hanya !ermanfaat se#ara langsung !agi para

    pemakai mahir %casualuser& ditandai dengan menerapkan sejumlah operasi pengolahan dan

    manipulasi !asis data %operasi !asis data&, namun demikian operasi !asis data terse!ut !er!eda di

    antara jenis pemakai. (emakai akhir %end user& tidak !ersentuhan langsung dengan o!jek !asisdata, tetapi le!ih !anyak !ersinggungan dengan akti0itas nyata yang memang terjadi di mana

    sistem !asis data itu diterapkan seperti pemasukan data transaksi penjualan, akuntansi,

    pen#etakan laporan harian/!ulanan, penutupan data transaksi !ulanan dll.

    (ada le0el implementasi, per!edaan terse!ut dijem!atani oleh adanya perangkat lunak

    aplikasi yang khusus untuk dapat digunakan oleh para pemakai akhir %end user&. +plikasi ini

    akan menyediakan sejumlah operasi %menu& yang sesuai dengan akti0itas nyata yang memang

    dilakukan oleh end user. Selanjutnya pilihan operasi user ini akan 6diterjemahkan7 oleh aplikasi

    terse!ut menjadi sejumlah operasi !asis data elementer yang memang dapat dikenali/dikerjakan

    oleh DBMS.

    DBMS yang !esar seperti ra#le, S-Ser0er, nformi*, BM-DB2 diran#ang sejak a'al

    !erdiri sendiri dan terpisah dari aplikasi !asis data. )arena !erdiri sendiri, !anyak sekali fasilitas

    %feature& yang ditangani oleh DBMS ini, seperti masalah pemeliharaan integritas data,

    mekanisme backupdata se#ara periodik dan recoverydata, pengendalain pemakaian data se#ara

    multiuser %concurrency control&, mekanisme pengamanan pemakaian %security mechanism& dan

    lain-lain.

    8am!ar 9.1 +plikasi Basis Data yang erpisah dari DBMS

    (erangkat lunak sema#am dBase, 4o*Base, MS-+##ess dapat saja kita

    golongkan se!agai DBMS jika ditinjau dari sisi fungsinya se#ara umum yaitu mengelola

    !asis data, 'alaupun memang fasilitas tam!ahan yang tersedia tidak selengkap yang ada

    pada DBMS !esar atau !ahkan tidak ada sama sekali. DBMS terse!ut juga !erfungsi

    se!agai toolpem!angun aplikasi !asis data selain !erfungsi se!agai pengelola !asis

    data. +plikasi !asis data yang di!uat akan menyatu dengan DBMS pada saatpemakaiannya. DBMS seperti ini hanya #o#ok untuk sistemstand alone

  • 7/24/2019 PRAKTIKUM DBMS.

    4/14

    8am!ar 9.2 +plikasi Basis Data yang menjadi Su!-rdinate DBMS

    3. D""% A" "# B""#

    1. (ersonal )omputer 1 5nit

    2. Soft'are DBMS %MS. +##ess, S Ser0er, MyS, ;isual 4o*pro&

    4. K&$&",""# K&%!"

    1. Se!elum melakukan langkah per#o!aan, pastikan ka!el po'er terhu!ung ke (o'er Supply.

    2. Matikan komputer setelah praktikum selesai.

    5. L"#+" K&%!"

    1. akukan studi literature dengan mengumpulkan dan mem!a#a referensi tentang salah satu DBMS

    di !a'ah ini

    a. MS. +##ess

    !. MS. S Ser0er

    #. My S

    d. ;isual 4o*pro

    J""*:

    )elompok kami memilih mem!ahas d!ms ora#le

    2. (resentasekan hasil studi literature +nda di depan kelas, kele!ihan, kekurangan serta kesesuaian

    implementasi DBMS terse!ut elia!ility yang !agus, yaitu kemampuan untuk melindungi data dari kerusakan

    jikaterjadi kegagalan fungsi pada sistem seperti disk failure.

    Sta!ility, yaitu kemampuan untuk tidak #rash karena !e!an yang tinggi.

    +0aila!ility,yaitu kemampuan dalam penanganan #rash atau failure agar ser0i#e

    tetap. Multiplatform, dapat digunakan pada !anyak sistem operasi seperti?indo's, 5ni*,

    inu* dan Solaris.

    Mendukung data yang !erukuran !esar. Berdasarkan dokumentasinya, ra#le dapat

    menampung data sampai @12 peta!yte%1 peta!yteA 12" tera!yte&. Se#urity yang #ukup handal.

    )esesuian implementasi:

    ra#le dapat menampung data hampir @12 pet !yte % 1 pet !yte A 1..

    giga!yte &.

    . akukan 3ksplorasi setiap DBMS terse!ut di atas dengan meng-akses modul-modul DBMS

    terse!ut. (erhatikan fitur/fasilitas Modul (engelolaan Data!ase, uery, 3*port-mport, Ba#kup-

    >e#o0ery, dan Se#urity, #atat apa yang diamati dan jelaskan3+3 > >3(+3 D>3>G dmpdir +S 7#:Eora#le*eEappEtmp7H

    8>+I >3+D,?>3 I D>3>G dmpdir hrH

    ". kita akan mengeksekusi penrintah untuk e*port. tapi se!elumnya kita harus !eralih

    dari SFl(lus ke direktory !in pada 'indo's #ommand line, dengan mengetik perintah

    di!a'ah ini pada SFl(lus

    =S

    @. masukkan perintahnya

    e*pdp SGS3M/pass'ord S=3M+SAhr D>3>GAdmpdir

    D5M(43As#hema.dmp 843Ae*ps#hema.log

    Maka akan keluar output report, misal seperti ini :

    3*port: >elease 1.2..1. - (rodu#tion on uesday, 1 De#em!er, 2@ 11:"J:1

    opyright %#& 2, 2@, ra#le. +ll rights reser0ed.

    onne#ted to: ra#le Data!ase 1g 3*press 3dition >elease 1.2..1. - (rodu#tion

    Starting CSGS3M.SGSK3L(>KS=3M+K1: SGS3M/NNNNNNNN

    S=3M+SAhr

    D>3>GAdmpdir D5M(43As#hema.dmp 843Ae*ps#hema.log

    3stimate in progress using B)S methodO

    (ro#essing o!je#t type S=3M+K3L(>/+B3/+B3KD++

    otal estimation using B)S method: ""J )B(ro#essing o!je#t type S=3M+K3L(>/5S3>

    (ro#essing o!je#t type S=3M+K3L(>/SGS3MK8>+I

    (ro#essing o!je#t type S=3M+K3L(>/>3K8>+I

    (ro#essing o!je#t type S=3M+K3L(>/D34+5K>3

    (ro#essing o!je#t type S=3M+K3L(>/+B3S(+3K5+

    (ro#essing o!je#t type S=3M+K3L(>/(>3KS=3M+/(>+KS=3M+

    (ro#essing o!je#t type S=3M+K3L(>/S353I3/S353I3

    (ro#essing o!je#t type S=3M+K3L(>/+B3/+B3

    (ro#essing o!je#t type S=3M+K3L(>/+B3/ID3L/ID3L

    (ro#essing o!je#t type S=3M+K3L(>/+B3/IS>+I/IS>+I

    (ro#essing o!je#t type

    S=3M+K3L(>/+B3/ID3L/S+SS/ID3LKS+SS

    (ro#essing o!je#t type S=3M+K3L(>/+B3/MM3I

    (ro#essing o!je#t type S=3M+K3L(>/(>3D5>3/(>3D5>3

    (ro#essing o!je#t type S=3M+K3L(>/(>3D5>3/+3>K(>3D5>3

    (ro#essing o!je#t type S=3M+K3L(>/;3?/;3?

  • 7/24/2019 PRAKTIKUM DBMS.

    9/14

    (ro#essing o!je#t type

    S=3M+K3L(>/+B3/IS>+I/>34KIS>+I

    (ro#essing o!je#t type S=3M+K3L(>/+B3/>883>

    (ro#essing o!je#t type

    S=3M+K3L(>/+B3/S+SS/+B3KS+SS

    . . e*ported C=>.5I>3S P.Q )B 2@ ro's

    . . e*ported C=>.D3(+>M3IS P.P" )B 29 ro's

    . . e*ported C=>.3M(G33S [email protected] )B 19 ro's

    . . e*ported C=>.$BS P.PQ )B 1Q ro's

    . . e*ported C=>.$BK=S>G P.@J@ )B 1 ro's

    . . e*ported C=>.+IS 9.91 )B 2 ro's

    . . e*ported C=>.>38IS @.2QP )B " ro's

    Master ta!le CSGS3M.SGSK3L(>KS=3M+K1 su##essfully

    loaded/unloadedNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

    NNNNNNNNN

    Dump file set for SGS3M.SGSK3L(>KS=3M+K1 is:

    :E>+3L3E+((EM(ES=3M+.DM(

    $o! CSGS3M.SGSK3L(>KS=3M+K1 su##essfully #ompleted at 11:"J:"P

    Maka dumpfile dan lognya sudah !erhasil di!uat di dmpdir ..

    P. alu kita import kedalam data!ase s#hema !aru !ernama hrde0 %otomatis akan di

    #reate oleh ora#le apa!ila data!ase s#hema ts! !elum ada&. Misal kita akan

    menge*port semua data, ke#uali #onstraints, refK#onstraints, dan inde*es.

    impdp SGS3M/pass'ord S=3M+SAhr D>3>GAdmpdirD5M(43As#hema.dmp >3M+(KS=3M+Ahr:hrde0 3L5D3A#onstraint,

    refK#onstraint, inde* +B3K3LSSK+IArepla#e 843Aimps#hema.log

    maka akan menghasilkan output s!! %juga tertulis pada imps#hema.log file& :

    mport: >elease 1.2..1. - (rodu#tion on uesday,

    1 De#em!er, 2@ 11:"Q:2Q

    opyright %#& 2, 2@, ra#le. +ll rights reser0ed.

    onne#ted to: ra#le Data!ase 1g 3*press 3dition >elease 1.2..1. - (rodu#tion

    Master ta!le CSGS3M.SGSKM(>KS=3M+K1 su##essfully

    loaded/unloaded

    Starting CSGS3M.SGSKM(>KS=3M+K1: SGS3M/NNNNNNNN

    S=3M+SAhr

    D>3>GAdmpdir D5M(43As#hema.dmp >3M+(KS=3M+Ahr:hrde0

    3L5D3A#onstraint, refK#onstraint, inde* +B3K3LSSK+IArepla#e

    843Aimps#hema.log

    (ro#essing o!je#t type S=3M+K3L(>/5S3>

    (ro#essing o!je#t type S=3M+K3L(>/SGS3MK8>+I

  • 7/24/2019 PRAKTIKUM DBMS.

    10/14

    (ro#essing o!je#t type S=3M+K3L(>/>3K8>+I

    (ro#essing o!je#t type S=3M+K3L(>/D34+5K>3

    (ro#essing o!je#t type S=3M+K3L(>/+B3S(+3K5+

    (ro#essing o!je#t type S=3M+K3L(>/(>3KS=3M+/(>+KS=3M+

    (ro#essing o!je#t type S=3M+K3L(>/S353I3/S353I3

    (ro#essing o!je#t type S=3M+K3L(>/+B3/+B3

    (ro#essing o!je#t type S=3M+K3L(>/+B3/+B3KD++

    . . imported C=>D3;.5I>3S P.Q )B 2@ ro's

    . . imported C=>D3;.D3(+>M3IS P.P" )B 29 ro's

    . . imported C=>D3;.3M(G33S [email protected] )B 19 ro's

    . . imported C=>D3;.$BS P.PQ )B 1Q ro's

    . . imported C=>D3;.$BK=S>G P.@J@ )B 1 ro's

    . . imported C=>D3;.+IS 9.91 )B 2 ro's

    . . imported C=>D3;.>38IS @.2QP )B " ro's

    (ro#essing o!je#t type S=3M+K3L(>/+B3/MM3I(ro#essing o!je#t type S=3M+K3L(>/(>3D5>3/(>3D5>3

    (ro#essing o!je#t type S=3M+K3L(>/(>3D5>3/+3>K(>3D5>3

    (ro#essing o!je#t type S=3M+K3L(>/;3?/;3?

    (ro#essing o!je#t type S=3M+K3L(>/+B3/>883>

    (ro#essing o!je#t type

    S=3M+K3L(>/+B3/S+SS/+B3KS+SS

    $o! CSGS3M.SGSKM(>KS=3M+K1 su##essfully #ompleted at 11:"Q:"Q

    Maka sekarang hrde0 sudah diisi dengan data dari data!ase s#hema hr

    9. $angan lupa, se!elum menyelesaikan, kita !eri pass'ord dulu utk login hrde0

    supaya le!ih aman+3> 5S3> hrde0 D3I43D BG hrde0H

    Melakukan !a#kup seluruh data!ase

    )ita dapat melakukan !a#kup seluruh isi data!ase kita dengan melakukan !a#kup

    keseluruhan % !a#kup seluruh datafile &. =asil dari !a#kup seluruh data!ase kita akan

    disimpan se!agai salinan gam!ar atau se!agai tumpukan !a#kup, tetapi di #ontoh

    yang lain isi dari seluruh data!ase akan direpresentasikan sama dengan #ontrol file,

    ar#hie0ed redo log dan ser0er parameter file. Data!ase akan dapat di >e#o0ery

    dengan file-file ini. Berikut langkah-langkah untuk !a#kup seluruh data!ase :

    1. (ada halaman =ome pilih menu Maintenan#e.

    2. +rahkan ke menu Ba#kup/>e#o0ery, dan pilih S#hedule Ba#kup.

    . =alaman S#hedule Ba#kup mun#ul. +rahkan #ursor ke !agian ustomiRed

    Ba#kup. (ilih ?hole Data!ase dan masukkan nama dan pass'ord di host #redential.

    )emudian klik s#hedule #ustomiRed !a#kup.

  • 7/24/2019 PRAKTIKUM DBMS.

    11/14

    ". =alaman S#hedule ustomiRed Ba#kup : ptions mun#ul. (ilih 4ull Ba#kup di

    !agian Ba#kup ype. )emudian pilih nline Ba#kup di !agian Ba#kup Mode. (ilih

    Ba#k up all ar#hie0edlogs on disk di !agian +d0an#ed. )lik Ie*t.

    @. =alaman S#hedule ustomiRed Ba#kup : Settings mun#ul. (ilih Disk atau ape,

    terserah kita akan mem!a#kup data dimana % pada #ontoh ini kita menggunakan disk

    se!agai tempat !ea#kup &. )lik Ie*t.

    P. =alaman S#hedule ustomiRed Ba#kup : S#hedule mun#ul. )ita dapat

    mengu!ah atau mem!iarkan $o! Iame dan $o! Des#ription. (ilih mmediately untuk

    mengeksekusi tugas terse!ut se#epat mungkin atau memasukkan 'aktu untuk

    mengeksekusi 'aktu pada 'aktu tertentu. )emudian )lik Ie*t.

    9. =alaman S#hedule Ba#kup : >e0ie' mun#ul. )lik Su!mit $o!.

    J. )emudian akan tampil pesan !ah'a permintaan untuk Su!mit telah sukses. )lik

    )

    Iote : kita hanya !isa melakukan !a#kup se#ara online jika data!ase kita !erada pada

    mode ar#hi0eMelakukan Ba#kup data!ase dengan Strategi ra#le-suggested

    Strategi Ba#kup ra#le-suggested ialah !a#kup akan menyalin gam!aran

    data!ase %image #opy& dengan menggunakan !a#kup in#remental >M+I. ra#le

    3nterprise Manager akan menjad'alkan !a#kup dengan >M+I. Berikut langkah-

    langkah untuk mensetting S#hedule Ba#kup :

    1. (ilih S#hedule Ba#kup di !agian Ba#kup/>e#o0ery

    2. =alaman S#hedule Ba#kup mun#ul. (ilih ra#le-suggested !a#kup. )emudian

    masukkan username dan pass'ord di !agian host #redentials. )lik Ie*t.

    . (ilih disk se!agai tujuan dari tempat !a#kup yang akan kita #o!a. )emudian klik

    Ie*t.". =alaman S#hedule Ba#kup : Setup mun#ul. Ba#a kem!ali informasinya klik

    Ie*t

    @. =alaman S#hedule Ba#kup : S#hedule mun#ul. Ba#a kem!ali informasinya dan

    sesuaikan tanggal dan 'aktu sesuai keperluan kita. )emudian )lik Ie*t

    P. =alaman S#hedule Ba#kup : >e0ie' mun#ul. Ba#a kem!ali informasinya dan

    klik Su!mit $o!.

    9. =alaman Status akan mun#ul dengan se!uah pesan yang menunjukkan !ah'a

    jo! telah didaftarkan dengan sukses. )ita dapat klik ;ie' $o! untuk mengakses

    halaman status jo! atau klik ) untuk melengkapi operasi terse!ut.

    Iote : !a#kup dengan strategi ra#le-suggested dilakukan se#ara in#remental.

    Melakukan re#o0ery data!ase se#ara keseluruhan

    Berikut langkah-langkah untuk melakukan >e#o0ery Data!ase se#ara keseluruhan :

    1. (ilih Maintenan#e pada menu halaman =ome 3nterprise Manager.

    2. (ilih (erform >e#o0ery di !agian Ba#kup/>e#o0ery.

  • 7/24/2019 PRAKTIKUM DBMS.

    12/14

    . =alaman (erform >e#o0ery mun#ul. (ilih >e#o0er to the #urrent time or a

    pre0ious point-in-time se!agai tipe operasi. Masukkan username dan pass'ord di

    !agian =ost redentials. )emudian klik (erform ?hole Data!ase

    ". =alaman >e#o0ery ?iRard kemudian mun#ul dan mem!eritahu jika instan#e

    akan di matikan %shutdo'n & dan dihidupkan kem!ali %restarted&. )lik >efresh untuk

    lanjut menggunakan >e#o0ery ?iRard.

    @. )ita kem!ali ke halaman Maintenan#e. klik (erform >e#o0ery. masukkan host

    #redentials. klik (erform ?hole Data!ase >e#o0ery untuk mere#o0ery data!ase.

    P. =alaman (erform >e#o0ery : (oint-in-time mun#ul. (ilih >e#o0er to the #urrent

    time. )lik Ie*t.

    9. =alaman (erform >e#o0ery : >ename mun#ul. (ilih CIo. >estore the files to

    the default lo#ation jika itu pilihan kita atau pilih CGes. >estore the file to a ne',

    #ommen lo#ation dan kemudian masukkan lokasinya. )lik Ie*t.

    J. =alaman (erform >e#o0ery : >e0ie' kemudian mun#ul. Ba#a kem!ali

    informasi dan klik Su!mit.Q. )emudian akan mun#ul pesan Cperation su##eeded. )lik k.

    Iote : proses ini hanya dapat dilakukan jika spfile dan #ontrolfile tidak hilang atau

    rusak.

    Se#urity %enkripsi data&

    (ro#edure dan fun#tion yang !erhu!ungan dengan algoritma enkripsi data dapat

    ditemukan di pa#kage DBMSK>G(. +ku men#o!a latihan sederhana dengan

    mem!uat se!uah fungsi enkripsi seperti !erikut:

    #reate or repla#e 45II 3I)>(

    % nilai I ;+>=+>2, key I ;+>=+>2

    & >35>I >+? +S

    nilaiKra' >+?%2&H

    keyKra' >+?%2&H

    nilaiKterenkripsi >+?%2&H

    B38I

    nilaiKra' :A utlKi1Jn.stringKtoKra'%nilai,

    +254J&H

    keyKra' :A utlKi1Jn.stringKtoKra'%key,

    +254J&H

    nilaiKterenkripsi :A d!msK#rypto.en#rypt%

  • 7/24/2019 PRAKTIKUM DBMS.

    13/14

    sr# AT nilaiKra',

    typ AT d!msK#rypto.desK#!#Kpk#s@,

    key AT keyKra'

    &H

    return nilaiKterenkripsiH

    3ID 3I)>(H

    (ada fungsi di atas, aku harus menerjemahkan nilai yang akan di-enkripsi !eserta

    key-nya ke dalam tipe data >+?, karena fungsi DBMSK>G(.3I>G( hanya

    menerima data dalam format >+?. ontoh di atas menggunakan algoritma enkripsi

    D3S. Berikut ini adalah fungsi yang melakukan de#rypt:

    #reate or repla#e 45II D3)>(

    % nilai I ra', key I ;+>=+>2

    & >35>I ;+>=+>2 +S

    nilaiKra' >+?%2&H

    keyKra' >+?%2&H

    nilaiKdekrip >+?%2&H

    B38I

    keyKra' :A utlKi1Jn.stringKtoKra'%key,+254J&H

    nilaiKdekrip :A d!msK#rypto.de#rypt%

    sr# AT nilai,

    typ AT d!msK#rypto.desK#!#Kpk#s@,

    key AT keyKra'

    &H

    return utlKi1Jn.ra'KtoKn#har%nilaiKdekrip,

    +254J&H

    3ID D3)>(H

    Se!agai #ontoh, aku melakukan enkripsi data ;+>=+>2 6$) =3ID>G7

    dengan key 6testtesttest7:

    sele#t enkrip%$) =3ID>G, testtesttest& from dualH

  • 7/24/2019 PRAKTIKUM DBMS.

    14/14

    yang menghasilkan:

    B3BQB@9"2BQ1311P349P"3J@

    =asil de#rypt-nya di dapat dengan:

    sele#t dekrip%B3BQB@9"2BQ1311P349P"3J@, testtesttest& from dualH

    ". (erhatikan apakah DBMS terse!ut memiliki tool pem!angun aplikasi, jelaskan