Saturday, July 24, 2010

Arel Pada Rails 3

Catatan: Artikel ini bersumber pada Stackoverflow dimana terdapat pertanyaan mengenai Arel. Artikel ini diringkas dan ditranslasikan sedemikian rupa ke Bahasa Indonesia agar mudah dimengerti.

Apa itu Arel?
Arel adalah sebuah objek dari model untuk aljabar operator query relasional.

Apakah Arel merupakan pengganti dari ActiveRecord?
Arel tidak menggantikan ActiveRecord. Arel merupakan pengganti dari pembuatan query SQL secara manual dan merupakan layer query yang berada dibawah ActiveRecord, tetapi dapat digunakan oleh ORM selain ActiveRecord seperti DataMapper. Arel diinspirasi oleh SQLAlchemy yang ditulis dalam bahasa Python serta LINQ. Karen Arel berangkat dari ide bahwa "setiap query merupakan named_scope", Arel sering disebut juga sebagai pengganti dari named_scope.

Apakah Arel menggunakan objek sebagai pengganti query?
Tidak, Arel menggunakan objek sebagai query.

Kenapa dengan Arel menjadi lebih baik?
Ruby adalah bahasa object-oriented dan bukan sebuah bahasa string-oriented. Oleh karena alasan itulah menjadi hal yang wajar jika setiap query direpresentasikan sebagai objek, bukan string. Arel mengimplementasi aljabar dalam setiap operator query-nya. Dengan kata lain, Arel dapat mengetahui tentang aturan matematika untuk membangun dan menyusun query. Misal, jika menggabungkan dua buah string dimana masing-masing string terdiri dari query SQL yang valid, hasil dari penggabungan tersebut terdapat kemungkinan menjadi query SQL yang tidak valid. Atau lebih buruk, akan menjadi SQL query yang valid, tetapi tidak menghasilkan sesuatu sesuai harapan. Dengan Arel, kedua hal tersebut tidak akan pernah terjadi.

Apakah akan lebih mudah untuk membangun query?
Ya, sebagaimana yang telah disebutkan diatas, akan lebih mudah membangun query yang bersifat kompleks dari bagian-bagian yang sederhana.

Apakah dengan Arel akan membuat query SQL yang lebih efisien?
Ya, karena Arel memiliki model objek yang tepat untuk setiap query, dengan begitu Arel dapat melakukan optimisasi untuk setiap query tersebut jauh sebelum melakukan generate aktual query SQl yang digunakan untuk manipulasi tabel SQL.

Apakah kompatibel dengan Database yang umum digunakan?
Ya, selain SQL Arel dapat melakukan generate query untuk segala hal. Contoh, LINQ atau Ambition, keduanya dapat melakukan generate query SQL LDAP, ActiveResource, CouchDB, Amazon, Google dengan sintaks yang sama.

Lebih Lanjut: Why Arel? - Nick Kallen

No comments:

Post a Comment

© Railsmine