[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:database\u002Fjunior":4,"config":216},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ı","junior","","tr",1651,2475,[7,13,14],"mid","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,163,176,189,202],{"id":132,"topic":18,"difficulty":133,"body":134,"options":135,"correct_key":143,"explanation":148},"019f56bb-b5c7-70ae-abb8-056c412d2983",1,"Veritabanı yedeği (backup) almanın temel amacı nedir?",[136,139,142,145],{"key":137,"text":138},"a","Sık erişilen satırları bellek-içi bir cache katmanında tutarak okuma sorgularını hızlandırmak",{"key":140,"text":141},"b","Gelen okuma trafiğini birden çok veritabanı sunucusuna eşit dağıtmak",{"key":143,"text":144},"c","Donanım arızası, yanlışlıkla silme veya bozulmadan sonra veriyi kurtarmak",{"key":146,"text":147},"d","İlişkili parent\u002Fchild tablolar arası referential integrity'yi otomatik zorunlu kılmak","Backup'ın var oluş amacı, arızalardan (disk çökmesi, insan hatası, yazılım bug'ı, ransomware) sonra kaybolan\u002Fbozulan veriyi geri yüklemektir. Cache (a) ve yük dağıtımı (b) performans konusudur; integrity kısıtları (d) ise backup'la değil şema ile sağlanır.",{"id":150,"topic":18,"difficulty":151,"body":152,"options":153,"correct_key":140,"explanation":162},"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?",[154,156,158,160],{"key":137,"text":155},"Replica sadece okuma yaptığı için kaybolan veriyi ondan geri kopyalayamazsın",{"key":140,"text":157},"Yanlışlıkla yapılan bir DELETE veya bozulma standby'a da replike olur ve iki kopya birden yok olur",{"key":143,"text":159},"Replication primary'nin o kadar gerisinden gelir ki standby'da hiç işe yarar güncel veri kalmaz",{"key":146,"text":161},"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":164,"topic":18,"difficulty":151,"body":165,"options":166,"correct_key":146,"explanation":175},"019f56bb-b5c8-7241-a51f-90497ec12844","Incremental ve differential backup arasındaki fark nedir?",[167,169,171,173],{"key":137,"text":168},"İkisi tamamen aynı tekniğin iki farklı adıdır",{"key":140,"text":170},"Incremental, son full backup'tan bu yana her şeyi kopyalar; differential ise yalnızca en yeni değişiklikleri kopyalar",{"key":143,"text":172},"Incremental yalnızca bir full backup'ı takip edebilir; differential ise yalnızca başka bir differential'ı takip edebilir",{"key":146,"text":174},"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":177,"topic":18,"difficulty":151,"body":178,"options":179,"correct_key":137,"explanation":188},"019f56bb-b5c8-786d-a1d8-2bdb9bde3514","Her gece sıfırdan full backup almak yerine 'haftalık full + gecelik incremental' stratejisi temelde neyi takas eder?",[180,182,184,186],{"key":137,"text":181},"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":183},"Daha yavaş gecelik backup'lar karşılığında hiçbir commit edilmiş verinin asla kaybolmayacağı garantisi",{"key":143,"text":185},"Fazladan depolama kullanımı karşılığında veritabanını herhangi bir tek saniyeye geri döndürebilme",{"key":146,"text":187},"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":190,"topic":18,"difficulty":151,"body":191,"options":192,"correct_key":140,"explanation":201},"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?",[193,195,197,199],{"key":137,"text":194},"Logical backup ham disk dosyalarını ve blokları kopyalar; physical backup ise SQL ifadeleri üretir",{"key":140,"text":196},"Logical backup veriyi SQL ya da taşınabilir bir format olarak dışa aktarır; physical backup ise ham dosyaları kopyalar",{"key":143,"text":198},"Logical backup yalnızca şema tanımını alabilir, tablo verisinin gerçek satırlarını asla alamaz",{"key":146,"text":200},"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":203,"topic":18,"difficulty":204,"body":205,"options":206,"correct_key":146,"explanation":215},"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?",[207,209,211,213],{"key":137,"text":208},"Physical dosya kopyası, çünkü ham veri dosyaları versiyonlar ve CPU mimarileri arasında her zaman uyumludur",{"key":140,"text":210},"Hiçbiri işe yaramaz — veri sunucular arasında yalnızca önce streaming replication kurularak taşınır",{"key":143,"text":212},"İkisi de burada eşdeğerdir, çünkü backup formatının platformlar arası taşınabilirlikle ilgisi yoktur",{"key":146,"text":214},"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.",{"fields":217,"seniorities":392,"interview_shapes":393,"locales":398,"oauth":400,"question_count":403,"coach_enabled":404,"jd_match_enabled":404},[218,243,263,279,303,316,325,344,366,373,379,386],{"key":219,"name_tr":220,"name_en":220,"sort":133,"specializations":221},"backend","Backend",[222,225,228,231,234,237,240],{"key":223,"name":224,"field":219},"general","Genel",{"key":226,"name":227,"field":219},"go","Go",{"key":229,"name":230,"field":219},"python","Python",{"key":232,"name":233,"field":219},"java","Java",{"key":235,"name":236,"field":219},"csharp","C#\u002F.NET",{"key":238,"name":239,"field":219},"nodejs","Node.js",{"key":241,"name":242,"field":219},"php","PHP",{"key":244,"name_tr":245,"name_en":245,"sort":151,"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":204,"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":219},{"key":229,"name":230,"field":219},{"key":232,"name":233,"field":219},{"key":235,"name":236,"field":219},{"key":238,"name":239,"field":219},{"key":241,"name":242,"field":219},{"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},[7,13,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]