Bir veritabanı nasıl analiz edilir? | robot_dreams
should_authorize_via_email
email.input_code tel.input_code
 
email.code_actual_for tel.code_actual_for
apply_exit_text
session_ended
to_homepage
Bir veritabanı nasıl analiz edilir?

Bir veritabanı nasıl analiz edilir?

Jooble Kıdemli Ürün Analisti Oksana Nosenko

Her veritabanı farklıdır:

  • yapısı
  • tablo, veri, sütun sayısı
  • bağlantılar ve anahtarlar
  • içinde depolanan bilgileri

Veritabanındaki bağlantıları tanımlayın

SQL sorguları yazmadan ve sonuçları analiz etmeden önce verileri ve şemaları anlamanız gerekir.

Veritabanındaki veri ve ilişkilerin şemasını alamıyorsanız, bağlantıları kendiniz tanımlayın.

#1. Güncel veritabanı tablolarını belirleyin.

Çok sık olarak, tarihsel veriler, arşivler ve yerel kopyalar veritabanında bulunabilir. Bu tür bilgilere hiç ihtiyacınız olmayabilir. Daha sonra atlanabilmesi için hemen vurgulanmalıdır.

#2. Sözlükleri tanımlayın. Genellikle anahtar şifre çözme ile 2-4 alan içerirler. Bunlar küçük tablolar olurken sayıları da fazla olabilir. Sözcükleri ayrı bir poola ayırırsanız potansiyel analiz tablolarının sayısı azalır.

#3. Varlıkları veya günlükleri açıklayan tabloları bulun (örneğin, kullanıcılar ve davranışları).

Bu ana veri kümesidir. Bu tür tablolar çok fazla bilgi ve sütun içerir, veriler günceldir ve sürekli güncellenir.

Sonuç olarak, mantığı net olmayan ilgili sistem veya teknik verileri içeren tablolar olacaktır. Büyük olasılıkla, bunlara sık sık başvurmayacaksınız, bu nedenle başlangıçta bunları ayrıntılı olarak incelemenize gerek kalmayacak.

Belgelerdeki tüm sonuçları özetlemeniz daha iyidir. Ardından, ihtiyacınız olan bilgileri ararken, cevabı bulma olasılığınızın en yüksek olduğu küçük bir tablo havuzuna göz atacaksınız.

Temel tablo ve veri kümenizi belirledikten sonra, bunları keşfetmeye başlayın. Genellikle, böyle bir set bazın yaklaşık% 50'sidir. Her tabloya ayrı ayrı bakın, orada hangi verilerin depolandığını anlamak için sorguları uygulayın.

Aşağıdaki soruları cevaplayın:

  • tabloda  saklandığı bilgiler;
  • içindeki tanımlayıcılar (kimlikler alanları);
  • tablonun içerdiği olaylar;
  • varlık bilgilerinin orada saklanıp saklanmadığı.Saklandığı halde, farklı özelliklere göre toplu olarak görüntüleyin (örneğin, doğrulanmış kullanıcılar, silinmiş ve silinmemiş bilgiler).

Çok sayıda tanımlayıcı (id) varsa, hepsi için sözlük tabloları bulmaya çalışın. Kimlikten önce alanın adına odaklanabilir ve benzer ada sahip bir tablo arayabilirsiniz. Örneğin, bir tabloda user_id anahtarı görürseniz, adında "users" geçen tabloları aramayı deneyin. Büyük olasılıkla, şifre çözme bunlardan birinde yatacaktır.

Tüm sütunların doldurulmadığını fark ederseniz, lütfen bunu belgelere not edin. Bu sütunlara başvurmayın - bilgilerin orada görünmesi olası değildir. Sorgu yazmadan önce, kod çözmenin sözlük tablolarında olup olmadığını kontrol edin.

Veriler incelenip tanımlandığında, bir SQL sorgusu oluşturmaya başlayabilirsiniz.

Etkili bir  alım şeması hazırlayın

Genelde analistin görevi, elde edilecek tüm verilerin bir listesini içermez ama SQL sorgusu ile bir dizi ölçüm ve gösterge çıkacağı için bunu önceden düşünmeniz gerekir.

#1. Bir sütun listesi tanımlayın: soruları yanıtlamaya yardımcı olacak metrikler ve varlıklar. Bu veritabanındaki  verilere odaklanmayın. Bunları ayrıca saymanız gerekirse sorun değil. Ancak unutmayın, veritabanında göstergeyi hesaplamak için veri yoksa, bu metriği sonuç kümesi şemasına dahil etmemelisiniz.

#2. İkinci sütuna (metriklerin adlarının aşağısın) göstergeyi hesaplama formülünü yazın.  Gerçek veritabanı sütunlarından alınan verilere dayanmalıdır.

#3. Formülü hesaplamak için gereken tabloların listesini belirtin. Sütunları alınacak  bir tablo belirtin.

#4. Diyagramın en üstüne örnek olması için zaman aralığı, ülkeye göre kısıtlamalar, cihaz türleri veya işletim sistemleri gibi geçerli olan koşulları yazın. Bu, bir sorgu yazarken analiz için ilginç olmayan verileri önlemekte kullanılır.

Diyagramı hazırlarken aşağıdakileri soruları sorun:

  • sorguda kaç tablo yer alıyor?
  • bu tabloları birleştirerek verileri çoğaltmak mümkün mü?
  • belirgin bir ifadeyle önlenebilir mi veya alt sorguya/CTE'ye başvurmak zorunda kalabilir mi?
  • veritabanında ne kadar bilgi talep edilmelidir? Sayısı azaltılabilir mi? Ek kısıtlamalar gerekli mi?
  • sorgu için hangi veriler verilmelidir? Tüm sözlük varlıklarını veya tersine tüm etkinliklerle ilgili verileri (kod çözmeleri sözlüklerde olmasa bile) dikkate almak önemli midir?

Karmaşık bir SQL query ( SQL sorgusu) yazın

Test örneğindeki seti kontrol edin. Sorgu karmaşıksa, yalnızca yerinde kontrol sırasında görülebilecek bir hata yapabilirsiniz.

Bu nedenle, bir kullanıcıyı veya bir olayı alın ve sonucu sıralı bir basit select + where kümesiyle test edin.

Hata yapabileceğiniz karmaşık hesaplamalar yapmayın (windows functions, having, ilişkili alt sorgular). İşlemlerinizi basit bir filtre ile select sınırlayın. Bu ileti dizisini inceleyip karmaşık sorgunuzla aynı sonucu aldıysanız, doğru yazılmış olma ihtimali yüksektir.

Kontrol ettiyseniz ve sonuç eşleşmedi ise, sorguda hata ayıklamaya başlayın. Size 1-2 sonuç satırı verecek yapay bir filtre olan bir test veri setindeki her aşamayı kontrol ederek adım adım yapabilirsiniz.

Ardından isteği, çözdüğünüz göreve bir bağlantıyla kaydedebilirsiniz. Bir yorumda bir soru sorabilir veya şemaya bir istek ekleyebilirsiniz. Bu durum belki gelecekte faydalı olacaktır, ancak tekrar yazmanız önerilmez.

Karmaşık SQL sorgularıyla nasıl çalışılır:

  • Her bölümün yürütülmesinin doğruluğunu kontrol edin. Bir ara aşamada bir hatayı yakalamak çok daha kolaydır.
     
  • Çok fazla iç içe alt sorgu yazmayın. Birkaç gün sonra böyle bir kodu anlamakta bile zorlanabilirsiniz. CTE'nin mantıksal kısımlarını vurgulamaya çalışın.
     
  • Üçten fazla yuvaya sahip CTE'lere ve alt sorgulara müdahale etmemeye çalışın. Kodda bir şey uygulayın, tüm karmaşık parçaları ortak tablo ifadelerine çıkarın veya çok sayıda iç içe geçmiş alt sorgular yazın.
     
  • Filtreleri ilk aşamalara koyun. Örneği ne kadar erken sınırlandırırsanız, sonraki işlemlerde o kadar az veri hesaplamanız gerekecektir.
     
  • Sütunları ve tabloları sebepsiz yere yeniden adlandırmayın. Adını 2 karakter kısaltmak için tablonun takma adını kullanmamalısınız. İşlem uygulanmamış tablolarda sütunları yeniden adlandırmayın. Gerekirse takma adlar kullanın. Örneğin, tablo adı çok uzunsa ve şirketinizdekiler s'nin bir satış tablosu olduğunu biliyorlarsa, o tablonun ilk harfi olarak uygulanabilir. Ancak, sales_profit, sales_roi veya sales_partners olabilirse, adını değiştirmeden bırakmak çok daha iyidir.
     
  • Yorumları bırakın.
     
  • Biçimlendirmeyi unutmayın. Yokluğu, dosyayı okunamaz hale getirebilir ve diğer ekip üyeleri tarafından yanlış yorumlanmasına yol açabilir. Bu nedenle tablo haline getirin, boşluklar kullanın ve her şeyi düz metin olarak yazmayın.
     
  • Her şeyi sıfırdan yeniden yazmadan birkaç kez kullanılabilmesi için sorgunun tekrarlanan tüm bölümlerini ayırın.

Sonuca her zaman tekrar bakın, tüm göstergeler ulaşılabilir görünüyor mu? Herhangi bir anormallik var mı? Doğru bir sorgu, sizi analiz sonrası yakalanabilecek veri hatalarından koruyacaktır.

Daha fazla makale
Mustafa Çamurlu ile yaptığımız röportajda, yazılım mimarisi alanında mikroservis, serverless ve event-driven mimarilerinin önemi ve yüksek trafikli uygulamalarda karşılaşılan zorlukları konuştuk.
Yüksek Trafikli Yazılım Mimarisi Eğitimimize katılın ve dijital dünyada fark yaratma fırsatını yakalayın!