ACID Prensiplerini Anlamak: Veritabanı Tasarımı Temelleri ve Normalizasyon

Cengiz Akarsu
3 min readApr 28, 2024

--

Veritabanı Güvenilirliğinin Temeli: ACID Prensiplerini Duyduk Duymadık Demeyin!

* referans

Yazılım geliştirme sürecinde, veritabanı işlemleri uygulamanın sağlamlığını belirler. Bu işlemler, verilerin güvenliğini, doğruluğunu ve etkinliğini sağlamak için özenle yönetilmelidir.

Elbette bu süreç DBA ekibi, ürünün sahibi ve sorumluluğu olan ekiple ortak bir şekilde yönetilmesi en değerlisi olur. Ki burada ilgili scrum ekibindeki teknik kişilerin yani yazılımcıların bu prensipler hakkında bilgi sahibi olup diğer teknik ekipleri yönlendirebilmesi oldukça önemlidir.

Haydi gelin tanımlarıyla ve gerçek senaryo örnekleriyle birlikte veri tabanı kulları ve prensipleri (ACID) hakkında bilgi edinelim, hatırlayalım. ACID prensipleri ve normalizasyon kuralları, veritabanı tasarımında güvenilirlik ve performansı artıran temel taşlardır.

ACID Prensipleri Nedir?

ACID, Atomicity (Bütünlük), Consistency (Tutarlılık), Isolation (İzolasyon) ve Durability (Dayanıklılık) kelimelerinin baş harflerinden oluşur. Bu prensipler, veritabanı işlemlerinin özelliklerini tanımlar ve işlemlerin güvenilirliğini sağlar.

Atomicity (Bütünlük): Bir işlem ya tamamıyla gerçekleşir ya da hiç gerçekleşmez.

Örneğin, bir banka hesabından para transferi yapılırken, para çekme işlemi gerçekleşirken para yatırma işlemi başarısız olursa, çekilen para geri yatırılmalıdır.

Consistency (Tutarlılık): Veritabanı, her işlem sonrasında tutarlı bir duruma gelmelidir.

Örneğin, bir öğrenci kaydı güncellenirken, öğrencinin bilgileri tüm ilişkili tablolarda güncellenmelidir.

Isolation (İzolasyon): İşlemler birbirinden bağımsız olarak çalıştırılmalı ve bir işlem diğer işlemleri etkilememelidir.

Örneğin, bir personelin maaşı hesaplanırken, diğer bir personelin maaş hesaplamasıyla birbirine karışmamalıdır.

Durability (Dayanıklılık): Bir işlem tamamlandığında, yapılan değişiklikler kalıcı olmalıdır.

Örneğin, bir müşteri bir ürün sipariş ettiğinde, bu siparişin veritabanında kaydedilmesi ve kaydın kalıcı olması sağlanmalıdır.

Normalizasyon Kuralları Nedir?

Normalizasyon, veritabanı tasarımında verilerin düzenlenmesi ve ilişkilendirilmesi sürecidir. Bu süreç, veritabanının bütünlüğünü korumak ve verilerin tekrarını önlemek için önemlidir.

1NF (First Normal Form): Veriler, atomik değerlere (tekil ve bölünemez) sahip olmalıdır. Örneğin, bir öğrenci kaydında öğrenci adı ve soyadı gibi bilgiler ayrı alanlarda tutulmalıdır.

2NF (Second Normal Form): Her alan birincil anahtara tam olarak bağlı olmalıdır ve tüm yarımlıklı anahtar alanlardan geçmeyen birincil anahtara dayalı olmayan herhangi bir alanı içeremez. Örneğin, bir öğrenci kaydında öğrenci adı ve öğrenci numarası arasında bir ilişki olmalıdır.

3NF (Third Normal Form): Herhangi bir geçişken bağımlılık içermemelidir. Örneğin, bir öğrenci kaydında öğrenci adı ve öğrenci bölümü arasında doğrudan bir ilişki olmalıdır, öğrenci adresi gibi bir alanın öğrenci adına değil, öğrenci numarasına bağlı olması gerekmektedir.

Gerçek Hayattan Bir Örnek Üzerinden Devam Edersek:

Bir online alışveriş platformunda bir kullanıcı bir ürünü sepete eklediğinde, bu işlem tam olarak gerçekleşmelidir ve herhangi bir hata durumunda geri alınabilmelidir (Atomicity ve Durability). Aynı zamanda, kullanıcı bir ürünü satın aldığında, ödeme işlemi diğer kullanıcıların ödeme işlemlerini etkilememelidir (Isolation). Veritabanı, kullanıcıların siparişleriyle ilgili bilgileri doğru ve güncel bir şekilde saklamalıdır (Consistency).

Yukarıda verdiğim örnek için sürekli her işlem işlem oluştuğunda veri tabanına gidilmesin, unit of work gibi patternler ile işlemleri ilgili transactionlar içerisinde paket halinde tek seferde yani işlemlerin hepsi rollback, revert yapılmayacağına emin olduğunda tek seferde IO operasyonu gerçekleşip db üzerinde gereksiz rollbackler yapılmasın şeklinde uygulama düzeyinde yönetebiliyoruz. Aklımızın bir köşesinde kalsın. Bu konuyla ilgili ayrı bir makale hazırlıyorum siz okuduğunuzda yazılarım arasında görebilirsiniz muhtemelen.

Ez cümle;

ACID prensipleri ve normalizasyon kuralları, veritabanı tasarımının temel taşlarıdır. Bu prensiplere uygun hareket ederek, uygulamaların veritabanı işlemleri daha güvenilir ve etkin hale gelir. Bu da kullanıcıların verilere güvenle erişmesini sağlar ve uygulamaların daha sağlam bir temel üzerine inşa edilmesini sağlar.

*Referans: https://ravenfo.com/2021/07/07/dagitik-mimariler-sql-nosql-newsql-cap-teoremi/

Herkese mutlu kodlamalar dilerim!

Güç Sizinle Olsun…🚀

--

--