[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:database\u002Fredis-persistence":4,"config":214},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":115,"samples":129},"database","Veritabanı","","redis-persistence","Redis Persistence","tr",75,2475,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96,99,100,103,106,109,112],{"key":19,"name":20,"count":11},"backup-recovery","Backup Recovery",{"key":22,"name":23,"count":11},"data-modeling","Data Modeling",{"key":25,"name":26,"count":11},"indexing","Indexing",{"key":28,"name":29,"count":11},"mongodb-aggregation","Mongodb Aggregation",{"key":31,"name":32,"count":11},"mongodb-indexes-queries","Mongodb Indexes Queries",{"key":34,"name":35,"count":11},"mongodb-operations","Mongodb Operations",{"key":37,"name":38,"count":11},"mongodb-replication-sharding","Mongodb Replication Sharding",{"key":40,"name":41,"count":11},"mongodb-schema-modeling","Mongodb Schema Modeling",{"key":43,"name":44,"count":11},"mongodb-transactions-consistency","Mongodb Transactions Consistency",{"key":46,"name":47,"count":11},"mysql-indexes","Mysql Indexes",{"key":49,"name":50,"count":11},"mysql-innodb-transactions","Mysql Innodb Transactions",{"key":52,"name":53,"count":11},"mysql-operations","Mysql Operations",{"key":55,"name":56,"count":11},"mysql-query-optimization","Mysql Query Optimization",{"key":58,"name":59,"count":11},"mysql-replication-scaling","Mysql Replication Scaling",{"key":61,"name":62,"count":11},"mysql-types-constraints","Mysql Types Constraints",{"key":64,"name":65,"count":11},"nosql-models","Nosql Models",{"key":67,"name":68,"count":11},"performance-tuning","Performance Tuning",{"key":70,"name":71,"count":11},"pg-indexes","Pg Indexes",{"key":73,"name":74,"count":11},"pg-mvcc-vacuum","Pg Mvcc Vacuum",{"key":76,"name":77,"count":11},"pg-operations","Pg Operations",{"key":79,"name":80,"count":11},"pg-query-planning","Pg Query Planning",{"key":82,"name":83,"count":11},"pg-transactions-locking","Pg Transactions Locking",{"key":85,"name":86,"count":11},"pg-types-constraints","Pg Types Constraints",{"key":88,"name":89,"count":11},"query-optimization","Query Optimization",{"key":91,"name":92,"count":11},"redis-cluster-sharding","Redis Cluster Sharding",{"key":94,"name":95,"count":11},"redis-data-structures","Redis Data Structures",{"key":97,"name":98,"count":11},"redis-expiration-eviction","Redis Expiration Eviction",{"key":8,"name":9,"count":11},{"key":101,"name":102,"count":11},"redis-replication-sentinel","Redis Replication Sentinel",{"key":104,"name":105,"count":11},"redis-transactions-scripting","Redis Transactions Scripting",{"key":107,"name":108,"count":11},"replication-scaling","Replication Scaling",{"key":110,"name":111,"count":11},"security-access","Security Access",{"key":113,"name":114,"count":11},"transactions-isolation","Transactions Isolation",[116,120,123,126],{"key":117,"name":118,"count":119},"mongodb","MongoDB",450,{"key":121,"name":122,"count":119},"mysql","MySQL",{"key":124,"name":125,"count":119},"postgresql","PostgreSQL",{"key":127,"name":128,"count":119},"redis","Redis",[130,148,161,175,188,201],{"id":131,"topic":9,"difficulty":132,"body":133,"options":134,"correct_key":139,"explanation":147},"019f89ea-05dc-73b3-afb3-0eae561b1846",1,"Redis'te RDB persistence nedir?",[135,138,141,144],{"key":136,"text":137},"a","Her yazma komutunun gerçekleştiği anda bir dosyaya eklendiği bir log",{"key":139,"text":140},"b","Veri setinin belirli bir andaki binary snapshot'ı",{"key":142,"text":143},"c","Veriyi gerçek zamanlı olarak bir replica node'a kopyalayan bir replikasyon mekanizması",{"key":145,"text":146},"d","Verinin diske hiç yazılmadığı, yalnızca bellekte tutulduğu bir mod","RDB (Redis Database) persistence, tüm veri setinin belirli bir andaki durumunun kompakt, binary bir snapshot'ını üretir. Append-only bir komut logu değildir (o AOF'tur, seçenek a), replikasyon değildir (seçenek c) ve gerçekten diske yazar, bu yüzden d yanlıştır.",{"id":149,"topic":9,"difficulty":132,"body":150,"options":151,"correct_key":142,"explanation":160},"019f89ea-05dc-7d36-b040-eec80ebacfa3","Redis'te AOF (Append Only File) persistence nedir?",[152,154,156,158],{"key":136,"text":153},"Varsayılan olarak her saat alınan, veri setinin binary bir snapshot'ı",{"key":139,"text":155},"Bir replica'nın verisini master ile senkron tutan bir özellik",{"key":142,"text":157},"Alınan yazma işlemlerinin yeniden oynatılabilir logu",{"key":145,"text":159},"Disk kullanımını azaltmak için RDB dosyalarına uygulanan bir sıkıştırma formatı","AOF, alınan her yazma işlemini olduğu gibi kaydeder; restart'ta Redis veri setini yeniden kurmak için bu logu tekrar oynatır. Periyodik bir snapshot değildir (o RDB'dir, seçenek a), replikasyon değildir (seçenek b) ve bir sıkıştırma şeması değildir (seçenek d).",{"id":162,"topic":9,"difficulty":163,"body":164,"options":165,"correct_key":136,"explanation":174},"019f89ea-05dd-76b6-afcb-274d867e2f31",2,"Bir ekip production'daki büyük veri setine sahip bir Redis instance'ında doğrudan `SAVE` çalıştırıyor ve sunucunun birkaç saniye boyunca hiçbir komuta yanıt vermediğini fark ediyor. En olası açıklama nedir?",[166,168,170,172],{"key":136,"text":167},"`SAVE`, RDB'yi Redis'in ana thread'inde senkron yazar ve bitene kadar komut işlemeyi bloklar",{"key":139,"text":169},"`SAVE` büyük veri setlerinde her zaman sessizce başarısız olur ve donma tamamen ilgisiz bir network sorunundan kaynaklanır",{"key":142,"text":171},"`SAVE`, aslında sunucuyu bloklayan şey olan tam bir AOF rewrite tetikler",{"key":145,"text":173},"`SAVE` deprecated'dır ve modern Redis'te artık yoktur; bu yüzden komutun gözlemlenen gecikme dışında bir etkisi yoktur","`SAVE` ana thread'de çalışır ve snapshot yazımı bitene kadar diğer tüm komutları bloklar. `BGSAVE` ise snapshot'ı yazmak için bir child process fork eder, böylece parent process trafiğe hizmet vermeye devam eder. AOF rewrite (c) ayrı bir mekanizmadır ve `SAVE` hâlâ desteklenen gerçek bir komuttur (d).",{"id":176,"topic":9,"difficulty":163,"body":177,"options":178,"correct_key":145,"explanation":187},"019f89ea-05de-78fb-a424-b202761b4d73","`BGSAVE` neden snapshot'ı ana Redis process'inden yazmak yerine bir child process fork eder?",[179,181,183,185],{"key":136,"text":180},"Çünkü işletim sistemi herhangi bir dosya yazımı için fork yapılmasını zorunlu kılar",{"key":139,"text":182},"Çünkü child process, tüm platformlarda paralelliği garanti etmek için farklı bir CPU çekirdeğinde çalışır",{"key":142,"text":184},"Çünkü parent process hiçbir şekilde disk I\u002FO'ya erişemez",{"key":145,"text":186},"Böylece parent process, child veri setinin copy-on-write bellek görünümünü kullanarak snapshot'ı yazarken client komutlarına hizmet vermeye devam edebilir","Fork etmek, child process'in bellekte tutarlı bir copy-on-write snapshot almasını sağlarken parent'ın istekleri kesintisiz işlemeye devam etmesine olanak tanır. Bu genel yazımlar için bir OS zorunluluğu değildir (a), çekirdek yerleşimi garanti edilmez (b) ve parent kesinlikle disk I\u002FO yapabilir (c) — `SAVE`'in yaptığı tam olarak budur.",{"id":189,"topic":9,"difficulty":132,"body":190,"options":191,"correct_key":139,"explanation":200},"019f89ea-05df-79b0-8a69-4029882ea970","```\nappendonly yes\nappendfsync everysec\n```\n`appendfsync everysec` ayarı ne anlama gelir?",[192,194,196,198],{"key":136,"text":193},"Redis, her tek bir yazma komutundan sonra AOF dosyası üzerinde `fsync()` çağırır",{"key":139,"text":195},"Redis, AOF dosyası üzerinde en fazla saniyede bir kez `fsync()` çağırır ve aradaki yazmaları biriktirir",{"key":142,"text":197},"Redis hiçbir zaman `fsync()` çağırmaz ve tamamen işletim sisteminin kendi flush zamanlamasına güvenir",{"key":145,"text":199},"Redis tüm AOF dosyasını her saniye baştan yeniden yazar","`everysec`, disk sync'lerini yaklaşık saniyede bire indirger; bu, her yazmada sync yapmaya (`always`, seçenek a) göre çok daha iyi throughput sağlarken, bunu tamamen OS'ye bırakmaktan (`no`, seçenek c) çok daha öngörülebilir tutar, karşılığında küçük bir potansiyel veri kaybı penceresi (yaklaşık ~1 saniyelik yazma) alınır. Dosyanın tamamını her saniye yeniden yazmak (d) fsync'in yaptığı şey değildir — o AOF rewrite'tır, ayrı bir işlemdir.",{"id":202,"topic":9,"difficulty":163,"body":203,"options":204,"correct_key":142,"explanation":213},"019f89ea-05e0-7419-a4a0-a308d13a2e1f","Bir Redis instance'ı `appendonly yes` ve `appendfsync everysec` ile yapılandırılmış. Sunucu process'i bir elektrik kesintisi nedeniyle çöküyor. En kötü senaryoda Redis'in muhtemelen ne kadar veri kaybetmesi beklenir?",[205,207,209,211],{"key":136,"text":206},"Son RDB snapshot'ından bu yana tüm veri, potansiyel olarak saatler süren yazmalar",{"key":139,"text":208},"Hiçbir şey — `everysec` her türlü hata durumunda sıfır veri kaybını garanti eder",{"key":142,"text":210},"En son yaklaşık bir saniyelik yazmaya kadar veri",{"key":145,"text":212},"Yazma hacminden bağımsız olarak, tam olarak son tek bir yazma komutu","`everysec` ile yazmalar bufferlanır ve diske yaklaşık saniyede bir fsync edilir; bu yüzden bir çökme, son fsync'ten bu yana olan yazmaları kaybedebilir — yaklaşık ~1 saniyelik, sıfır değil (b) ve RDB snapshot aralıklarına bağlı da değil (a, bu yalnızca AOF devre dışıyken geçerli olurdu). Sabit tek bir komut da değildir (d) — bu bir komut sayısı değil, bir zaman penceresidir.",{"fields":215,"seniorities":391,"interview_shapes":392,"locales":397,"oauth":399,"question_count":402,"coach_enabled":403,"jd_match_enabled":403},[216,241,261,278,302,315,324,343,365,372,378,385],{"key":217,"name_tr":218,"name_en":218,"sort":132,"specializations":219},"backend","Backend",[220,223,226,229,232,235,238],{"key":221,"name":222,"field":217},"general","Genel",{"key":224,"name":225,"field":217},"go","Go",{"key":227,"name":228,"field":217},"python","Python",{"key":230,"name":231,"field":217},"java","Java",{"key":233,"name":234,"field":217},"csharp","C#\u002F.NET",{"key":236,"name":237,"field":217},"nodejs","Node.js",{"key":239,"name":240,"field":217},"php","PHP",{"key":242,"name_tr":243,"name_en":243,"sort":163,"specializations":244},"frontend","Frontend",[245,246,249,252,255,258],{"key":221,"name":222,"field":242},{"key":247,"name":248,"field":242},"javascript","JavaScript",{"key":250,"name":251,"field":242},"typescript","TypeScript",{"key":253,"name":254,"field":242},"react","React",{"key":256,"name":257,"field":242},"vue","Vue",{"key":259,"name":260,"field":242},"angular","Angular",{"key":262,"name_tr":263,"name_en":263,"sort":264,"specializations":265},"fullstack","Fullstack",3,[266,267,268,269,270,271,272,273,274,275,276,277],{"key":221,"name":222,"field":262},{"key":224,"name":225,"field":217},{"key":227,"name":228,"field":217},{"key":230,"name":231,"field":217},{"key":233,"name":234,"field":217},{"key":236,"name":237,"field":217},{"key":239,"name":240,"field":217},{"key":247,"name":248,"field":242},{"key":250,"name":251,"field":242},{"key":253,"name":254,"field":242},{"key":256,"name":257,"field":242},{"key":259,"name":260,"field":242},{"key":279,"name_tr":280,"name_en":280,"sort":281,"specializations":282},"devops-cloud","DevOps \u002F Cloud",4,[283,284,287,290,293,296,299],{"key":221,"name":222,"field":279},{"key":285,"name":286,"field":279},"aws","AWS",{"key":288,"name":289,"field":279},"gcp","GCP",{"key":291,"name":292,"field":279},"azure","Azure",{"key":294,"name":295,"field":279},"kubernetes","Kubernetes",{"key":297,"name":298,"field":279},"terraform","Terraform",{"key":300,"name":301,"field":279},"linux","Linux",{"key":303,"name_tr":304,"name_en":304,"sort":305,"specializations":306},"ai-engineer","AI Engineer",5,[307,308,309,312],{"key":221,"name":222,"field":303},{"key":227,"name":228,"field":303},{"key":310,"name":311,"field":303},"llm-rag","LLM\u002FRAG",{"key":313,"name":314,"field":303},"mlops","MLOps",{"key":5,"name_tr":6,"name_en":316,"sort":317,"specializations":318},"Database",6,[319,320,321,322,323],{"key":221,"name":222,"field":5},{"key":124,"name":125,"field":5},{"key":121,"name":122,"field":5},{"key":117,"name":118,"field":5},{"key":127,"name":128,"field":5},{"key":325,"name_tr":326,"name_en":327,"sort":328,"specializations":329},"mobile","Mobil","Mobile",7,[330,331,334,337,340],{"key":221,"name":222,"field":325},{"key":332,"name":333,"field":325},"ios-swift","iOS (Swift)",{"key":335,"name":336,"field":325},"android-kotlin","Android (Kotlin)",{"key":338,"name":339,"field":325},"flutter","Flutter",{"key":341,"name":342,"field":325},"react-native","React Native",{"key":344,"name_tr":345,"name_en":346,"sort":347,"specializations":348},"security","Güvenlik","Security",8,[349,350,353,356,359,362],{"key":221,"name":222,"field":344},{"key":351,"name":352,"field":344},"appsec","AppSec",{"key":354,"name":355,"field":344},"offensive-pentest","Offensive \u002F Pentest",{"key":357,"name":358,"field":344},"cloud-security","Cloud Security",{"key":360,"name":361,"field":344},"devsecops","DevSecOps",{"key":363,"name":364,"field":344},"blue-team-incident","Blue Team \u002F Incident",{"key":366,"name_tr":367,"name_en":368,"sort":369,"specializations":370},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[371],{"key":221,"name":222,"field":366},{"key":373,"name_tr":374,"name_en":374,"sort":375,"specializations":376},"data-engineer","Data Engineer",10,[377],{"key":221,"name":222,"field":373},{"key":379,"name_tr":380,"name_en":381,"sort":382,"specializations":383},"game-dev","Oyun Geliştirme","Game Development",11,[384],{"key":221,"name":222,"field":379},{"key":386,"name_tr":387,"name_en":387,"sort":388,"specializations":389},"ml-engineer","ML Engineer",12,[390],{"key":221,"name":222,"field":386},[14,15,16],{"junior":393,"mid":395,"senior":396},{"questions":394,"median_sec":3},20,{"questions":394,"median_sec":3},{"questions":394,"median_sec":3},[10,398],"en",[400,401],"google","github",21750,true]