[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:database\u002Fmid":4,"config":215},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":8,"spec_key":8,"spec_name":8,"locale":9,"cell_total":10,"field_total":11,"seniorities":12,"topics":15,"specs":116,"samples":130},"database","Veritabanı","mid","","tr",2066,2475,[13,7,14],"junior","senior",[16,20,23,26,29,32,35,38,41,44,47,50,53,56,59,62,65,68,71,74,77,80,83,86,89,92,95,98,101,104,107,110,113],{"key":17,"name":18,"count":19},"backup-recovery","Backup Recovery",75,{"key":21,"name":22,"count":19},"data-modeling","Data Modeling",{"key":24,"name":25,"count":19},"indexing","Indexing",{"key":27,"name":28,"count":19},"mongodb-aggregation","Mongodb Aggregation",{"key":30,"name":31,"count":19},"mongodb-indexes-queries","Mongodb Indexes Queries",{"key":33,"name":34,"count":19},"mongodb-operations","Mongodb Operations",{"key":36,"name":37,"count":19},"mongodb-replication-sharding","Mongodb Replication Sharding",{"key":39,"name":40,"count":19},"mongodb-schema-modeling","Mongodb Schema Modeling",{"key":42,"name":43,"count":19},"mongodb-transactions-consistency","Mongodb Transactions Consistency",{"key":45,"name":46,"count":19},"mysql-indexes","Mysql Indexes",{"key":48,"name":49,"count":19},"mysql-innodb-transactions","Mysql Innodb Transactions",{"key":51,"name":52,"count":19},"mysql-operations","Mysql Operations",{"key":54,"name":55,"count":19},"mysql-query-optimization","Mysql Query Optimization",{"key":57,"name":58,"count":19},"mysql-replication-scaling","Mysql Replication Scaling",{"key":60,"name":61,"count":19},"mysql-types-constraints","Mysql Types Constraints",{"key":63,"name":64,"count":19},"nosql-models","Nosql Models",{"key":66,"name":67,"count":19},"performance-tuning","Performance Tuning",{"key":69,"name":70,"count":19},"pg-indexes","Pg Indexes",{"key":72,"name":73,"count":19},"pg-mvcc-vacuum","Pg Mvcc Vacuum",{"key":75,"name":76,"count":19},"pg-operations","Pg Operations",{"key":78,"name":79,"count":19},"pg-query-planning","Pg Query Planning",{"key":81,"name":82,"count":19},"pg-transactions-locking","Pg Transactions Locking",{"key":84,"name":85,"count":19},"pg-types-constraints","Pg Types Constraints",{"key":87,"name":88,"count":19},"query-optimization","Query Optimization",{"key":90,"name":91,"count":19},"redis-cluster-sharding","Redis Cluster Sharding",{"key":93,"name":94,"count":19},"redis-data-structures","Redis Data Structures",{"key":96,"name":97,"count":19},"redis-expiration-eviction","Redis Expiration Eviction",{"key":99,"name":100,"count":19},"redis-persistence","Redis Persistence",{"key":102,"name":103,"count":19},"redis-replication-sentinel","Redis Replication Sentinel",{"key":105,"name":106,"count":19},"redis-transactions-scripting","Redis Transactions Scripting",{"key":108,"name":109,"count":19},"replication-scaling","Replication Scaling",{"key":111,"name":112,"count":19},"security-access","Security Access",{"key":114,"name":115,"count":19},"transactions-isolation","Transactions Isolation",[117,121,124,127],{"key":118,"name":119,"count":120},"mongodb","MongoDB",450,{"key":122,"name":123,"count":120},"mysql","MySQL",{"key":125,"name":126,"count":120},"postgresql","PostgreSQL",{"key":128,"name":129,"count":120},"redis","Redis",[131,149,162,175,188,202],{"id":132,"topic":18,"difficulty":133,"body":134,"options":135,"correct_key":140,"explanation":148},"019f56bb-b5c7-78a4-b334-e6fb18fc1954",2,"Bir ekip, primary veritabanını senkron bir replica ile çalıştırıyor ve şöyle diyor: 'Backup'a gerek yok — replica zaten yedeğimiz.' Bu mantık neden tehlikelidir?",[136,139,142,145],{"key":137,"text":138},"a","Replica sadece okuma yaptığı için kaybolan veriyi ondan geri kopyalayamazsın",{"key":140,"text":141},"b","Yanlışlıkla yapılan bir DELETE veya bozulma standby'a da replike olur ve iki kopya birden yok olur",{"key":143,"text":144},"c","Replication primary'nin o kadar gerisinden gelir ki standby'da hiç işe yarar güncel veri kalmaz",{"key":146,"text":147},"d","Replica veriyi sıkıştırılmış bir formatta tutar ve tekrar bir veritabanına çevrilemez","Replication değişiklikleri sadakatle kopyalar — yıkıcı olanlar dahil. Yanlış bir DELETE, hatalı WHERE'li bir UPDATE ya da bozulma saniyeler içinde replica'ya gider; iki kopya birlikte kaybolur. Backup, geri dönebileceğin bir noktadaki kopyadır; replica değildir. Okuma (a), lag (c) ve format (d) esas sebep değildir.",{"id":150,"topic":18,"difficulty":133,"body":151,"options":152,"correct_key":146,"explanation":161},"019f56bb-b5c8-7241-a51f-90497ec12844","Incremental ve differential backup arasındaki fark nedir?",[153,155,157,159],{"key":137,"text":154},"İkisi tamamen aynı tekniğin iki farklı adıdır",{"key":140,"text":156},"Incremental, son full backup'tan bu yana her şeyi kopyalar; differential ise yalnızca en yeni değişiklikleri kopyalar",{"key":143,"text":158},"Incremental yalnızca bir full backup'ı takip edebilir; differential ise yalnızca başka bir differential'ı takip edebilir",{"key":146,"text":160},"Incremental, herhangi bir türdeki son backup'tan sonra değişeni; differential ise son full backup'tan sonra değişeni kopyalar","Incremental backup yalnızca bir önceki backup'tan (full ya da incremental) sonra değişeni alır; bu yüzden restore, full'ün üstüne her incremental'i sırayla oynatmayı gerektirir. Differential, son full backup'tan sonra değişen her şeyi alır; restore için full + en son differential yeter. (b) şıkkı iki tanımı yer değiştirmiş verir.",{"id":163,"topic":18,"difficulty":133,"body":164,"options":165,"correct_key":137,"explanation":174},"019f56bb-b5c8-786d-a1d8-2bdb9bde3514","Her gece sıfırdan full backup almak yerine 'haftalık full + gecelik incremental' stratejisi temelde neyi takas eder?",[166,168,170,172],{"key":137,"text":167},"Daha hızlı ve küçük gecelik backup'lar karşılığında, full'ün üstüne her incremental'i oynatan daha yavaş bir restore",{"key":140,"text":169},"Daha yavaş gecelik backup'lar karşılığında hiçbir commit edilmiş verinin asla kaybolmayacağı garantisi",{"key":143,"text":171},"Fazladan depolama kullanımı karşılığında veritabanını herhangi bir tek saniyeye geri döndürebilme",{"key":146,"text":173},"Daha basit bir kurulum karşılığında motorun her backup'ı otomatik off-site bir konuma kopyalaması","Incremental'ler her gece çok daha az yazar (daha hızlı, küçük) ama kurtarma son full'den başlayıp her incremental'i sırayla oynatmak zorundadır — daha çok adım, daha çok süre ve zincirin bir halkasının eksik olma riski. Sıfır kayıp (b) ya da saniye seviyesinde kurtarma (c) garantisi vermez; onlar ayrı konudur.",{"id":176,"topic":18,"difficulty":133,"body":177,"options":178,"correct_key":140,"explanation":187},"019f56bb-b5c9-7014-8ba2-4ee6d27b804f","```bash\npg_dump mydb > mydb.sql\n```\nBu komut bir *logical* backup üretir. Logical backup, *physical* backup'tan nasıl ayrılır?",[179,181,183,185],{"key":137,"text":180},"Logical backup ham disk dosyalarını ve blokları kopyalar; physical backup ise SQL ifadeleri üretir",{"key":140,"text":182},"Logical backup veriyi SQL ya da taşınabilir bir format olarak dışa aktarır; physical backup ise ham dosyaları kopyalar",{"key":143,"text":184},"Logical backup yalnızca şema tanımını alabilir, tablo verisinin gerçek satırlarını asla alamaz",{"key":146,"text":186},"Physical backup yalnızca veritabanında hiç açık istemci bağlantısı yokken çalışabilir","Logical backup (pg_dump \u002F mysqldump gibi) veriyi taşınabilir ifadeler olarak yeniden kurar; farklı bir versiyona ya da platforma restore edilebilir. Physical backup ham veri dosyalarını ve blokları kopyalar — çok büyük veritabanlarında daha hızlıdır ama aynı motor yerleşimine bağlıdır. (a) şıkkı ikisini ters çevirir.",{"id":189,"topic":18,"difficulty":190,"body":191,"options":192,"correct_key":146,"explanation":201},"019f56bb-b5c9-7662-ba9f-69f3afa36dd6",3,"Bir veritabanını, *farklı bir major versiyonda* ve *farklı bir CPU mimarisinde* çalışan bir sunucuya taşıman gerekiyor.\n```bash\n# seçenek A (physical): ham veri dosyalarını kopyala\n# seçenek B (logical): pg_dump olddb | psql -h newhost newdb\n```\nGenelde hangisi daha güvenli ve neden?",[193,195,197,199],{"key":137,"text":194},"Physical dosya kopyası, çünkü ham veri dosyaları versiyonlar ve CPU mimarileri arasında her zaman uyumludur",{"key":140,"text":196},"Hiçbiri işe yaramaz — veri sunucular arasında yalnızca önce streaming replication kurularak taşınır",{"key":143,"text":198},"İkisi de burada eşdeğerdir, çünkü backup formatının platformlar arası taşınabilirlikle ilgisi yoktur",{"key":146,"text":200},"Logical SQL dump, çünkü taşınabilirdir ve farklı bir versiyona ya da platforma yeniden yüklenebilir","Physical backup, major versiyonlar ve mimariler arasında değişebilen motor-içi dosya formatlarını kopyalar; başka yere restore etmek kırılgandır. Logical dump ise motorun okuyabildiği SQL\u002Fveridir; versiyonlar ve platformlar arası taşımanın standart aracı tam da bu yüzden odur. Replication (b) kopyaları senkron tutar ama migration için ön koşul değildir.",{"id":203,"topic":18,"difficulty":133,"body":204,"options":205,"correct_key":143,"explanation":214},"019f56bb-b5ca-77d2-82f1-35689ffca73a","İş birimi diyor ki: 'En kötü durumda en fazla 5 dakikalık veri kaybını tolere edebiliriz.' Bu ifade hangi gereksinimi belirler?",[206,208,210,212],{"key":137,"text":207},"Her zamanlanmış backup işi 5 dakikalık bir çalışma penceresinde bitmelidir",{"key":140,"text":209},"Bir arızadan sonra veritabanı 5 dakika içinde tamamen online olmalıdır",{"key":143,"text":211},"Değişiklikler, en fazla 5 dakikalık veri kurtarılamaz kalacak sıklıkta yakalanmalıdır",{"key":146,"text":213},"Her backup dosyası, sistem silmeden önce en az 5 dakika saklanmalıdır","'En fazla 5 dakikalık veri kaybı' bir RPO'dur. Değişiklikleri ne sıklıkta yakaladığını kısıtlar — örneğin transaction log'u birkaç dakikada bir göndermek. (b) veri kaybını değil kesinti süresini (RTO) tarif eder; (a) ve (d) RPO'yu backup süresi ve saklama süresiyle karıştırır.",{"fields":216,"seniorities":392,"interview_shapes":393,"locales":398,"oauth":400,"question_count":403,"coach_enabled":404,"jd_match_enabled":404},[217,243,263,279,303,316,325,344,366,373,379,386],{"key":218,"name_tr":219,"name_en":219,"sort":220,"specializations":221},"backend","Backend",1,[222,225,228,231,234,237,240],{"key":223,"name":224,"field":218},"general","Genel",{"key":226,"name":227,"field":218},"go","Go",{"key":229,"name":230,"field":218},"python","Python",{"key":232,"name":233,"field":218},"java","Java",{"key":235,"name":236,"field":218},"csharp","C#\u002F.NET",{"key":238,"name":239,"field":218},"nodejs","Node.js",{"key":241,"name":242,"field":218},"php","PHP",{"key":244,"name_tr":245,"name_en":245,"sort":133,"specializations":246},"frontend","Frontend",[247,248,251,254,257,260],{"key":223,"name":224,"field":244},{"key":249,"name":250,"field":244},"javascript","JavaScript",{"key":252,"name":253,"field":244},"typescript","TypeScript",{"key":255,"name":256,"field":244},"react","React",{"key":258,"name":259,"field":244},"vue","Vue",{"key":261,"name":262,"field":244},"angular","Angular",{"key":264,"name_tr":265,"name_en":265,"sort":190,"specializations":266},"fullstack","Fullstack",[267,268,269,270,271,272,273,274,275,276,277,278],{"key":223,"name":224,"field":264},{"key":226,"name":227,"field":218},{"key":229,"name":230,"field":218},{"key":232,"name":233,"field":218},{"key":235,"name":236,"field":218},{"key":238,"name":239,"field":218},{"key":241,"name":242,"field":218},{"key":249,"name":250,"field":244},{"key":252,"name":253,"field":244},{"key":255,"name":256,"field":244},{"key":258,"name":259,"field":244},{"key":261,"name":262,"field":244},{"key":280,"name_tr":281,"name_en":281,"sort":282,"specializations":283},"devops-cloud","DevOps \u002F Cloud",4,[284,285,288,291,294,297,300],{"key":223,"name":224,"field":280},{"key":286,"name":287,"field":280},"aws","AWS",{"key":289,"name":290,"field":280},"gcp","GCP",{"key":292,"name":293,"field":280},"azure","Azure",{"key":295,"name":296,"field":280},"kubernetes","Kubernetes",{"key":298,"name":299,"field":280},"terraform","Terraform",{"key":301,"name":302,"field":280},"linux","Linux",{"key":304,"name_tr":305,"name_en":305,"sort":306,"specializations":307},"ai-engineer","AI Engineer",5,[308,309,310,313],{"key":223,"name":224,"field":304},{"key":229,"name":230,"field":304},{"key":311,"name":312,"field":304},"llm-rag","LLM\u002FRAG",{"key":314,"name":315,"field":304},"mlops","MLOps",{"key":5,"name_tr":6,"name_en":317,"sort":318,"specializations":319},"Database",6,[320,321,322,323,324],{"key":223,"name":224,"field":5},{"key":125,"name":126,"field":5},{"key":122,"name":123,"field":5},{"key":118,"name":119,"field":5},{"key":128,"name":129,"field":5},{"key":326,"name_tr":327,"name_en":328,"sort":329,"specializations":330},"mobile","Mobil","Mobile",7,[331,332,335,338,341],{"key":223,"name":224,"field":326},{"key":333,"name":334,"field":326},"ios-swift","iOS (Swift)",{"key":336,"name":337,"field":326},"android-kotlin","Android (Kotlin)",{"key":339,"name":340,"field":326},"flutter","Flutter",{"key":342,"name":343,"field":326},"react-native","React Native",{"key":345,"name_tr":346,"name_en":347,"sort":348,"specializations":349},"security","Güvenlik","Security",8,[350,351,354,357,360,363],{"key":223,"name":224,"field":345},{"key":352,"name":353,"field":345},"appsec","AppSec",{"key":355,"name":356,"field":345},"offensive-pentest","Offensive \u002F Pentest",{"key":358,"name":359,"field":345},"cloud-security","Cloud Security",{"key":361,"name":362,"field":345},"devsecops","DevSecOps",{"key":364,"name":365,"field":345},"blue-team-incident","Blue Team \u002F Incident",{"key":367,"name_tr":368,"name_en":369,"sort":370,"specializations":371},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[372],{"key":223,"name":224,"field":367},{"key":374,"name_tr":375,"name_en":375,"sort":376,"specializations":377},"data-engineer","Data Engineer",10,[378],{"key":223,"name":224,"field":374},{"key":380,"name_tr":381,"name_en":382,"sort":383,"specializations":384},"game-dev","Oyun Geliştirme","Game Development",11,[385],{"key":223,"name":224,"field":380},{"key":387,"name_tr":388,"name_en":388,"sort":389,"specializations":390},"ml-engineer","ML Engineer",12,[391],{"key":223,"name":224,"field":387},[13,7,14],{"junior":394,"mid":396,"senior":397},{"questions":395,"median_sec":3},20,{"questions":395,"median_sec":3},{"questions":395,"median_sec":3},[9,399],"en",[401,402],"google","github",21750,true]