Çok büyük miktarlarda topladığımız netflow verilerini yakalamak ve analiz etmek için bir araç geliştirmeyi düşünüyoruz. Her gün json biçiminde şöyle görünecek yaklaşık 1.4 milyar akış kaydı yakaladık:
{
"tcp_flags": "0",
"src_as": "54321",
"nexthop": "1.2.3.4",
"unix_secs": "1352234521",
"src_mask": "23",
"tos": "0",
"prot": "6",
"input": "105",
"doctets": "186",
"engine_type": "0",
"exaddr": "2.3.4.5",
"engine_id": "2",
"srcaddr": "9.8.7.6",
"dst_as": "12345",
"unix_nsecs": "752265174",
"sysuptime": "2943529544",
"dst_mask": "24",
"dstport": "80",
"last": "2943523241",
"srcport": "52672",
"dpkts": "4",
"output": "111",
"dstaddr": "6.5.4.3",
"first": "2943517993"
}
Veri kümesinde hızlı aramalar (10 saniyeden az), büyük olasılıkla dar zaman dilimlerinde (10 - 30 dakika aralıklarla) yapabilmek istiyoruz. Ayrıca veri noktalarının çoğunu endekslemek istiyoruz, böylece her birinde hızlı bir şekilde arama yapabiliriz. Ayrıca aramalar yapılırken verilerin güncel bir görüntüsünü almak istiyoruz. Açık kaynaklı dünyada kalmak harika olurdu, ancak bu proje için tescilli çözümlere bakmaya karşı değiliz.
Buradaki fikir yaklaşık bir ay veri tutmaktır ki bu da ~ 43,2 milyar kayıt olacaktır. Her bir kaydın yaklaşık 480 bayt veri içerdiği tahmininde, ayda yaklaşık 18.7 terabayt verinin ve endekslerin üç katı olabileceği tahmin edilmektedir. Sonunda, bu sistemin trilyonlarca kayıt saklama kapasitesini artırmak istiyoruz.
Bu proje için mümkün olan en yakın aday olan kanepe üssü, cassandra ve mongodb'leri (çok temelde) değerlendirdik, ancak her biri kendi zorluklarını öneriyor. Sofabase ile, indeksleme aralıklarla yapılır ve verilerin eklenmesi sırasında değil, görünümler güncel olmaz, cassandra'nın ikincil endeksleri genellikle sonuçlar için tüm kümenin taranmasını gerektirdiklerinden sonuçları döndürmede çok etkili değildirler ve mongodb umut verici görünüyor ama Master / Slave / Sharded olduğu için ölçeklendirmek çok daha zor görünüyor. Değerlendirmeyi planladığımız diğer bazı adaylar; elasticsearch, mysql (eğer bunun uygulanabilir olup olmadığından emin değilsiniz) ve birkaç sütun odaklı ilişkisel veritabanıdır. Herhangi bir öneri veya gerçek dünya deneyimi takdir edilecektir.