Selasa, 01 Desember 2015


Database dan Manajemennya

Basis Data dan Sistem Basis Data


 Basis data adalah, basis data terdiri dari 2 (dua) kata, yaitu kata Basis dan Data. Basis bisa di artikan sebagai markas ataupun gudang, tempat berkumpul. Sedangkan data yaitu kumpulan fakta dunia nyata yang mewakili suatu objek, seperti manusia, barang, dan lain-lain yang direkam ke dalam bentuk angka, bentuk huruf, simbol, teks, bunyi, gambar atau juga  kombinasinya. Jadi pengertian basis data adalah kumpulan terorganisasi dari data – data yang saling berhubungan sedemikian rupa sehingga dapat mudah disimpan, dimanipulasi, serta dipanggil oleh penggunanya.

Definisi Basis data juga dapat diartikan sebagai kumpulan data yang terdiri dari satu atau lebih tabel yang terintegrasi satu sama lain, dimana setiap user diberi wewenang untuk dapat mengakses ( seperti mengubah,menghapus dll.) data dalam tabel-tabel tersebut.

Tujuan Basis data sendiri adalah sebagai berikut ini:

  • Kecepatan serta kemudahan dalam menyimpan, memanipulasi atau juga menampilkan kembali data tersebut.
  • Efisiensinya ruang penyimpanan, karena dengan basis data, redudansi data akan bisa dihindari. Keakuratan (Accuracy) data.
  • Ketersediaan (Availability) data.
  • Kelengkapan (Completeness) data, Bisa melakukan perubahan struktur dalam basis data, baik dalam penambahan objek baru (tabel) atau dengan penambahan field-field baru pada table.
  • Keamanan (Security) data, dapat menentukan pemakai yang boleh menggunakan basis data beserta objek-objek yang ada didalamnya serta menentukan jenis -jenis operasi apa saja yang boleh dilakukannya. Kebersamaan Pemakai (Sharability), Pemakai basis data bisa lebih dari satu orang, tetapi tetap menjaga atau menghindari masalah baru seperti: inkonsistensi data (karana data yang sama diubah oleh banyak pemakai pada saat yang bersamaan) dan juga kondisi deadlock (karena ada banyak pemakai yang saling menunggu untuk menggunakan data tersebut.



Sedangkan,

 pengertian sistem basis data adalah sistem yang terdiri dari koleksi data atau kumpulan data yang saling berhubungan dan program-program untuk mengakses data tersebut.

Komponen Utama Sistem Basis Data :

  • Perangkat Keras (Hardware) ;
  • Sistem Operasi (Operating Sistem) ;
  • Basis data (Database) ;
  • Sistem Pengelola Basis Data (Database Management Sistem atau disingkat DBMS) Yaitu pengelola basis data secara fisik tidak dilakukan oleh pemakai secara langsung, akan tetapi ditangani oleh sebuah perangkat lunak yang khusus. Perangkat Lunak inilah yang disebut DBMS (Database Management Sistem) yang akan menentukan bagaimana data diorganisasi, disimpan, diubah serta diambil kembali. Perangkat Lunak ini juga yang menerapkan mekanisme pengamanan data, pemakaian data secara bersama-sama, konsistensi data dan sebagainya. Pemakai (User). Aplikasi atau Perangkat Lunak yang lainnya.

Tujuan Utama Sistem Basis Data sendiri adalah :

  • Menunjukkan suatu lingkungan yang tepat dan efisien didalam melakukan pengambilan (retrieving) dan penyimpanan (storing) informasi basis data, serta menyediakan antarmuka yang lebih ramah kepada user dalam melihat data.
  • Kegunaan atau Fungsi Sistem Basis Data, mengatasi masalah-masalah pemrosesan data yang sering ditemui dengan menggunakan metode konvensional, permasalah yang diatasi diantaranya:

  1. Redudansi data dan juga inkonsistensi data.
  2. Kesuliatan dalam pengaksesan data.  
  3. Data Isolation.
  4. Konkurensi pengaksesan.
  5. Masalah keamanan.
  6. Masalah Integritas.

Pemakai sistem basis data diantaranya:

Programmer Aplikasi yaitu orang atau pemakai yang berinteraksi dengan basis data melalui Data Manipulation Language (DML), User Mahir (Casual User) yaitu pemakai yang berinteraksi dengan sistem tanpa menulis modul program. Mereka menyatakan query untuk mengakses data dengan bahasa query yang telah disediakan oleh suatu DBMS. User Umum (End User/ Naïve User) yaitu Pemakai yang berinteraksi dengan sistem basis data melalui pemanggilan satu program aplikasi permanen (executable program) yang telah disediakan sebelumnya. User Khusus (Specialized User) yaitu Pemakai yang menulis aplikasi basis data non konvensional, tetapi untuk keperluan-keperluan khusus.



TRANSAKSI DAN CONCURRENCY



Transkasi merupakan perubahan yang terjadi pada basis data. Apa tujuan dari dilakukannya pengelolaan transaksi dalam sistem basis data? Tujuannya yakni melindungi basis data dari kerusakan dan kehilangan data. Apabila kita mengirim suatu transaksi ke database, maka akan terjadi dua kemungkinan yakni:

1. Seluruh transaksi selesai.

2. Tidak satu pun dari transaksi itu yang selesai.       

Dalam pengelolaan transaksi terdapat dua operasi yang sangat penting, yang pertama ialah commit maksudnya transaksi telah selesai dan telah permanen. Yang kedua yakni rollback maksudnya apabila proses transaksi gagal maka semua proses yang telah dilakukan sebelumnya harus di-undo. Ketika data telah di commit maka data tersebut tidak dapat di rollback lagi.

Ada empat elemen dalam transaksi yang biasa disingkat ACID, yaitu : Atomicity,  semua berhasil atau semua gagal Consistency,  transaksi mempertahankan konsistensi database  Isolation,  transaksi terisolasi satu dengan yang lain   Durability,  setelah commit update harus survive di database

Dalam transaksi terdapat empat elemen yang disingkat ACID.

  • Atomicity, Jika semua operasi pada sebuah transaksi sukses maka transaksi dianggap sukses, jika salah satu operasi pada suatu transaksi gagal maka transaksi dianggap gagal.
  • Consistency, transaksi menjaga konsistensi database.  Isolation, meskipun ada beberapa transaksi yang berlangsung bersamaan, masing-masing transaksi tidak boleh mengetahui transaksi lain yang sedang berlangsung. Hasil transaksi sementara harus disembunyikan dari transaksi lain yang sedang berlangsung.
  • Durability, setelah sebuah transaksi sukses dilakukan, perubahan-perubahan yang dibuatnya terhadap database bersifat permanen, bahkan jika terjadi kegagalan sistem. Dalam transaksi juga dikenal istilah checkpoint.
  • Checkpoint adalah interval tertentu pada perjalanan transaksi basis data yang menyimpan keadaan basis data saat itu. Checkpoint dapat dilakukan untuk me-recovery database secara backward (undo) ataupun forward (redo). Dalam transaksi juga dikenal istilah isolation level. Isolation sendiri merupakan

Dalam transaksi ada tiga hal yang harus dapat berjalan: 

1.Dirty Read, yakni dapat melihat atau membaca data dari transaksi lain yang telah dirollback atau belum di commit. Kedua transaksi tersebut berjalan bersamaan.

2. Nonrepeatable Read, yakni membaca atau melihat ulang data yang sebelumnya telah dibaca karena data tersebut telah dimodifikasi oleh transaksi yang lain.

3. Phantom Read, yakni transaksi membaca sebuah data yang telah hilang akibat dari transaksi yang lainnya.



Untuk mencegah hal – hal tersebut, Oracle menyediakan fitur-fitur sebagai berikut: Read Commited. Yakni transaksi hanya dapat melihat perubahan data setelah transaksi lain telah commit  pada data tersebut. Serializable. Untuk mencegah terjadinya phantom read. Serializable ini menjadikan transaksi dieksekusi satu setelah yang lainnya, seperti secara serial, bukan secara bersamaan (pararel). Untuk mengaplikasikan level isolasi SERIALIZABLE, adalah dengan menggunakan perintah: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;



Concurrency adalah sebuah mekanisme pada system basis data yang mengijinkan banyak transaksi pada saat bersamaan untuk mengakses data yang sama tanpa adanya gangguan.



 Pada umumnya terdapat 3 masalah utama pada concurrency :

  • Lost update problem, ketika dua user mengupdate dua buah data yang sama Uncommited dependency problem, ketika user yang satu meretrieve datadan user yang lain merollback data tersebut  
  • Inconsistent analysis problem, ketika user yang satu meretrieve data dan user yang lain mengupdate data tersebut



Solusi Penanganan masalah tersebut dengan proses locking, jika sebuah transaksi ingin record/resource tidak berubah dalam waktu tertentu maka dia meminta lock.

Ada dua jenis lock yaitu :

  1. Exclusive Lock (Xlock) -> write lock (read and write) ·    
  2.  Shared Lock (Slock) -> read lock

Jadi cara kerjanya :

Jika transaksi A memegang Xlock pada sebuah record, maka permintaan lock (X,S) pada record yang sama harus diabaikan.  Jika transaksi A memegang Slock pada record R maka :

a)     Permintaan Xlock transaksi lain pada R ditolak

b)      Permintaan Slock transaksi lain pada R diterima

Tapi, ada satu masalah yang dapat terjadi ketika melakukan proses locking ini, yaitu deadlock. Yaitu, situasi dimana dua atau lebih transaksi dalam kondisi waitstate, satu sama lain menunggu lock dilepaskan sebelum dapat memulai.

Cara penanganannya adalah :

·      Deteksi dan pecahkan deadlock

·       Deteksi deadlock -> wait-for-graph

·       Pecahkan deadlock -> salah satu dirollback paksa

·       Ostrich Algorithm  -> diabaikan



REFERENSI http://simbuda.blogspot.co.id/2013/05/integritas-data.html http://choirulhuda.blogspot.co.id/2008/11/mengenal-concurrency-control-pada.html






Integritas Data Dalam Basis Data


OCPengertian integritas data secara luas mengacu pada kepercayaan dari sumber daya suatu sistem. Integritas data sangat penting karena dapat memastikan keakuratan, konsistensi, aksesibilitasi, dan kualitas tinggi dari sebuah data, sehingga sangat penting untuk mengikuti aturan pengintegritasan suatu data. Data yang mempunyai integritas identik di pertahankan selama operasi apapun (seperti bisnis transfer, penyimpanan, atau pengambilan). Secara sederhana dalam istilah bisnis, integritas data adalah jaminan bahwa data konsisten, bersertifikat dan dapat dirujukan.

Contoh :

Dari mekanisme integritas data adalah hunbungan orang tua dan anak dengan record terkait. Jika dalam catatan orangtua memiliki satu atau lebih dari catatan anak terkait semua proses integritas referensial akan ditangani oleh database itu sendiri, yang secara otomatis menjamin keakuratan dan integritas data sehingga tidak ada catatan anak bisa ada tanpa orang tua (atau disebut juga yatim piatu) dan bahwa tidak ada orangtua kehilangan catatan anak mereka. Ini juga menjamin bahwa tidak ada catatan induk dapat dihapus sementara orangtua memiliki record setiap anak. Semua ini ditangani pada tingkat database dan tidak memerlukan coding cek integritas ke dalam setiap aplikasi.

Integritas Data dapat Di kelompokan menjadi 2 bagian :

1. Integritas data yang berada dalam relasi, yaitu integritas entitas dan integritas domain.

2. Integritas yang berada di luar relasi, yaitu integritas referensial

Selain itu ada juga integritas yang ditentukan sendiri di dalam suatu perusahaan, yaitu integritas perusahaan (Enterprise integrity/ user Defined Integrity).

Secara garis besar integritas data dalam model relasional meliputi :

1. Integritas Entitas

2. Integritas Domain

3. Integritas Referensial

4. Integritas Enterprise

INTEGRITAS ENTITAS

Integritas entitas mendifinisikan sebuah baris sebagai sebuah entitas yang unik untuk suatu tabel. Dalam integritas entitas, tidak ada baris yang di duplikat didalam suatu tabel.

Contoh :

create table Pembelian

(ID Pembelian smallint,

ID model smallint,

DeskripsiModel varchar (40),

Primary Key (IDPembelian));

INEGRITAS DOMAIN

Domain adalah nilai-nilai yang dimungkinkan diasosiasikan dengan setiap atribut, Integritas domain merupakan validasi masukan dari sebuah kolom. Dengan integritas domain, tidak ada data yang melanggar jangkauan nilai di tiap kolom data.

Jenis domain yang harus dimiliki oleh setiap atribut :

1. Karakter bebas

2. Alphanumerik

3. Alphabet

4. Numerik

Pemeliharaan integritas domain :

1. Pendifinisian skema

2. Pemanfaatan properti field

3. Penerapan proses validasi pada pemasukan data

Contoh :

Create table biografi

(idpenulis smallint unsigned not null,

tahunLahir year not null,

kotalahir varchar (40) not null default

‘Kosong’);

create domain nilai numerik(3,2)

constraint value-test check (value >=0.00)

INTEGRITAS REFERENSIAL

Integritas referensial adalah dasar relasi antar tabel yaitu antara foregin key dengan promary key. Integritas referensial memastikan bahwa seluruh nilai dari foregin key cocok dengan nilai primary key yang dihubungkanya.

Contoh :

create table account

(account-number char (10),

branch-name char (15),

balance integer,

primary key (account-number),

foreign key (branch-namereference branch)

create table depositor

(costumer-name char (20),

account-number char (10),

primary key (costumer-name, account-number)

foreign key (account-number) reference account

foreign key (costumer-name) reference costumer)

on delete cascade on update cascade

INTEGRITAS ENTERPRISE

Integritas enterprise mengizinkan kita untuk menentukan spesifik business rules sendiri yang tidak sama pada kategori integritas yang lainnya.






Back-End Programming, XML dan Keamanan Data


Back-End Programming


Back-End programming adalah program yang berjalan pada database secara otomatis ketika terjadi suatu pemicu tertentu. Dalam oracle ada beberapa metode untuk melakukan back-end programming, yaitu dengan trigger dan stored procedure.

Trigger


Trigger adalah blok PL/SQL yang disimpan dalam database dan akan diaktivasi ketika kita melakukan statement-statement SQL (DELETE, UPDATE, dan INSERT) pada sebuah tabel. Aktivasi trigger didasarkan pada event yang terjadi di dalam tabel tersebut sehingga trigger dapat membantu dalam menjaga integritas dan konsistensi data. Implementasi trigger yang sering ditemui dalam dunia nyata adalah untuk mengeset dan mengubah nilai kolom dalam suatu tabel sehingga validasi nilai dari tabel tersebut akan terjaga. Adanya trigger dalam database akan meringankan kita dalam pembuatan aplikasi karena di dalam aplikasi yang kita buat, kita tidak perlu lagi untuk melakukan validasi data.

Berikut adalah daftar yang mungkin untuk aktivasi trigger :

Event
Keterangan
Before Insert
Diaktifkan sekali sebelum statement insert
After Insert
Diaktifkan sekali setelah statement insert
Before Update
Diaktifkan sekali sebelum statement update
After Update
Diaktifkan sekali setelah statement update
Before Delete
Diaktifkan sekali sebelum statement delete
After Delete
Diaktifkan sekali setelah statement delete

Model-model yang digunakan untuk menspesifikasi aturan basis data aktif adalah model ECA (Event-Condition-Action). Aturan dalam model ECA memiliki tiga komponen yaitu:

  • Event, yang memicu suatu rule tersebut biasanya berupa operasi perubahan basis data yang secara eksplisit ditambahkan ke basis data. Namun pada umumnya, bisa berupa event temporal atau jenis event eksternal yang lain.
  • Condition, menentukan apakah suatu rule dijalankan atau tidak. Ketika suatu trigger dijalankan, maka bagian condition (bersifat optional) akan dievaluasi jika didefinisikan oleh yang membuat trigger. Jika evaluasi bagian condition bernilai TRUE maka aksi suatu rule dijalankan.
  • Action, biasanya berupa statement sql.

Manfaat trigger antara lain adalah :

  • Membuat integrity constraint yang kompleks.
  • Mencatat aktivitas suatu tabel (logging).
  • Sinkronisasi

Contoh Kasus :

Pada database supermarket, jika ada pembelian baru maka otomatis stok barang pada tabel barang akan berkurang sesuai dengan jumlah barang yang dibeli. Maka sintaks lengkapnya dalam pl / sql adalah sebagai berikut :

create table barang(
kode_barang varchar2(10) primary key,
nama varchar2(50),
stok_barang number
);
create table pembelian(
id_pembelian number primary key,
kode_barang varchar2(10),
constraint fk_kd_brg foreign_key (kode_barang) references barang(kode_barang)
jumlah_beli number,
harga number
);
create or replace trigger trg_stok_brg after insert on jumlah_beli for each row
begin
update barang set stok_barang =stok_barang – :new.jumlah_beli where id_pembelian = :new.id_pembelian;
end;
/

Stored Procedure


Subprogram adalah PL/SQL Blok yang dipanggil dengan sekumpulan parameter. PL/SQL memiliki dua jenis subprogram yaitu: procedure dan function. Dimana secara umum procedure digunakan untuk melaksanakan aksi dan function digunakan untuk komputasi suatu nilai.

Stored procedure adalah subprogram yang disimpan di dalam database berupa SQL + Bahasa prosedural. Ada beberapa kelebihan yang dapat diperoleh dengan menggunakan stored procedure, meliputi :

  • Dijalankan di database server -> performance lebih baik, network trafik lebih rendah.
  • Tools DBA -> praktis, selalu tersedia di database server.
  • Dapat digunakan oleh banyak aplikasi
    • Standarisasi business logic.
    • SP dapat dipanggil oleh aplikasi luar
  • Dapat memanfaatkan tipe, fungsi yang disediakan DBMS
  • Powerfull, tools sangat penting bagi DB designer, DB programmer dan DBA
  • Hampir semua RDBMS mensupport.
  • Walaupun syntax berbeda, umumnya menggunakan prinsip yang sama

XML (Extensible Markup Language)


XML adalah markup language sepertinya halnya HTML untuk dokumen yang mengandung informasi terstuktur dan ditujukan untuk pertukaran dokumen via web. XML berberntuk file teks yang cross platform, independen terhadap software dan hardware. Berikut adalah spesifikasi XML :

  • Tag: <nama> budi </nama>
    • Tag didefinisikan sendiri.
  • Tag dapat mempunyai atribut,
    • contoh : <daftar_mahasiswa jumlah = “40”> … </daftar_mahasiswa>
  • Struktur -> hirarki (tag dalam tag),
    • contoh: <mahasiswa><nama> susis </nama></mahasiswa>

Keuntungan XML :

  • Self Documenting -> dengan melihat tag, dapat diketahui isi dokumen.
  • Dapat dibaca software dan manusia.
  • Fleksibel
  • Dapat dikembangkan tanpa melanggar format lama.
    • Contoh: pada <pengarang>, tambah tag <telepon>, maka XML yang lama tetap dapat dibaca.
  • Hirarkis -> dapat merepresentasikan data kompleks
  • Independen terhadap bahasa pemrograman dan sistem operasi

Kerugian XML :

  • Pengulangan tag -> tidak efisien, ukuran file membengkak

Beberapa aturan XML :

  • Setiap tag harus ada penutupnya.
  • Penamaan Tag
    • case sensitive. <nama> tidak sama dengan <Nama>.
    • Tidak diawali dengan angka
    • Tidak mengandung spasi
    • Hindari ‘-’ dan ‘.’
  • Urutan hirarki harus benar.
    • Contoh yang salah: <mahasiswa> <nama> susis </mahasiswa></nama>
  • Setiap XML harus mengandung root (akar)

<root>

<child>

<subchild>…..</subchild>

</child>

</root>

  • Setiap atribut harus dalam tanda petik. Contoh:
    • <surat tanggal = “12/12/2007”>
    • <catatan oleh = “ Jum’at ” >
  • Komentar dalam XML:
    • <!—baris komentar –!>

Untuk membaca XML diperlukan proses parser. Parser XML dapat dilakukan dengan dua cara, yaitu :

  • Tree based, isi XML dipindahkan ke memori terlebih dulu -> DOM (Document Object Model).
  • Event based -> tidak dipindahkan ke memori. Fungsi callback dipanggil setiap menemui element. -> SAX (Simple API XML)

Keamanan Data


Sistem database dapat didefinisikan sebagai komputerisasi sistem penyimpanan data yang tujuannya untuk memelihara informasi serta agar informasi tersedia pada saat dibutuhkan. Dalam sistem database itu perlu dijaga keamanan datanya karena data yang diakses oleh pihak yang tidak berwenang akan merugikan pemilik database tersebut baik database miliki perusahaan, kelompok tertentu atau bahkan perorangan.

  1. Fisikal, lokasi-lokasi dimana terdapat sistem komputer haruslah aman secara fisik terhadap kerusakan.
  2. Manusia, dijaga dari pihak yang tidak berwenang untuk menghindari manipulasi data olehnya.
  3. Sistem Operasi, kelemahan ini memungkinkan pengaksesan data oleh pihak tak berwenang, karena hampir seluruh jaringan sistem database menggunakan akses jarak jauh.
  4. Pengaturan hak akses sistem basis data yang baik.

Berikut adalah poin-poin penting yang harus diperhatikan dalam keamanan data :

1. Otorisasi, meliputi :

  • Pemberian Wewenang atau hak istimewa (priviledge) untuk mengakses sistem atau obyek database
  • Kendali otorisasi (=kontrol akses) dapat dibangun pada perangkat lunak dengan 2 fungsi :
  • Mengendalikan sistem atau obyek yang dapat diakses
  • Mengendalikan bagaimana pengguna menggunakannya
  • Sistem administrasi yang bertanggungjawab untuk memberikan hak akses dengan membuat account pengguna.

2. Tabel View

Merupakan metode pembatasan bagi pengguna untuk mendapatkan model database yang sesuai dengan kebutuhan perorangan. Metode ini dapat menyembunyikan data yang tidak digunakan atau tidak perlu dilihat oleh pengguna. Contoh pada Database relasional, untuk pengamanan dilakukan beberapa level :

  • Level Relasi : pengguna diperbolehkan atau tidak diperbolehkan mengakses langsung suatu relasi.
  • Level View : pengguna diperbolehkan atau tidak diperbolehkan mengakses data yang terapat pada view.
  • Read Authorization : pengguna diperbolehkan membaca data, tetapi tidak dapat memodifikasi.
  • Insert Authorization : pengguna diperbolehkan menambah data baru, tetapi tidak dapat memodifikasi data yang sudah ada.
  • Update Authorization : pengguna diperbolehkan memodifikasi data, tetapi tidak dapat menghapus data.
  • Delete Authorization : pengguna diperbolehkan menghapus data.

3. Backup data dan Recovery, tindakan ini diperlukan untuk mencegah kehilangan data dari hal-hal yang tidak terduga.

  • Backup : proses secara periodik untuk membuat duplikat dari database dan melakukan logging file media penyimpanan eksternal.
  • Jurnaling : proses menyimpan dan mengatur log file dari semua perubahan yang dibuat di database untuk proses recovery yang efektif jika terjadi kesalahan.
  • Isi Jurnal :
    • Record transaksi :
      • Identifikasi dari record
      • Tipe record jurnal (transaksi start, insert, update, delete, abort, commit)
      • Item data sebelum perubahan (operasi update dan delete)
      • Item data setelah perubahan (operasi insert dan update)
      • Informasi manajemen jurnal (misal : pointer sebelum dan record jurnal selanjutnya untuk semua transaksi)
    • Record checkpoint :
      • Suatu informasi pada jurnal untuk memulihkan database dari kegagalan, kalau sekedar redo, akan sulit penyimpanan sejauh mana jurnal untuk mencarinya kembali, maka untuk membatasi pencarian menggunakan teknik ini. Recovery : merupakan upaya untuk mengembalikan basis data ke keadaaan yang dianggap benar setelah terjadinya suatu kegagalan.

4. Kesatuan data dan Enkripsi :

  • Enkripsi : Mengkodekan informasi pada data dengan sandi khusus yang hanya dapat dibuka oleh pihak yang berwenang / memegang kuncinya
  • Integritas : Metode pemeriksaan dan validasi data (metode integrity constrain), yaitu berisi aturan-aturan atau batasan-batasan untuk tujuan terlaksananya integritas data.
  • Konkuren : mekanisme untuk menjamin bahwa transaksi yang konkuren pada database multi user tidak saling menganggu operasinya masing-masing. Adanya penjadwalan proses yang akurat (time stamping).
2007. Ryan Mudafiq, www.Ilmukomputer.com

2012. Pratama. gogopratamax.blogspot.com

cs.upi.edu

elearning.cs.upi.edu

https://simbuda.wordpress.com/2013/05/19/back-end-programming-xml-dan-keamana