Ми дивимось на розробку інструменту для збору та аналізу даних netflow, з яких ми збираємо величезну кількість. Щодня ми збираємо близько ~ 1,4 млрд записів потоку, які виглядатимуть у форматі 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"
}
Ми хотіли б мати можливість здійснювати швидкий пошук (менше 10 секунд) на наборі даних, швидше за все, протягом вузьких фрагментів часу (інтервали 10 - 30 хвилин). Ми також хочемо проіндексувати більшість точок даних, щоб ми могли швидко здійснювати пошук по кожному з них. Ми також хотіли б мати сучасний перегляд даних під час пошуку. Було б чудово залишатися у світі з відкритим кодом, але ми не проти дивитися на власні рішення цього проекту.
Ідея полягає в тому, щоб зберігати приблизно один місяць даних, що складе ~ 43,2 млрд записів. Приблизна оцінка, що кожен запис міститиме близько 480 байт даних, дорівнюватиме ~ 18,7 терабайт даних за місяць, а може, і втричі більше, ніж індексам. Врешті-решт, ми хотіли б збільшити потужність цієї системи для зберігання трильйонів записів.
Ми (в основному) оцінили диван, кассандру та монгоб, наскільки це можливо, кандидатів на цей проект, проте кожен пропонує свої завдання. З допомогою couchbase індексація проводиться з інтервалами, а не під час вставки даних, тому перегляди не є актуальними, вторинні індекси кассандри не дуже ефективні при поверненні результатів, оскільки вони зазвичай вимагають сканування всього кластеру для отримання результатів, і mongodb виглядає перспективно, але Мабуть, набагато складніше масштабувати, оскільки це господар / раб / шматок. Деякі інші кандидати, які ми плануємо оцінити, - це розширення пошуку, mysql (не впевнений, чи це взагалі можливо) та кілька реляційних баз даних, орієнтованих на стовпці. Будь-які пропозиції чи досвід у світі будуть вдячні.