Chúng tôi đang xem xét việc phát triển một công cụ để thu thập và phân tích dữ liệu netflow, trong đó chúng tôi thu thập số lượng rất lớn. Mỗi ngày chúng tôi thu được khoảng ~ 1,4 tỷ hồ sơ lưu lượng trông giống như thế này ở định dạng json:
{
"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"
}
Chúng tôi muốn có thể thực hiện tìm kiếm nhanh (dưới 10 giây) trên tập dữ liệu, rất có thể trong các khoảng thời gian hẹp (khoảng 10 - 30 phút). Chúng tôi cũng muốn lập chỉ mục cho phần lớn các điểm dữ liệu để chúng tôi có thể thực hiện tìm kiếm trên từng điểm một cách nhanh chóng. Chúng tôi cũng muốn có một cái nhìn cập nhật về dữ liệu khi các tìm kiếm được thực hiện. Sẽ thật tuyệt khi ở lại trong thế giới nguồn mở, nhưng chúng tôi không phản đối việc xem xét các giải pháp độc quyền cho dự án này.
Ý tưởng là giữ khoảng một tháng dữ liệu, sẽ là ~ 43,2 tỷ hồ sơ. Một ước tính sơ bộ rằng mỗi bản ghi sẽ chứa khoảng 480 byte dữ liệu, sẽ tương đương với ~ 18,7 terabyte dữ liệu trong một tháng và có thể gấp ba lần so với chỉ mục. Cuối cùng, chúng tôi muốn phát triển khả năng của hệ thống này để lưu trữ hàng nghìn tỷ hồ sơ.
Chúng tôi (về cơ bản) đã đánh giá couchbase, cassandra và mongodb cho đến nay có thể là ứng cử viên cho dự án này, tuy nhiên mỗi người đề xuất những thách thức riêng của họ. Với couchbase, việc lập chỉ mục được thực hiện theo chu kỳ và không trong quá trình chèn dữ liệu để các chế độ xem không cập nhật, các chỉ mục phụ của cassandra không hiệu quả trong việc trả về kết quả vì chúng thường yêu cầu quét toàn bộ cụm để tìm kết quả và mongodb có vẻ hứa hẹn nhưng dường như khó khăn hơn để mở rộng quy mô vì nó là chủ / nô lệ / phân đoạn. Một số ứng cử viên khác mà chúng tôi dự định đánh giá là elaticsearch, mysql (không chắc điều này có áp dụng được không) và một vài cơ sở dữ liệu quan hệ theo định hướng cột. Bất kỳ đề xuất hoặc kinh nghiệm thế giới thực sẽ được đánh giá cao.