15k I (snmp ortamının o tür çok gürültülü alabilirsiniz) veri merkezlerinde ağ izleme uygulamaları ile bakın eskiden ne gibi bir çok geliyor, her 3 dakikada bir kaydeden bir sürü. Ne yapacağımız, ne kadarlık bir boyuta sahip olduğumuzun ne kadarını, hangi ayrıntı seviyesinde ve bu bilginin ne tür bir roll-up stratejisi belirlediğine karar vermesidir - aynı zamanda ne kadar depolama alanı istediğimizi soruna atmak. Zaman sıraları üzerinde birleştirdiğiniz bir roll-up stratejisiyle, sütunlarını birleştirerek, veritabanının boyutuna sonlu bir sınır olduğundan emin olabilirsiniz.
Muhtemelen bu günlerde daha yeni araçlar var, ancak bu tür izleme sorunları için RRD (http://oss.oetiker.ch/rrdtool/) ve BerkeleyDB'yi kullandım. Ayrıca, bazı yazılımların tekilleştirilmesinden faydalanabilirsiniz. Bir satırın, bir satırın önceki bir satıra benzer bir şekilde bulunup bulunmadığını yalnızca bir sayıyı güncellediğiniz bir yaklaşımdır. Olay fırtınalarının NOC ekranlarına su basmasını önlemek ve teknisyenlerin kritik olayları kaçırmasına neden olmak için bunu yapardık. Bu arada, bunu bir yorum olarak bıraktım, ama stackoverflow beni önleyen bu şöhret meselesini yapıyor ve ben de dün burada soruları yanıtlamaya başladım.
Yani, daha tamamlanmış bir örnek olarak verilerinizi kullanarak:
Req Success OrderFunction 5 60ms WebServer2
Req Failed OrderFunction 2 176ms WebServer5
Resp Success SuggestFunction 8 45ms WebServer2
Ben istemini varsayalım/Resp yalnızca iki değer vardır - istek ve yanıt tekabül? Bu durumda, o sütun ikili, 1 bit olsun - bir istek olup olmadığını yapın. İkinci sütun, Başarı/Başarısız - 1 bit veya en kötü üçlü, 2 bit alan gibi görünür. Fonksiyonlar (OrderFunction, Öneri Fonksiyonu, vb.) Muhtemelen numaralandırılabilir - ya da burada tekilleştirme yapıyorsanız, bunu bir bit maskesi haline getirebilirsiniz. Bunun için bir yabancı anahtarı sadece bir birleşim tablosuna da kullanabilirsiniz. Numaralandırılan seçenekte, bunların 256'sından daha az, ancak 128'den fazla bir bayt kullandığınızı varsayalım.Satırları kaydetmek için, özellikle de bu gibi hızlı bir şekilde geldiğinde, bir de-çoğaltma çözümüne yerleştirebilirseniz ve 256 seçeneğiniz varsa, bit maskesi için tam olarak bu kadar çok bit gerekir. Her bir permütasyonun temsil edilmesi gerekmediği, bu durumda, maksimum permütasyon sayısını ve bu, tekilleştirme için bit masanızdaki bitlerin sayısını doğru bir şekilde yuvarlamaktır. İçinde 5,2 ve 8 olan bir sonraki sütun, bunun neyi temsil ettiğinden emin değilim, bir çeşit tam sayı veya belki de bir bayt mı? Milisaniyeler, SQL lehçenize ve temsil etmek için beklediğiniz maksimum milisaniye, bir int veya belki de imzasız bir kısa veya belki sadece kısa bir şekilde (temelde yaklaşık 32.7 saniye) temsil edilebilir. Kısa veya imzasız kısa kullanırsanız, uygulama mantığınızda, maksimun ötesindeki bir değerin maks, sıfır değil olarak temsil edildiğinden emin olun. Son sütun, sunucularınızı temsil eden bir dizgeye benziyor. Bu, büyük olasılıkla, tekilleştirme veya aktarma konusunda rehberlik etmek için kullanacağınız bir sütun. Bu yüzden belki de bir yabancı anahtar olabilir.
Neyse, RRD gerçekten çok iyi kullanılmıştı ama neredeyse bir düzine yılda kullanmamıştım - bunu geri aldım, bir düzine yıldan fazla bir süredir RRD kullanmadım :). Eminim BerkeleyDB bu tür bir şey olsa da yine de iyi bir veri tabanıdır - bu gibi araçlara ve araçlara bakın ve eminim ki iyi bir çözüm ortaya çıkacaktır.
Bu yardımcı olur umarım!
Veritabanında sıradan bir tuple benziyor. – darijan
Evet ama bunu sınıfta tutmak acıdır. 3 dakikalık aralıklarla 15k kayıt var. – Xelom
Daha sonra ilişkisel bir veritabanında tutmayı ve bir dizi hizmetle ihtiyaç duyduğunuz bilgileri elde etmeyi düşünün. VEYA, tüm bunları mevcut yapıyla ve gerçek nesnelerle yapabilirdiniz, ancak bu nesnelerin (genellikle otomatik olarak, oluşturma ve değiştirme üzerine) devamlılığını sağlayan bir nesne veritabanına (örneğin, Versant'a bakın) yapabilirsiniz. – darijan