Daha önce bir takım lideriydim ve normalleşmenin kurallarını çok iyi biliyorum, bu yüzden burada araya gireceğim.
Ona zaten bunun böyle olduğunu açıklamaya çalıştım. normalleştirilmiş bir yapıyla çalışmak benim için daha kolay, ancak bir şekilde onu ikna edemedim.
Normalleştirme akademisyenleri
Normalize dediğinizde, tam olarak hangi normalizasyon seviyesi / standart doğrudur? 2. normal form? 3. normal form? Boyce – Codd normal formu? 6. normal biçim mi?
Her biri artan kural karmaşıklığına sahip birçok normalleştirme düzeyi vardır: https://en.wikipedia.org/wiki/Database_normalization
Dolayısıyla, normalleştirme iyi olduğu için X'in Y'den daha iyi olduğunu söyleyerek, neyin doğru olduğuna dair tek ve kesin bir kuralı ima etmiş oluyorsunuz.
Normalizasyon ve ödünleşmelerin analizi
Öncelikle yazma performansını optimize etmek ve veri tutarlılığını garanti etmek için normalleştiriyoruz.
GitHub veritabanı performansı hakkındaki şu sayfaya bakın: https://johnnunemaker.com/database-performance-simplified/
"Yazmalar nasıl optimize edilir" önerilerinin, "okumalar nasıl optimize edilir" önerilerinin tersi olduğuna dikkat edin? Bu, bulacağınız genel bir kalıptır. Okuma performansı ile yazma performansı arasında bir denge vardır.
Açıkladığınız spesifik normalleştirme koşulu, bir tabloyu 3 tabloya bölmektir. Bunun 1: 1 olmadığını varsayalım ve bu nedenle bazı tabloların satır sayısı daha küçüktür ve depolama alanını azalttınız. Bu, söz konusu veri kümesine yapılan güncellemelerin daha verimli olabileceği anlamına gelir. Şimdi veri setini nasıl okuyorsunuz? 3 masaya katılarak. Katılmak için 1 yerine 3 tabloya bakmanız gerekir, bu nedenle daha pahalı olur.
Yazıları, okuma pahasına optimize ettiniz.
Geçmiş bir rolde, neredeyse her önemli sorgunun yalnızca tek bir değer bulmak için belirli bir tabloda birleştiğini gördük. Çoğu sorgunun maliyetinin% 10'u bu tek tabloya katılmaktı. Filtrelemek için kullanılmıyordu. Bu nedenle, bu sütunu (asla değişmeyecek olan) birkaç sıkça sorgulanan tabloya kopyalamak, pano genelinde performansı% 10 artırdı. Ne yaptıklarını bilen insanlar tarafından düşünceli ve kasıtlı bir karardı.
Örneğinize geri dönelim. Bu tabloyu 1: 1 ilişki ile 3 tabloya bölerseniz, her zaman güncellemek için en az aynı sayıda satıra sahip olursunuz, bu nedenle yazma açısından bir fayda yoktur, ancak şimdi okurlar 3 tabloya katılmak zorundadır. Yani bir fayda sağlamadan bir performans maliyeti alıyorsunuz.
Sonuç
Bazı veriler okunduğundan çok daha sık yazılır. Bazı veriler yazıldığından çok daha sık okunur. Okuma verimliliği ile yazma verimliliği arasında bir değiş tokuşumuz olduğundan, kullanım modellerimizle eşleşen durumu optimize etmeliyiz.
Şirkette yeni olduğunuza göre, takım lideriniz muhtemelen daha fazlasını biliyor bu verilerin sizden daha iyi nasıl kullanıldığı hakkında .
Bir dahaki sefere
Öyleyse: Ekip liderimi başka bir veri yapısının daha iyi olacağına nasıl ikna edebilirim?
Bunu stackoverflow'a veya DBA Stack Exchange'e getirmediğiniz ve sorunuzu haklı olduğunuz birini nasıl ikna edeceğinizi sorarak sonlandırmanız, ekibinizin liderliğini düşünmediğinizi gösteriyor aslında haklı olabilir.
Bir dahaki sefere, endişelerini açıklamasını isteyerek bir anlaşmazlığa yaklaşmalısınız ve sonra hala aynı fikirde değilseniz, stackoverflow.com veya dba.stackexchange.com adresine gidip sorun teknik değerleri size açıklayacak biri. Anlaşmazlıkları, iradenizi başkalarına dayatmak için fırsatlardan ziyade bir öğrenme fırsatı olarak görmeye çalışmalısınız. Özellikle yeniyseniz ve etrafınızda kendinizden daha bilgili kişilerle çevrili olduğunuzda.