Sütun Tabanlı Depolama Analitik Sorguları Nasıl Uçuruyor?

Bir milyar satış kaydının yalnızca toplam gelirini hesaplamak istediğinizi düşünün. Satır tabanlı bir sistem her kaydın ürün, müşteri, adres ve açıklama gibi ilgisiz alanlarını da okuyabilir. Sütun tabanlı depolama ise doğrudan gelir sütununa gider. Analitik sorguların göz açıp kapayıncaya kadar bitmesinin temelinde bu seçicilik yatar.

sutun-tabanli-depolama-60

Devamı...

Sorgu Optimizasyonu ve Execution Plan Okuma Sanatı

Bir SQL sorgusunun çalışması, garsona sipariş vermeye benzer: ne istediğinizi söylersiniz, fakat mutfakta hangi adımların izleneceğine şef karar verir. Veritabanındaki bu şef query optimizer, hazırladığı tarif ise execution plan olarak adlandırılır. Performans sorunlarını çözmek için yalnızca SQL yazmak değil, bu tarifi okuyup şefin neden o yolu seçtiğini anlamak gerekir.

Devamı...

RAG Mimarisi: Dil Modeline Güvenilir Kaynaklar Vermek

rag-mimarisi-dil-85

Büyük dil modelleri etkileyici yanıtlar üretir; ancak eğitim verileri güncel olmayabilir, kurumsal belgeleri bilmeyebilir ve bazen son derece özgüvenli biçimde yanlış bilgi verebilir. RAG (Retrieval Augmented Generation), modeli yeniden eğitmeden ona ilgili kaynakları sağlayarak bu sorunları azaltan bir mimaridir. Kısacası RAG, sınava yalnızca hafızasıyla giren bir öğrenciye açık kitap hakkı vermeye benzer.

Devamı...

QUIC Protokolü: HTTP/3, TCP’yi Nasıl Geride Bırakmayı Planlıyor?

Web’in hız sınırlarını yalnızca daha güçlü sunucular veya küçültülmüş JavaScript dosyaları belirlemiyor. Tarayıcı ile sunucu arasındaki bağlantının nasıl kurulduğu da performansın başrol oyuncularından biri. QUIC, onlarca yıldır internetin omurgasında çalışan TCP’nin bazı kronik sorunlarını aşmak için UDP üzerinde geliştirilen modern bir taşıma protokolü; HTTP/3 ise onun web dünyasındaki en önemli yolcusu.

Devamı...

OAuth 2.0 ve JWT’nin İç İşleyişi: Oturum Açmak Aslında Ne Demek?

Bir uygulamada “Google ile giriş yap” düğmesine bastığımızda birkaç saniye içinde hesabımıza ulaşırız. Perdenin arkasındaysa yönlendirmeler, izinler, kriptografik imzalar ve süreli anahtarlar çalışır. Üstelik OAuth 2.0 doğrudan bir oturum açma protokolü değildir! Gelin kimlik doğrulama ile yetkilendirme arasındaki sis perdesini kaldıralım.

Devamı...

MVCC Mantığı: Veritabanında Zaman Yolculuğu

mvcc-mantigi-veritabaninda-11

Bir veritabanında aynı anda yüzlerce kullanıcı okuma ve yazma işlemi yaptığında işler kolayca trafik kavgasına dönüşebilir. MVCC, yani Çoklu Sürüm Eşzamanlılık Kontrolü, bu trafiği herkesi tek şeride sokmadan yönetir. Temel fikir şaşırtıcı derecede eğlencelidir: Bir satır değiştirildiğinde eski hâlini hemen yok etmek yerine farklı sürümler saklanır. Böylece okuyucular geçmişteki tutarlı görüntüyü incelerken yazarlar yeni sürüm üzerinde çalışabilir.

Devamı...

Load Balancing Algoritmaları: Round Robin’den En Az Bağlantıya

Bir uygulama büyüdüğünde tek bir sunucu, gelen isteklerin ağırlığı altında terlemeye başlayabilir. Load balancer, bu noktada trafiği birden fazla sunucuya dağıtan akıllı bir trafik polisi gibi çalışır. Fakat bütün trafik polisleri aynı yöntemi kullanmaz: bazıları sırayla yönlendirir, bazıları sunucuların gücünü hesaba katar, bazılarıysa o anda en az meşgul olanı seçer.

Devamı...

Homomorfik Şifreleme: Veriyi Görmeden Hesaplama Sanatı

Bir bulut sunucusunun verilerinizi hiç görmeden maaş ortalaması hesapladığını, tıbbi kayıtlarınızı okumadan hastalık riski tahmin ettiğini düşünün. Kulağa sihir gibi gelse de homomorfik şifreleme tam olarak bunu hedefler: Veriler şifreli kalırken üzerlerinde matematiksel işlemler yapılabilir. Sunucu yalnızca anlamsız görünen şifreli değerlerle uğraşır; sonucu anlamlı hâle getirebilen tek taraf, gizli anahtarın sahibidir.

homomorfik-sifreleme-veriyi-91

Devamı...

Fuzzing ile Otomatik Zafiyet Keşfi: Yazılımı Rastgele Verilerle Sınamak

fuzzing-ile-otomatik-35

Bir uygulamanın beklenmedik girdiler karşısında nasıl davranacağını elle sınamak, samanlıkta iğne aramaya benzeyebilir. Fuzzing ise samanlığı otomatik olarak karıştırır: programa bozuk, sıra dışı veya rastgele girdiler gönderir; çökme, kilitlenme ve bellek ihlali gibi belirtileri yakalar. Böylece geliştiricilerin aklına gelmeyen uç durumlar, saldırganlardan önce keşfedilebilir.

Devamı...

Embedding Geometrisi: Kelimeler Vektör Uzayında Neden Yakınlaşır?

Bir dil modeli için “kedi”, tüylü bir canlıdan önce yüzlerce sayıdan oluşan bir listedir. Buna rağmen “kedi” ile “köpek” birbirine yakın, “kedi” ile “matkap” ise genellikle uzaktır. Bu durum sihir değil; kelimelerin kullanıldıkları bağlamlardan öğrenilen geometrik bir düzendir. Gelin, kelimelerin anlamlarını koordinatlara nasıl dönüştürdüğünü inceleyelim.

Devamı...

DNS Çözümleme Süreci: Alan Adından IP Adresine Yolculuk

dns-cozumleme-sureci-93

Tarayıcıya example.com yazdığınızda bilgisayarınızın bu ismin hangi sunucuyu temsil ettiğini öğrenmesi gerekir. Çünkü ağ cihazları alan adlarıyla değil, 93.184.216.34 gibi IP adresleriyle iletişim kurar. DNS (Domain Name System), internetin telefon rehberi gibi çalışarak insanların hatırlayabildiği isimleri makinelerin kullandığı adreslere dönüştürür.

Devamı...

CDN Mimarisi: İçerik Neden En Yakın Sunucudan Gelir?

Bir web sitesini açtığınızda görsellerin, videoların ve JavaScript dosyalarının kıtalar arası uzun bir yolculuğa çıkmasını istemezsiniz. CDN, yani İçerik Dağıtım Ağı, popüler içerikleri dünyanın farklı bölgelerindeki sunuculara kopyalayarak kullanıcıya yakın bir noktadan teslim eder. Ancak buradaki “yakınlık” yalnızca kilometre hesabı değildir; ağ gecikmesi, yönlendirme kalitesi, sunucu yükü ve erişilebilirlik de seçimi etkiler.

cdn-mimarisi-icerik-74

Devamı...

Buffer Overflow’un Anatomisi: Bellek Sınırları Aşıldığında Ne Olur?

Bir programa “Şu kutuya en fazla 16 bayt koyabilirsin” dediğimizi, ardından 40 bayt veri gönderdiğimizi düşünelim. Güvenli bir dil taşan kısmı reddedebilir; C veya C++ gibi düşük seviyeli dillerdeyse veri komşu bellek alanlarına doğru ilerleyebilir. İşte buffer overflow, yani tampon taşması, ayrılan bellek sınırlarının dışına veri yazılmasıdır. Sonuç basit bir çökmeden program akışının değiştirilmesine kadar uzanabilir.

Devamı...

BGP Yönlendirme Mantığı: İnternetin Omurgasında Yollar Nasıl Seçilir?

bgp-yonlendirme-mantigi-35

Bir web sitesini açtığınızda paketleriniz hedefe dümdüz gitmez; farklı operatörlerin, veri merkezlerinin ve ülkelerin ağlarından geçebilir. Bu devasa trafik koreografisini yöneten temel protokollerden biri BGP’dir (Border Gateway Protocol). Ancak BGP, navigasyon uygulamaları gibi yalnızca en kısa yolu aramaz. Ekonomik anlaşmaları, ağ politikalarını ve operatör tercihlerini de hesaba katar. Kısacası internette yol seçmek biraz matematik, biraz diplomasi, biraz da “bu trafiği komşuma vermeyeyim” sanatıdır.

Devamı...

ASLR ve DEP: İşletim Sistemlerinin Exploit’lere Karşı Görünmez Zırhı

Bir programın belleğinde taşma hatası bulmak, saldırgan için eskiden kilidi açık bir kapı keşfetmeye benzeyebilirdi. Ancak modern işletim sistemleri artık bu kapının arkasına hareketli koridorlar ve yalnızca okunabilen odalar yerleştiriyor. ASLR adresleri tahmin edilemez hâle getirirken DEP veriyi kod olarak çalıştırmayı engelliyor. Bu mekanizmalar yazılım hatalarını ortadan kaldırmaz; hataların güvenilir biçimde istismar edilmesini zorlaştırır.

Devamı...

Tutarlı Hashleme: Sunucular Değişirken Veriyi Yerinde Tutma Sanatı

tutarli-hashleme-sunucular-46

Dağıtık bir sistemde yeni sunucu eklemek güzel haberdir; ta ki milyonlarca anahtarın başka sunuculara taşınması gerekene kadar! Tutarlı hashleme, yani consistent hashing, sunucu sayısı değiştiğinde verilerin yalnızca küçük bir bölümünü yeniden eşleyerek bu karmaşayı yönetir. Özellikle dağıtık önbellekler, veritabanları ve içerik dağıtım ağlarında sistemin büyümesini daha az sancılı hâle getirir.

Devamı...

Ters Kinematik: Robot Koluna Hedefi Göster, Açıları O Bulsun

Bir robot koluna “şu noktaya uzan” demek kolaydır; asıl mesele, motorların bunu gerçekleştirmek için kaç derece dönmesi gerektiğini bulmaktır. Ters kinematik, hedef konumdan yola çıkarak eklem açılarını hesaplayan yöntemlerin genel adıdır. Endüstriyel robotlardan oyun karakterlerine kadar uzanan bu konu, geometri ile programlamanın keyifli bir buluşmasıdır.

ters-kinematik-robot-91

Devamı...

Sürü Robotiği: Basit Kurallardan Kolektif Zekâya

Bir karınca tek başına yol planlama konusunda pek etkileyici görünmeyebilir; ancak binlerce karınca birlikte yiyeceğe giden verimli yollar oluşturabilir. Sürü robotiği de benzer bir fikirden beslenir: Çok sayıda görece basit robot, merkezi bir yönetici olmadan etkileşime girerek karmaşık görevleri tamamlar. İşin büyüsü, kolektif zekânın robotlara ayrı ayrı programlanmaması; yerel kuralların etkileşiminden kendiliğinden ortaya çıkmasıdır.

Devamı...

SLAM Temelleri: Robotlar Bilmedikleri Ortamların Haritasını Nasıl Çıkarır?

Bir robotu daha önce hiç görmediği bir odaya bıraktığımızı düşünelim. Elinde mimari plan, GPS veya duvarların nerede olduğunu söyleyen sihirli bir pusula yok. Buna rağmen hem nerede bulunduğunu anlaması hem de çevresinin haritasını çıkarması gerekiyor. İşte SLAM (Simultaneous Localization and Mapping), yani Eş Zamanlı Konumlandırma ve Haritalama, bu tavuk-yumurta problemini çözmeye çalışır.

slam-temelleri-robotlar-24

Devamı...

ROS Mimarisine Giriş: Düğümler, Konular ve Servislerle Robotları Konuşturmak

Bir robotun kamerası görüntü üretirken motorları hareket eder, sensörleri çevreyi ölçer ve karar mekanizması bütün bu verileri yorumlar. Tüm bileşenleri tek bir dev programda toplamak mümkün olsa da bakım yapmak kısa sürede kablo yumağı çözmeye dönüşür. ROS, yani Robot Operating System, robot yazılımını küçük ve bağımsız parçalara ayırarak bu karmaşayı yönetilebilir hâle getiren bir iletişim ve araçlar ekosistemidir.

Devamı...