[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:data-engineer\u002Fdata-pipeline-design":4,"config":126},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":9,"spec_key":7,"spec_name":7,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":40,"samples":41},"data-engineer","Data Engineer","","data-pipeline-design","Data Pipeline Design","tr",75,600,[14,15,16],"junior","mid","senior",[18,21,24,27,28,31,34,37],{"key":19,"name":20,"count":11},"data-governance-lineage","Data Governance Lineage",{"key":22,"name":23,"count":11},"data-modeling-warehousing","Data Modeling Warehousing",{"key":25,"name":26,"count":11},"data-partitioning-scaling","Data Partitioning Scaling",{"key":8,"name":9,"count":11},{"key":29,"name":30,"count":11},"data-pipeline-orchestration","Data Pipeline Orchestration",{"key":32,"name":33,"count":11},"data-pipeline-reliability","Data Pipeline Reliability",{"key":35,"name":36,"count":11},"data-quality-validation","Data Quality Validation",{"key":38,"name":39,"count":11},"streaming-fundamentals","Streaming Fundamentals",[],[42,60,73,86,100,113],{"id":43,"topic":9,"difficulty":44,"body":45,"options":46,"correct_key":51,"explanation":59},"019f6a40-d6fc-720d-979d-a2953797f612",1,"Bir ETL pipeline'ında veri dönüşümü, yükleme adımına göre hangi aşamada gerçekleşir?",[47,50,53,56],{"key":48,"text":49},"a","Dönüşüm, veri hedef sisteme yüklendikten sonra gerçekleşir",{"key":51,"text":52},"b","Dönüşüm, veri hedef sisteme ulaşmadan önce gerçekleşir",{"key":54,"text":55},"c","Dönüşüm yalnızca kaynak şema değişirse gerçekleşir",{"key":57,"text":58},"d","Dönüşüm tamamen atlanır ve ham veri olduğu gibi yüklenir","ETL, Extract-Transform-Load anlamına gelir: veri, hedef sisteme ulaşmadan önce ayrı bir işleme adımında dönüştürülür. Bu, dönüşümün yüklemeden SONRA hedef sistemin içinde gerçekleştiği ELT'den temel farkıdır.",{"id":61,"topic":9,"difficulty":44,"body":62,"options":63,"correct_key":57,"explanation":72},"019f6a40-d6fc-7d8c-9978-7095359f7337","Hedef sistem güçlü bir analitik veritabanı olduğunda bir ekip neden ETL yerine ELT'yi tercih edebilir; asıl pratik sebep nedir?",[64,66,68,70],{"key":48,"text":65},"ELT, herhangi bir veri doğrulaması yapma ihtiyacını ortadan kaldırır",{"key":51,"text":67},"ELT, kaynak sistemin şemasının asla değişmeyeceğini garanti eder",{"key":54,"text":69},"ELT, kaynaktan veri çekme ihtiyacını tamamen ortadan kaldırır",{"key":57,"text":71},"ELT, ağır dönüşümleri hedefin gücüyle işler","ELT, ham veriyi önce yükler ve dönüşüm işini hedef sisteme aktarır; böylece büyük ölçekli dönüşümler için ayrı bir dönüşüm katmanında ağır iş yapmak yerine hedef sistemin kendi işlem gücünden yararlanılır.",{"id":74,"topic":9,"difficulty":44,"body":75,"options":76,"correct_key":48,"explanation":85},"019f6a40-d6fd-786a-bab6-ea1b2a17dcea","Bir pipeline adımının \"idempotent\" olması ne anlama gelir?",[77,79,81,83],{"key":48,"text":78},"Aynı girdiyle tekrar tekrar çalıştırmak, tek seferle aynı sonucu verir",{"key":51,"text":80},"Belirli bir veri kümesi için yalnızca tam olarak bir kez çalıştırılabilir",{"key":54,"text":82},"Başarılı olana kadar kendini otomatik olarak yeniden dener",{"key":57,"text":84},"Girdi ne olursa olsun asla hata üretmez","Idempotency, aynı girdiyle tekrarlanan çalıştırmaların sistemi tek bir çalıştırmayla aynı duruma bırakması demektir — tekrar eden satır yok, çift sayılmış toplam yok. Yeniden deneme mekanizması ya da hatasızlık hakkında bir şey söylemez, adımın tekrar çalıştırılmasını da yasaklamaz.",{"id":87,"topic":9,"difficulty":88,"body":89,"options":90,"correct_key":54,"explanation":99},"019f6a40-d6fe-73c0-9c7e-0b869543665f",2,"Gece çalışan bir pipeline, dünkü siparişleri yüklerken yarı yolda hata veriyor. Bir mühendis işi baştan sona yeniden çalıştırıyor. Bunun güvenli olması neden yalnızca yükleme adımı idempotent ise mümkündür?",[91,93,95,97],{"key":48,"text":92},"Çünkü yeniden çalıştırmak pipeline'ı ikinci seferde her zaman daha hızlı yapar",{"key":51,"text":94},"Çünkü idempotency, kaynak sistemin değişmeyeceğini garanti eder",{"key":54,"text":96},"Çünkü idempotency olmadan, hatadan önce yüklenmiş satırlar mükerrer hale gelir",{"key":57,"text":98},"Çünkü idempotency, veriyi tekrar çekme ihtiyacını ortadan kaldırır","Yükleme adımı, hata vermeden önce dünkü siparişlerin bir kısmını zaten eklemişse ve idempotent değilse, baştan yeniden çalıştırma bu aynı satırları tekrar ekler; bu da mükerrer kayıtlara ve şişmiş toplamlara yol açar. Idempotent bir yükleme (kavramsal olarak upsert benzeri davranış) tam yeniden çalıştırmayı güvenli kılar.",{"id":101,"topic":9,"difficulty":44,"body":102,"options":103,"correct_key":51,"explanation":112},"019f6a40-d6ff-72f2-bcf6-2f818cec1003","Bir kaynak sistemden yapılan tam (full) extract ile artımlı (incremental) extract arasındaki temel fark nedir?",[104,106,108,110],{"key":48,"text":105},"Tam extract yalnızca son çalıştırmadan beri değişen satırları çeker, artımlı extract her şeyi çeker",{"key":51,"text":107},"Tam extract her seferinde her şeyi çeker, artımlı extract yalnızca değişen satırları çeker",{"key":54,"text":109},"Tam extract, bir kaynak tablo için yaşamı boyunca yalnızca bir kez kullanılabilir",{"key":57,"text":111},"Anlamlı bir fark yoktur, ikisi de her zaman aynı satır sayısını döndürür","Tam extract, her çalıştırmada ne değişmiş olursa olsun kaynak veri kümesinin tamamını yeniden okur. Artımlı extract ise yalnızca önceki çalıştırmadan bu yana yeni veya değişmiş satırları belirleyip çeker; bu, büyük ve yavaş değişen tablolar için daha ucuzdur.",{"id":114,"topic":9,"difficulty":88,"body":115,"options":116,"correct_key":48,"explanation":125},"019f6a40-d6ff-7a7f-b50d-ff494a6b8521","Herhangi bir araca atıfta bulunmadan, change-data-capture tarzı extraction'ın kavramsal özü nedir?",[117,119,121,123],{"key":48,"text":118},"Kaynakta yalnızca değişen satırları tespit edip çekmek",{"key":51,"text":120},"Doğruluğu iki kez kontrol etmek için dönüşüm mantığını iki kere çalıştırmak",{"key":54,"text":122},"Extract edildikten sonra kaynak sistemdeki eski veriyi silmek",{"key":57,"text":124},"Ne değişmiş olursa olsun her extract'i tam bir anlık görüntü (snapshot) olarak saklamak","Change-data-capture tarzı extraction, her seferinde tüm kaynak veri kümesini yeniden taramak yerine, son extraction'dan bu yana hangi satırların değiştiğini (eklendi, güncellendi, silindi) belirleyip yalnızca o farkı çekmekle ilgilidir.",{"fields":127,"seniorities":311,"interview_shapes":312,"locales":317,"oauth":319,"question_count":322,"coach_enabled":323,"jd_match_enabled":323},[128,153,173,190,214,227,246,265,287,294,298,305],{"key":129,"name_tr":130,"name_en":130,"sort":44,"specializations":131},"backend","Backend",[132,135,138,141,144,147,150],{"key":133,"name":134,"field":129},"general","Genel",{"key":136,"name":137,"field":129},"go","Go",{"key":139,"name":140,"field":129},"python","Python",{"key":142,"name":143,"field":129},"java","Java",{"key":145,"name":146,"field":129},"csharp","C#\u002F.NET",{"key":148,"name":149,"field":129},"nodejs","Node.js",{"key":151,"name":152,"field":129},"php","PHP",{"key":154,"name_tr":155,"name_en":155,"sort":88,"specializations":156},"frontend","Frontend",[157,158,161,164,167,170],{"key":133,"name":134,"field":154},{"key":159,"name":160,"field":154},"javascript","JavaScript",{"key":162,"name":163,"field":154},"typescript","TypeScript",{"key":165,"name":166,"field":154},"react","React",{"key":168,"name":169,"field":154},"vue","Vue",{"key":171,"name":172,"field":154},"angular","Angular",{"key":174,"name_tr":175,"name_en":175,"sort":176,"specializations":177},"fullstack","Fullstack",3,[178,179,180,181,182,183,184,185,186,187,188,189],{"key":133,"name":134,"field":174},{"key":136,"name":137,"field":129},{"key":139,"name":140,"field":129},{"key":142,"name":143,"field":129},{"key":145,"name":146,"field":129},{"key":148,"name":149,"field":129},{"key":151,"name":152,"field":129},{"key":159,"name":160,"field":154},{"key":162,"name":163,"field":154},{"key":165,"name":166,"field":154},{"key":168,"name":169,"field":154},{"key":171,"name":172,"field":154},{"key":191,"name_tr":192,"name_en":192,"sort":193,"specializations":194},"devops-cloud","DevOps \u002F Cloud",4,[195,196,199,202,205,208,211],{"key":133,"name":134,"field":191},{"key":197,"name":198,"field":191},"aws","AWS",{"key":200,"name":201,"field":191},"gcp","GCP",{"key":203,"name":204,"field":191},"azure","Azure",{"key":206,"name":207,"field":191},"kubernetes","Kubernetes",{"key":209,"name":210,"field":191},"terraform","Terraform",{"key":212,"name":213,"field":191},"linux","Linux",{"key":215,"name_tr":216,"name_en":216,"sort":217,"specializations":218},"ai-engineer","AI Engineer",5,[219,220,221,224],{"key":133,"name":134,"field":215},{"key":139,"name":140,"field":215},{"key":222,"name":223,"field":215},"llm-rag","LLM\u002FRAG",{"key":225,"name":226,"field":215},"mlops","MLOps",{"key":228,"name_tr":229,"name_en":230,"sort":231,"specializations":232},"database","Veritabanı","Database",6,[233,234,237,240,243],{"key":133,"name":134,"field":228},{"key":235,"name":236,"field":228},"postgresql","PostgreSQL",{"key":238,"name":239,"field":228},"mysql","MySQL",{"key":241,"name":242,"field":228},"mongodb","MongoDB",{"key":244,"name":245,"field":228},"redis","Redis",{"key":247,"name_tr":248,"name_en":249,"sort":250,"specializations":251},"mobile","Mobil","Mobile",7,[252,253,256,259,262],{"key":133,"name":134,"field":247},{"key":254,"name":255,"field":247},"ios-swift","iOS (Swift)",{"key":257,"name":258,"field":247},"android-kotlin","Android (Kotlin)",{"key":260,"name":261,"field":247},"flutter","Flutter",{"key":263,"name":264,"field":247},"react-native","React Native",{"key":266,"name_tr":267,"name_en":268,"sort":269,"specializations":270},"security","Güvenlik","Security",8,[271,272,275,278,281,284],{"key":133,"name":134,"field":266},{"key":273,"name":274,"field":266},"appsec","AppSec",{"key":276,"name":277,"field":266},"offensive-pentest","Offensive \u002F Pentest",{"key":279,"name":280,"field":266},"cloud-security","Cloud Security",{"key":282,"name":283,"field":266},"devsecops","DevSecOps",{"key":285,"name":286,"field":266},"blue-team-incident","Blue Team \u002F Incident",{"key":288,"name_tr":289,"name_en":290,"sort":291,"specializations":292},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[293],{"key":133,"name":134,"field":288},{"key":5,"name_tr":6,"name_en":6,"sort":295,"specializations":296},10,[297],{"key":133,"name":134,"field":5},{"key":299,"name_tr":300,"name_en":301,"sort":302,"specializations":303},"game-dev","Oyun Geliştirme","Game Development",11,[304],{"key":133,"name":134,"field":299},{"key":306,"name_tr":307,"name_en":307,"sort":308,"specializations":309},"ml-engineer","ML Engineer",12,[310],{"key":133,"name":134,"field":306},[14,15,16],{"junior":313,"mid":315,"senior":316},{"questions":314,"median_sec":3},20,{"questions":314,"median_sec":3},{"questions":314,"median_sec":3},[10,318],"en",[320,321],"google","github",21750,true]