SQL İşlemleri ve ACID Açıklaması: COMMIT, ROLLBACK ve İzolasyon Seviyeleri

  1. Ana sayfa
  2. Blog
  3. Veritabanları ve SQL

Veritabanları ve SQL

SQL İşlemleri ve ACID Açıklaması: COMMIT, ROLLBACK ve İzolasyon Düzeyleri

Sunucu iki hesap arasında para taşıma işleminin yarısında başarısız olursa ne olur? Bunun cevabı işlemlerdir. Gerçek bir örnek üzerinde nasıl çalıştıklarını, ASİT’in ne anlama geldiğini ve izolasyon seviyesinin nasıl seçileceğini görün.

9 dk okuma
SQL işlemleri ve ACID açıklaması: COMMIT, ROLLBACK ve izolasyon seviyeleri

Önemli noktalar

  • Bir işlem, ifadeleri, hepsi birlikte başarılı olacak veya hep birlikte başarısız olacak şekilde gruplandırır.
  • COMMIT değişiklikleri kalıcı hale getirir ve ROLLBACK bunları iptal eder.
  • ASİT atomiklik, tutarlılık, izolasyon ve dayanıklılık anlamına gelir.
  • Daha güçlü izolasyon daha fazla anormalliği önler ancak eşzamanlılığı azaltabilir; bu nedenle seçiminizi bilinçli yapın.

300 rupinin Asha’dan Ben’e taşınması iki güncellemeyi gerektiriyor: bir hesaptan çıkarıp diğerine eklemek. Aralarında sistem çökerse para yok olur. Her iki adımı tek bir birim olarak ele alarak bunu imkansız hale getirmek için SQL işlemleri mevcuttur.

Bu kılavuzda küçük hesaplar tablosunda taahhütleri, geri almaları ve hataları inceleyeceğiz. Bu örnekleri SQLite’da çalıştırdık ve gösterilen bakiyeler bu çalıştırmadan geliyor. Temel komutlar veritabanları arasında benzerdir, ancak kilitleme ve izolasyon davranışları çok farklılık gösterir, bu nedenle kendi veritabanınızın belgelerini nereden kontrol edeceğinizi belirtiyoruz.

İşlem nedir?

İşlem, veritabanının tek bir mantıksal işlem olarak ele aldığı bir veya daha fazla SQL ifadesinin dizisidir. İşte tablomuz:

CREATE TABLE accounts (
  id INT PRIMARY KEY,
  owner TEXT,
  balance INT CHECK (balance >= 0)
);

INSERT INTO accounts VALUES (1, 'Asha', 1000), (2, 'Ben', 200);

CHECK kısıtı, daha sonra kullanacağımız bir dengenin asla sıfırın altına inemeyeceği bir kuraldır. Bir işlemi başlatmak için sözdiziminin değiştiğini unutmayın: SQLite ve PostgreSQL BEGIN‘yi kabul eder, MySQL’de ayrıca START TRANSACTION bulunur ve SQL Server BEGIN TRANSACTION‘ü kullanır.

Açık bir işlemin dışında çoğu veritabanı, her ifadenin tamamlanır tamamlanmaz kaydedildiği autocommit yöntemini kullanır. Oracle dikkate değer bir istisnadır, çünkü oradaki bir oturum siz taahhütte bulunana kadar bir işlemde kalır.

KABUL: kalıcı hale getirin

BEGIN;
UPDATE accounts SET balance = balance - 300 WHERE id = 1;
UPDATE accounts SET balance = balance + 300 WHERE id = 2;
COMMIT;

-- Asha | 700
-- Ben  | 500

COMMIT çalıştırılıncaya kadar değişiklikler geçicidir. Başarılı bir şekilde geri döndüğünde, veritabanı bunların kaydedildiğini garanti eder. Her iki hesaptaki toplam 1200’de kaldı, bu da çalışmanın asıl amacı.

GERİ DÖN: her şeyi iptal et

ROLLBACK işlem başladığından beri her şeyi geri alır:

BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
SELECT owner, balance FROM accounts;
-- Asha | 600   (visible inside this transaction)
-- Ben  | 500

ROLLBACK;
SELECT owner, balance FROM accounts;
-- Asha | 700   (back to where it was)
-- Ben  | 500

Bağlantının kopması veya siz taahhütte bulunmadan önce sunucunun çökmesi durumunda geri alma da otomatik olarak gerçekleşir, dolayısıyla yarı tamamlanmış bir işlem hayatta kalamaz.

Bir ifade başarısız olduğunda

Burada daha gerçekçi bir durum var. Asha, hesapta bulunmayan 5000’i göndermeye çalışır. Önce Ben’e olan kredi çalıştırılır ve ardından borç CHECK kuralını ihlal eder:

BEGIN;
UPDATE accounts SET balance = balance + 5000 WHERE id = 2;
UPDATE accounts SET balance = balance - 5000 WHERE id = 1;
-- error: CHECK constraint failed: balance >= 0

ROLLBACK;

-- Asha | 700
-- Ben  | 500

İşlem olmasaydı Ben 5000 doları saklayacaktı ve defterler yanlış olacaktı. Önemli bir ayrıntıya dikkat edin: başarısız bir ifade, işlemi her zaman tek başına iptal etmez. Örneğin SQLite ve MySQL’de önceki ifadeler beklemede kalabilir, dolayısıyla kodunuzun geri alma işlemi yapması gerekir. PostgreSQL bunun yerine tüm işlemi durduruldu olarak işaretler ve siz geri dönene kadar başka ifadeleri reddeder.

Uygulama kodunda işlemi her zaman hata işlemeyle eşleştirin. Python’daki fikir şu şekildedir ve Python istisna işleme kılavuzumuzda söz dizimi açıklanmaktadır:

try:
    conn.execute("BEGIN")
    conn.execute(debit_sql, values)
    conn.execute(credit_sql, values)
    conn.execute("COMMIT")
except Exception:
    conn.execute("ROLLBACK")
    raise

Kayıt noktaları

Kayıt noktası, bir işlemin içindeki bir konumu işaretler, böylece işin yalnızca bir kısmını geri alabilirsiniz:

BEGIN;
UPDATE accounts SET balance = balance - 50 WHERE id = 1;
SAVEPOINT bonus;
UPDATE accounts SET balance = balance + 999 WHERE id = 2;
ROLLBACK TO bonus;
UPDATE accounts SET balance = balance + 50 WHERE id = 2;
COMMIT;

-- Asha | 650
-- Ben  | 550

İşlemin geri kalanı devam edip taahhüt edilirken 999 bonusu geri alındı. Bu, uzun bir süreçteki isteğe bağlı adımlar için kullanışlıdır.

ASİT özellikleri açıklandı

Mülkiyet söz Bizim transferimizde
Atomiklik Ya hep ya hiç Her iki güncelleme de gerçekleşir veya ikisi de gerçekleşmez
Tutarlılık Kurallar daha sonra da geçerlidir Hiçbir bakiye CHECK kuralını ihlal edemez
izolasyon Eşzamanlı çalışma müdahale etmez Diğerleri yarım kalmış bir transfer görmüyor
Dayanıklılık Taahhüt edilen veriler başarısızlıktan kurtulur COMMIT‘den sonra elektrik kesintisi hiçbir şey kaybetmez

Tutarlılık genellikle yanlış anlaşılır. Veritabanı, kısıtlamalar ve yabancı anahtarlar gibi yalnızca sizin bildirdiğiniz kuralları uygular. Kodunuzun yanlış tutarı aktarmasını engellemez. Dayanıklılık genellikle, değişikliklerin onaylanmadan önce diske güvenli bir şekilde kaydedildiği bir yazma öncesi günlüğü ile sağlanır.

Eşzamanlı işlemlerde ne olur?

Bir SQLite dosyasına iki bağlantı açtık. İlki bir işlem başlattı ve henüz taahhütte bulunmadan bir satırı 1’den 2’ye güncelledi. İşte ikinci bağlantının gördüğü şey:

Connection B reads:   1                     -- no uncommitted data
Connection B writes:  database is locked    -- it has to wait
(A commits)
Connection B reads:   2                     -- now it sees the change

SQLite aynı anda yalnızca bir yazıcıya izin verir; bu, birçok işlemin aynı anda farklı satırları yazabildiği sunucu veritabanlarından daha basittir. Ancak prensip aynıdır: normal ayarlar altında diğer oturumlarda kaydedilmemiş değişiklikler görülmemelidir ve çakışan yazma işlemlerinin beklenmesi gerekir. Testimizde ikinci bağlantıyı beklemek yerine hemen vazgeçecek şekilde ayarladık, böylece hata hemen ortaya çıktı.

Anormallikleri okuma

İşlemler çakıştığında bazı sorunlar ortaya çıkabilir. SQL standardı bunları bir işlemin gözlemleyebileceği şeyler açısından tanımlar:

anormallik Ne olur?
Kirli okuma Başka bir işlemin gerçekleştirmediği bir değişikliği okuyorsunuz ve bu değişiklik daha sonra geri alınabiliyor
Tekrarlanamayan okuma Bir işlemde bir satırı iki kez okursunuz ve farklı değerler alırsınız, çünkü biri arada işlem yapar
Hayalet okuma Aynı sorguyu iki kez çalıştırdığınızda fazladan veya eksik satırlar elde edersiniz, çünkü birisi bazı satırları eklemiş veya silmiştir.

Diğer bir sorun ise güncellemenin kaybolmasıdır. İki oturumda 100’lük bir bakiye okunur, her biri 10 ekler ve her biri 110 yazar. Cevabın 120 olması gerekirken bir güncelleme etkili bir şekilde ortadan kayboldu.

SQL izolasyon seviyeleri

Yalıtım düzeyleri, eşzamanlılık için katılığı değiştirmenize olanak tanır. SQL standardının her seviyede izin verdiği şeyler şunlardır:

Seviye Kirli okuma Tekrarlanamayan okuma Hayalet okuma
Taahhüt edilmemiş olanı oku Mümkün Mümkün Mümkün
Taahhüt edileni oku Önlendi Mümkün mümkün
Tekrarlanabilir okuma Önlendi Önlendi Mümkün
Serileştirilebilir Önlendi Önlendi Önlendi
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

Tam sözdizimi ve davranış veritabanınıza bağlıdır. Varsayılanlar da farklılık gösterir: PostgreSQL ve SQL Server okuma kararlılığını kullanırken, MySQL’in InnoDB’si tekrarlanabilir okuma kullanır. Bazı veritabanları standardın gerektirdiğinden daha güçlü garantiler verir veya bir düzeyi diğeri gibi ele alır. Örneğin PostgreSQL’de, kaydedilmemiş okuma, okuma işlemine tabi tutulmuş gibi davranır. Belirli bir davranışa güvenmeden önce daima veritabanınızın belgelerini okuyun.

İpucu: Kayıp bir güncelleme için, değişikliği UPDATE accounts SET balance = balance + 10‘de olduğu gibi tek bir ifadeyle yapın. Başvurunuzda hesaplamayı daha önce okuyarak yapmak, boşluğu açan şeydir.

Kilitlenmeler

İki işlemin her biri diğerinin ihtiyaç duyduğu kilidi tuttuğunda kilitlenme meydana gelir. İşlem A, 1. satırı kilitler ve 2. satırı ister, B işlemi ise 2. satırı kilitler ve 1. satırı ister. İkisi de devam edemez.

PostgreSQL, MySQL ve SQL Server gibi veritabanları bunu algılıyor ve bir işlemi hatayla iptal ediyor. Bu normal bir davranıştır ve başvurunuzun buna göre hazırlanması gerekir. Kilitlenmeleri azaltmak için satırları her zaman tutarlı bir sırayla güncelleyin; örneğin en düşük hesap kimliğinin önce gelmesi, işlemleri kısa tutması ve kurban olarak biri seçildiğinde yeniden denemesi.

En iyi uygulamalar

  • İşlemleri kısa tutun. Uzun olanlar kilitleri tutar ve diğer kullanıcıları engeller.
  • Asla bir işlemin içinde bir kullanıcıyı veya yavaş bir API’yi beklemeyin. Bu işi başlamadan önce veya daha sonra yapın.
  • Her zaman başarısızlığı ele alın. Her yol bir işleme veya geri alma işlemiyle bitmelidir.
  • Kısıtlamalar ekleyin. Veritabanına uygulanması gereken gerçek kurallar verirler. İyi masa tasarımı da yardımcı olur.
  • İyi dizinler kullanın. Daha hızlı aramalar, kilitlerin daha kısa süre boyunca tutulduğu anlamına gelir.
  • Yeniden denemelerde dikkatli olun. Kilitlenmelerde yeniden deneyin, ancak bir işlemin iki kez uygulanamayacağından emin olun.
  • Eşzamanlılığı bilerek test edin. Bu hataların birçoğu yalnızca yük altında ortaya çıktığı için, temel entegrasyon testleri tek başına bunları ortaya çıkarmayabilir.

Son sözler

İşlemler birkaç riskli adımı tek bir güvenli operasyona dönüştürür ve ACID bunu güvenilir kılan garantileri açıklar. Bir iş eylemi birden fazla sıra veya tabloya dokunduğunda, yarı yolda kalırsa ne olacağını kendinize sorun. Cevap sizi endişelendiriyorsa bunu bir işlemle tamamlayın. Pratik yapmak için yerel bir veritabanında iki oturum açın ve anormallikleri kendiniz üretmeye çalışın.

Sık sorulan sorular

SQL’de işlem nedir?

İşlem, tek bir birim olarak ele alınan bir grup SQL ifadesidir. COMMIT ile ya hepsi kaydedilir ya da ROLLBACK ile hepsi geri alınır.

Veritabanındaki ASİT özellikleri nelerdir?

ASİT atomiklik, tutarlılık, izolasyon ve dayanıklılık anlamına gelir. Birlikte, işlemlerin ya hep ya hiç olmasını, kuralların bozulmamasını, müdahale edilmemesini ve başarısızlıklardan kurtulmasını sağlarlar.

COMMIT ve ROLLBACK arasındaki fark nedir?

COMMIT, işlemde yapılan tüm değişiklikleri kalıcı olarak kaydeder. ROLLBACK bunları iptal eder ve verileri işlem başlamadan önceki durumuna döndürür.

Kirli okuma nedir?

Kirli okuma, bir işlemin diğer bir işlemin henüz gerçekleştirmediği değişiklikleri okumasıdır. Diğer işlem geri alınırsa, okunan veriler hiçbir zaman gerçekten var olmadı.

Hangi izolasyon seviyesini kullanmalıyım?

Veritabanınızın varsayılan değeriyle başlayın; bu genellikle iyidir. Anormalliklerin kabul edilemez olduğu kritik mantık için serileştirilebilirliği kullanın ve başarısız işlemleri yeniden denemeye hazır olun.

Öğrenmeye devam et

Stack Quora ile çalışın

Test, WordPress veya SEO konusunda yardıma mı ihtiyacınız var?

Ekiplerin daha iyi yazılımlar sunmasına ve sitelerini büyütmesine yardımcı oluyoruz. Bize ne üzerinde çalıştığınızı söyleyin, biz de bir sonraki adım için net bir öneride bulunalım.

Okumaya devam et

Daha fazla kılavuz test, yapay zeka ve modern geliştirme

Bu makaleyi beğendiniz mi? Bir konu seçin ve doğrudan en yeni eğitimlerimize geçin.

Yapay zekâ

Yapay Zeka Halüsinasyonları Açıklandı: Dil Modelleri Neden İşleri Düzeltiyor ve Nasıl Azaltılabilir?

Yapay zeka halüsinasyonları açıkladı: ne olduklarını, dil modellerinin bunları neden ürettiğini, yaygın türlerini, temellendirme ve yönlendirmelerle…

Makaleyi okuyun →
DevOps

Açıklanan Ortam Değişkenleri: .env Dosyaları, Sırlar ve Yapılandırma Doğru Yapıldı

Çalıştırdığımız Python örnekleriyle açıklanan ortam değişkenleri: bunları okumak ve ayarlamak, neden her değerin bir dize olduğu, .env dosyaları, sü…

Makaleyi okuyun →
Yazılım geliştirme

API Hız Sınırlamasının Açıklaması: Algoritmalar, Başlıklar ve 429 Hatalarının Ele Alınması

API hızı sınırlaması, çalıştırdığımız bir simülasyonla açıklanmıştır: belirteç kümesi, sabit pencere, kayan pencere, 429 yanıt, hız sınırı başlıklar…

Makaleyi okuyun →
Test otomasyonu

Python'da alay etme: Unittest.mock, patch ve Testleri Yalan Yapan Hatalar

Unittest.mock ile Python'da alay etme, test edildi: Sahte ve dönüş_değeri, yan_etki, bir adın kullanıldığı yerde yama uygulama, spesifikasyon ve oto…

Makaleyi okuyun →
Yazılım testi

Kod Kapsamının Açıklaması: Hat ve Şube Kapsamı ve %100'ün Gerçek Anlamı

Kod kapsamı gerçek bir kapsama.py çalışmasıyla açıklanmıştır: hat, şube ve durum kapsamı, bir raporun okunması, %100 kapsamın neden hâlâ hataları ka…

Makaleyi okuyun →
Veritabanları ve SQL

SQL'de DELETE vs TRUNCATE vs DROP: Farklılıklar, Geri Alma ve Her Biri Ne Zaman Kullanılmalı

DELETE vs TRUNCATE vs DROP test edilmiş SQL ile açıklandı: her birinin neyi kaldırdığı, geri aldığı, tetiklediği, kimlik sıfırlaması, hızı ve Postgr…

Makaleyi okuyun →
Veritabanları ve SQL

Açıklanan SQL Görünümleri: Örneklerle Tuzakları Oluşturun, Kullanın ve Önleyin

Çalıştırdığımız sorgularla açıklanan SQL görünümleri: görünüm oluşturma, canlı sonuçlar, sütunları gizleme, performans, güncellenebilir ve gerçekleş…

Makaleyi okuyun →
Yazılım geliştirme

TypeScript Arayüzü ve Tür: Gerçek Farklılıklar, Derleyiciyle Test Edildi

TypeScript arayüzü ve türü, gerçek derleyiciyle kontrol edildi: her ikisinin de yapabileceği, yalnızca birinin yapabileceği, bildirim birleştirme, g…

Makaleyi okuyun →
Yazılım geliştirme

Python *args ve **kwargs'ın Açıklaması: Açık Örneklerle Esnek Fonksiyonlar

Python *args ve **kwargs çalıştırdığımız kodla açıklanmıştır: paketleme ve paketten çıkarma, parametre sırası, yalnızca anahtar kelime ve yalnızca k…

Makaleyi okuyun →
Yazılım geliştirme

Python Lambda İşlevleri: Söz Dizimi, Gerçek Kullanımlar ve Ne Zaman Kullanılmaması Gerektiği

Çalıştırdığımız kodla açıklanan Python lambda işlevleri: sözdizimi, anahtarla sıralama, harita ve filtre, kapatmalar, geç bağlama tuzağı ve normal b…

Makaleyi okuyun →
Yapay zekâ

Yapay Zeka Ajanları Nelerdir? Çalıştırabileceğiniz Basit Bir Aracı Döngüsüyle Nasıl Çalışırlar?

Yapay zeka ajanları nedir? Aracı döngüsüne, araçlara, belleğe ve korkuluklara ilişkin basit bir kılavuz, çalıştırdığımız küçük bir Python döngüsü, g…

Makaleyi okuyun →
DevOps

İzleme ve Gözlemlenebilirlik: Günlükler, Metrikler ve İzlerle Gerçek Fark

İzleme ve gözlemlenebilirliğin açıklanması: bilinen ve bilinmeyen arızalar, günlükler, ölçümler ve izler, ödeme olayının gözden geçirilmesi, altın s…

Makaleyi okuyun →
DevOps

Docker Birimleri ve Bağlama Bağlantıları: Konteyner Verilerini Doğru Şekilde Kalıcılaştırın

Docker birimleri ile bağlama bağlamaları arasındaki karşılaştırma açıklandı: kapsayıcı verilerinin neden kaybolduğu, adlandırılmış birimler, bağlama…

Makaleyi okuyun →
Test otomasyonu

TDD ve BDD: Temel Farklılıklar, Her İki Şekilde Geliştirilmiş Bir Özellik ve Her Birinin Ne Zaman Kullanılacağı

TDD ve BDD, her iki yönde de oluşturulmuş bir indirim özelliğiyle açıklandı: çalıştırdığımız kodla kırmızı-yeşil-refactor, Verilen-Ne Zaman-O Zaman …

Makaleyi okuyun →
Yazılım testi

Kullanıcı Kabul Testi (UAT): Süreç, Kontrol Listesi ve Gerçek Örnekler

Kullanıcı kabul testi açıklandı: bunu kimin yürüttüğü, QA'dan farkı, yedi adımlı bir süreç, bir UAT test senaryosu şablonu, bir kontrol listesi, otu…

Makaleyi okuyun →
Veritabanları ve SQL

Açıklanan SQL NULL Değerleri: IS NULL, COALESCE, NULLIF ve Kaçınılması Gereken Tuzaklar

SQL NULL değerleri, çalıştırdığımız sorgularla açıklandı: üç değerli mantık, IS NULL, COALESCE, NULLIF, toplamaların, birleştirmelerin ve sıralamanı…

Makaleyi okuyun →
Veritabanları ve SQL

SQL CASE WHEN İfadesi: Sözdizimi, Gerçek Örnekler ve Yaygın Hatalar

SQL CASE WHEN çalıştırdığımız sorgularla açıkladı: basit ve aranmış formlar, koşul sırası, SUM'lu pivotlar, COUNT hileleri, özel sıralama, güncellem…

Makaleyi okuyun →
Yazılım geliştirme

JWT Nedir? JSON Web Belirteçleri Bir Çalışma Örneğiyle Açıklanıyor

JWT nedir? JSON Web Tokens açıkladı: üç bölüm, çalıştırdığımız kodda oluşturulan ve üzerinde değişiklik yapılan bir token, JWT ile oturumlar, depola…

Makaleyi okuyun →
Yazılım geliştirme

JavaScript Olay Döngüsü Açıklaması: Örneklerle Çağrı Yığını, Mikro Görevler ve Zamanlayıcılar

JavaScript olay döngüsü çalıştırdığımız kodla açıklandı: çağrı yığını, görev ve mikro görev kuyrukları, setTimeout 0'ın neden anında olmadığı, engel…

Makaleyi okuyun →
Yazılım geliştirme

Python Jeneratörleri ve Verim Açıklaması: Gerçek Örneklerle Bellekten Tasarruf Edin

Python üreteçleri ve verim, çalıştırdığımız kodla açıklandı: nasıl duraklatılır ve devam ettirilir, ölçülen bellek tasarrufları, işlem hatları, sons…

Makaleyi okuyun →
Yapay zekâ

Gömmeler Nelerdir? Vektörler ve Kosinüs Benzerliği Basitçe Açıklandı

Gömmeler nedir? Vektörler, kosinüs benzerliği ve anlamsal aramaya ilişkin sade dilli bir kılavuz; çalıştırdığımız küçük bir örnek, yaygın kullanımla…

Makaleyi okuyun →
DevOps

Mavi-Yeşil ve Kanarya Konuşlandırılması: Farklılıklar, Takaslar ve Nasıl Seçilir

Mavi-yeşil ve kanarya konuşlandırması açıklandı: her birinin nasıl çalıştığı, maliyet, risk ve geri alma, test ettiğimiz istikrarlı kullanıcı grubu,…

Makaleyi okuyun →
Test otomasyonu

Kesintili Testler: Bunların Sebepleri ve Nasıl Düzeltileceği

Yaptığımız demolarla açıklanan hatalı testler: ana nedenler, birinin nasıl doğrulanacağı ve teşhis edileceği, zamanlama için uygun düzeltmeler, payl…

Makaleyi okuyun →
Yazılım testi

Yük Testi ve Stres Testi: Farklılıklar, Metrikler ve k6 Örnekleri

Yük testi ve stres testinin açıklaması: her birinin neyi kanıtladığı, ani yükselme ve soğuma testleri, önemli ölçümler, ortalamaların neden yanıltıc…

Makaleyi okuyun →
Yazılım testi

Test Senaryosu ve Test Senaryosu: Temel Farklılıklar, Örnekler ve Her Biri Ne Zaman Kullanılmalı?

Test senaryosu ve test senaryosunun açıklaması: net tanımlar, yan yana tablo, senaryolardan vakalara, şablonlara ve her birinin ne zaman kullanılaca…

Makaleyi okuyun →
Veritabanları ve SQL

SQL Sorgu Optimizasyonu: Zamanlamalarla Yürütme Planlarını Okuyun ve Yavaş Sorguları Düzeltin

SQL sorgu optimizasyonu bir milyon satırda test edilmiştir: yürütme planlarını okuyun, doğru dizinleri ekleyin, değiştirilemeyen filtreleri düzeltin…

Makaleyi okuyun →
Veritabanları ve SQL

SQL UNION ve UNION ALL: Farklılıklar, Örnekler ve Test Edilmiş Performans

SQL UNION ve UNION ALL, yürüttüğümüz sorgularla açıklandı: kopyalar, her ikisinin de takip ettiği kurallar, gerçek bir veri hatası, ölçülen performa…

Makaleyi okuyun →
Yazılım geliştirme

JavaScript Fetch API Eğitimi: GET, POST, Hata İşleme ve Zaman Aşımları

Yerel bir sunucuya karşı test edilen bir JavaScript Fetch API öğreticisi: GET ve POST, 404'ün neden atmadığı, yeniden kullanılabilir bir yardımcı, s…

Makaleyi okuyun →
Yazılım geliştirme

Python Dosya İşleme: Örneklerle Okuma, Yazma, CSV, JSON ve pathlib

Python dosya işleme, çalıştırdığımız kodla açıklanmıştır: açık modlar, büyük dosyaları okuma, CSV, JSON, pathlib, ikili dosyalar, güvenli yazma, hat…

Makaleyi okuyun →
Yazılım geliştirme

Python Sınıfları ve Nesneleri: Gerçek Örneklerle OOP Eğitimi

Çalıştırdığımız kodla açıklanan Python sınıfları ve nesneleri: __init__, yöntemler, sınıf ve örnek nitelikleri, kalıtım, özellikler, dunder yöntemle…

Makaleyi okuyun →
Yapay zekâ

Büyük Dil Modeli Nedir? Yüksek Lisans'ların Nasıl Çalıştığı, Abartmadan Açıklanıyor

Büyük dil modeli nedir? LLM'ler sade bir dille açıklandı: belirteçler, yerleştirmeler, dikkat, eğitim, sıcaklık ve bağlam pencereleri, küçük bir son…

Makaleyi okuyun →
DevOps

Yeni Başlayanlar İçin Linux Komutları: Örneklerle Temel Terminal Kılavuzu

Yeni başlayanlar için göreve göre gruplandırılmış Linux komutları: pratik bir günlük analizi örneğiyle gezinme, dosyalar, günlükleri görüntüleme, gr…

Makaleyi okuyun →
Test otomasyonu

Selenyum ve Oyun Yazarı: Temel Farklılıklar, Karşılaştırılan Kod ve Hangisinin Seçileceği

Selenium ve Playwright karşılaştırması: mimari, bekleme, tarayıcı ve dil desteği, hata ayıklama, her iki araçta da aynı test, geçiş tavsiyesi ve nas…

Makaleyi okuyun →
Yazılım testi

Eşdeğerlik Bölümleme: Test Tasarımı Tekniğinin Çalışılmış Örneklerle Açıklanması

Eşdeğerlik bölümlemenin açıklaması: geçerli ve geçersiz bölümlerin nasıl bulunacağı, yaşlara yönelik çalışılmış örnekler, şifreler ve kuponlar, yürü…

Makaleyi okuyun →
Yazılım testi

Yazılım Testinde Şiddet ve Öncelik: Farklılıklar, Matris ve Gerçek Örnekler

Yazılım testinde önem ve önceliğin açıklanması: net tanımlar, örnekler içeren dört yönlü bir matris, seviye ölçekleri, her birini kimin belirlediği …

Makaleyi okuyun →
Veritabanları ve SQL

SQL Alt Sorguları Eğitimi: Türler, İlişkili Alt Sorgular ve Örneklerle EXISTS

Çalıştırdığımız sorguları içeren bir SQL alt sorgu eğitimi: skaler, IN, FROM ve SELECT alt sorguları, ilişkili alt sorgular, EXISTS, NOT IN NULL tuz…

Makaleyi okuyun →
Veritabanları ve SQL

SQL İşlemleri ve ACID Açıklaması: COMMIT, ROLLBACK ve İzolasyon Seviyeleri

SQL işlemleri ve ACID, yürüttüğümüz bir banka transferiyle açıklandı: COMMIT, ROLLBACK, kayıt noktaları, kilitler, izolasyon seviyeleri, kirli okuma…

Makaleyi okuyun →
Yazılım geliştirme

Git merge vs rebase: farklar, örnekler ve hangisi ne zaman kullanılır

Git merge vs rebase; gerçek log çıktısı, karşılaştırma tablosu, rebase'in altın kuralı ve güvenli bir ekip iş akışıyla anlatılıyor.

Makaleyi okuyun →
Yazılım geliştirme

Python Liste Üreteci (List Comprehension): Sözdizimi, Örnekler ve Kaçınılacak Durumlar

Python list comprehension anlatımı: sözdizimi, filtreleme, if-else, iç içe döngüler, ölçülmüş süreler ve düz for döngüsünün daha iyi olduğu durumlar.

Makaleyi okuyun →
Veritabanları ve SQL

SQL JOIN Örneklerle Açıklama (Inner, Left, Right, Full)

SQL JOIN'leri örnek tablolar ve sorgularla adım adım öğrenin: INNER, LEFT, RIGHT, FULL, CROSS ve SELF; yaygın hatalar ve performans ipuçları.

Makaleyi okuyun →