SORU
27 Ocak 2011, PERŞEMBE


Zaman serisi veri depolama, ilişkisel ya da olmayan?

CPU kullanımı, disk kullanımı, sıcaklık gibi çeşitli ölçütlere veri cihazları için sandık başına olan bir sistem yaratacağım. (muhtemelen) 5 dakikalık aralıklarla SNMP kullanarak. Nihai hedef zaman serisi grafikleri şeklinde sisteme bir kullanıcı için görsel öğeler sağlamaktır.

Geçmişte RRDTool kullanarak baktım, ama yakalanan verileri saklamak sonsuza kadar benim proje için önemli olduğu için reddetti, ve daha yüksek seviyede ve yakalanan verileri daha esnek erişim istiyorum. Benim soru gerçekten çok:

Grafik için veri sorgularken performans açısından iyi olanı, ilişkisel bir veritabanı (MySQL ya da PostgreSQL gibi) veya non-ilişkisel veya NoSQL veritabanı (MongoDB veya Redis gibi).

İlişkisel

İlişkisel bir veritabanı verilen, data_instances tablo kullanmak, verileri her metrik olmak tüm cihazlar için ölçülen için çekilen her örneği, aşağıdaki alanları ile saklı olurdu sanırım

Alanlar: 5* fk_to_device fk_to_metric metric_value timestamp *

Belirli bir aygıt üzerinde belirli bir ölçü için bir grafik çizmek istiyorum, bu tekil tablo sorgulamak zorundayımdışarı süzmediğer aygıtlar ve diğer Ölçümler Bu cihaz için analiz ediliyor

SELECT metric_value, timestamp FROM data_instances
    WHERE fk_to_device=1 AND fk_to_metric=2

Bu tablodaki satır sayısı:

d * m_d * f * t

d * * * * sayısıdırcihazlar, m_d birikmişmetrik numarasıtüm cihazlar, f için kaydediliyorfrekanshangi veri yokladı ve t toplam miktarıdırzamansistem veri topluyor.

Bir kullanıcı bir yıl boyunca her 5 dakikada bir 3 cihazlar için 10 ölçümü kayıt için, sadece altında olurdu5 milyonkayıtları.

Dizinler

fk_to_device fk_to_metric dizinleri taramadan sürekli genişleyen bu tablo çok uzun sürer. Yani indeksleme söz konusu alanlar ve ayrıca timestamp (lokalize dönemleri ile grafikler oluşturmak için bir gerekliliktir.

İlişkisel Olmayan (NoSQL)

MongoDB bir kavramı vartoplamaProgram aracılığıyla kurulum olmadan oluşturulabilir bu tablolar farklı. Bu her cihaz için veri, ya da her metrik hatta her bir cihaz için kaydedilmiş depolama bölümü olabilir.

Ben hiçbir deneyimi ile NoSQL ve bilmiyorum eğer sağladıkları herhangi bir sorgu performans geliştirme özellikleri gibi indeksleme, ancak önceki paragraf öneriyor işin en geleneksel ilişkisel sorgu çalışma yapısı olan veri saklanır altında NoSQL.

Kararsız

Doğru indeksleme ile ilişkisel bir çözüm bu yıl içinde bir tarama azaltacak? Veya NoSQL yaklaşımlar depolanan verilerin benim zihinsel model eşleşen) toplanması temel yapısını gözle görülür bir fayda sağlar mı?

CEVAP
3 ŞUBAT 2011, PERŞEMBE


Kesinlikle İlişkisel. Sınırsız esneklik ve genişleme.

İki düzeltmeleri, kavram ve uygulama olarak, bir yükselme izler.

  1. Değildir "un-gerekli veri filtreleme";sadece gerekli verileri seçmek. Evet, tabii ki, eğer bir Dizin için destek sütunları tespit WHERE yan tümce, çok hızlı ve sorguya bağlı değil boyutu tablo (kapma 1000 satır bir 16 milyar satır tablo anlıktır).

  2. Masanız çok ciddi bir engel var. Tanımına göre, gerçek PK (Cihaz, Metrik, DateTime). (Lütfen başka bir şey anlamına gelir, ama bu küçük bir sorun, o zaman Damgası, deme.) Id sütun tamamen gereksiz. Bu tekliksatırile tanımlanır:

       `(Device, Metric, DateTime)`
    

    Id sütun hiçbir şey yapmaz, gereksiz (değil) gereksiz. Id sütun desteklemek için ek Dizin Ekler belli ki hızını engelleyen, ve kullanılan disk alanı ekler, ondan kurtulmak.

  3. Engeli kaldırdıktan sonra, kabul olmayabilir, ama masa Altıncı Normal Form. Çok yüksek hızlı, PK tek bir Dizin ile. Anlayış için, this answer okuyunAltıncı Normal Form nedir ?ileriye doğru gidiyor.

    • (Bir dizin değil, yalnızca üç tane var; Non-SQLs üç endeksleri gerekir) olabilir.

    Aynı tablo (tabii Id anahtarı olmadan) var. 24* *ek bir sütun var. Birden fazla müşteriye uzaktan destek veriyorum.

       `(Server, Device, Metric, DateTime)`
    

    Tablo verileri (örn. Pivot için kullanılabilir Üstünde Devices ve yüzü aşağı Metrics ya da milli) aynı SQL kodu (Evet, hücreler anahtarı) kullanarak. Müşteriler sunucu performanslarını yeniden grafikler ve sınırsız bir çeşitlilik dik tablo kullanıyorum.

    • Monitor Statistics Data Model.
      (Satır içi için çok büyük; bazı tarayıcılar içi yük olamaz; bağlantıyı tıklayın. Ayrıca eski demo versiyonu, bilinen nedenlerden dolayı, size ticari ürün DM göster.)

    • Beni müşteriden altı vuruşlarını istatistikleri raw dosya izleme aldıktan sonra Charts Like This, üretmek için kullanmayı sağlartek bir komut SEÇİN. Fark mix-ve-MAÇ; aynı grafik üzerinde işletim sistemi ve sunucu; Miller çeşitli. Tabii ki, istatistik matris ve böylece çizelgeleri sayısı sınırı yok. (Müşterinin tür ile kullanılan izin.)

    • Modelleme İlişkisel Veritabanları için Standart aşina olmayan okuyucular IDEF1X Notation yararlı bulabilirsiniz.

Son ama en az değil, SQL IEC/ISO/ANSI Standart. Ücretsiz aslında Olmayan-SQL; sahte eğer Standart sağlamak değilse terim SQL kullanın. Sağlayabilirler "extras", ama onlar yok temel.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • eyes4beautee

    eyes4beautee

    17 HAZİRAN 2011
  • Fraser Raft

    Fraser Raft

    9 Mart 2010
  • Valdorsha

    Valdorsha

    8 Mayıs 2006