# ACID (Atomicity, Consistency, Isolation, Durability İliÅkisel veri tabanı yönetim sistemleri mimarisinde iÅ süreci (transaction) ve veri bütünlüÄünü saÄlamak için uyulması gereken kurallara ACID denilmektedir. İŠsüreci (transaction) kavramı bir iÅleminin ya bütünüyle yapılmasını ya da yapılan iÅlemlerin bütünüyle geri alınıp veri tutarlılıÄın saÄlanmasını garanti altına demektir. **ÃrneÄin**, hesabınızda 100 TLâyi arkadaÅınızın hesabına havale yoluyla göndermek istiyorsun diyelim. Bu iÅ süreci (transaction) iki iÅlem parçasından oluÅur. 100 TL senin hesabından azaltılıp sana ait bakiye bilgileri güncellenir, ardından 100 TL arkadaÅın hesabına +100 olarak iÅlenir ve güncellenir. İÅte bu iÅlem bütünlüÄü garanti altına alınmalıdır. Alınamaz ise tutarsız verilerle karÅılaÅılır. Böylece veri bütünlüÄü bozulur. EÄer sizden 100 TL çektikten sonra bir hata oluÅursa ve arkadaÅınızın hesabına bu ücret yatırılamaz ise tutarsız bir durum oluÅacaÄı aÅikardır. Yine mülakatlarda size soru olarak gelebilecek bir bilgidir. ACIDâi açıklayabilmek ve mantıÄını anlamak gerekir. ## Atomicity (Bölünmezlik) Bir iÅ sürecinde (transaction) yapılacak iÅlemler sıralı bir Åekilde birden fazla olabilir. Veri tabanında yapılacak olan bu iÅlemler kümesi bir bütün olarak ele alınır. Yapılan iÅlemlerinden herhangi bir tanesi tamamlanamaz ise diÄer tüm iÅlemlerde geçersiz sayılmalıdır. EÄer böyle hatalı bir durum varsa o ana kadar yapılan tüm iÅlemler geri alınır. Fakat, iÅlemlerin hepsi baÅarılı ise o iÅ süreci sonlandırılır. ## Consistency (Tutarlılık) Veri tabanında yapılan iÅlemlerde hep aynı girdiler ile hep aynı çıktıları almalıyız. İÅte bu tutarlılıÄı gösterir. ## Isolation (İzolasyon) Bir transactionâın tüm iÅlemleri tamamlanana kadar diÄer transactionlar tarafından yapılan deÄiÅiklikler ilgili transaction tarafından görülmez. Her transaction birbirinden baÄımsız çalıÅır. İÅlem sırasında birbirlerine müdahale etmezler. Veya dıÅarıdan bir müdahaleyi kabul etmezler. Bu izolasyonu ifade eder. ## Durability (SaÄlamlık) Bir transaction içinde hata oluÅursa geri dönme yeteneÄine sahip olmalıdır. Hata oluÅursa bir önceki ilk noktaya dönülebilmelidir. EÄer transaction baÅarılı bir Åekilde biterse bu durum loglanmalıdır ve baÅarılı olduÄuna dair mesaj verilmelidir. İliÅkisel veri tabanı yönetim sistemlerinde veriyi sorgulamak için özel bir programlama dili kullanılır. Dünyada neredeyse standart halini almıŠbu dil SQLâdir. (Structural Query Language) (Yapısal Sorgulama Dili) SQL içinde iÅlevlerine göre farklı komutlar yer almaktadır. Bu komutlar mantıksal bir Åekilde aÅaÄıdaki gibi sınıflandırılmıÅtır. ## 1- DDL (Data Definition Language â Veri Tanımlama Dili) Veri tabanı veya tablolarda yapısal deÄiÅiklikler yapabilmek için var olan SQL komutlarıdır. Bu komutlar ile yeni bir veri tabanı oluÅturmak, yeni bir tablo oluÅturmak veya var olan tablodan sütun eklemek-silmek veya tüm bunları silebilmek gibi iÅlemler yapılabilir. CREATE, ALTER, DROP, TRUNCATE, COMMENT, RENAME gibi komutlar bu iÅlemleri yapabilir. ## 2- DML (Data Manipulation Language â Veri İÅleme Dili) Tablolardaki veriler üzerinde kayıt ekleme, silme, deÄiÅtirme ve sorgulama yapabilmeyi saÄlayan SQL komutlarıdır. SELECT, INSERT, UPDATE, DELETE ## 3- DCL (Data Control Language â Veri Kontrol Dili) Veri tabanı veya tablolar üzerinde yetkilendirmeler yapabileceÄimiz SQL komutlarıdır. GRANT, REVOKE, ALTER DEFAULT PRIVILEGES ## 4- TCL (Transaction Control Language â İÅlem Kontrol Dili) Tabloların içindeki verileri deÄiÅtirmek için kullandıÄımız DELETE, UPDATE, INSERT gibi DML komutlarımız vardı. Bu komutlarla bir transaction içinde ardıÅıl Åekilde deÄiÅiklikler yapabiliriz. İÅte bu deÄiÅiklikleri yönetebilmek için kullanılan SQL komutlarıdır. Bir transaction baÅarılı ise DML komutlarının meydana getirdiÄi deÄiÅiklikler COMMIT komutuyla kalıcı olarak tablolara yansıtılır. Ãzetle veri kalıcı olarak deÄiÅir. EÄer, bir sorun varsa ROLLBACK komutu ile o ana kadar oluÅan tüm deÄiÅimler geri alınır. COMMIT, ROLLBACK, SAVEPOINT