В настоящее время я работаю над проблемой, которая включает запрос огромного количества данных (миллиарды строк), и, будучи несколько неопытным с этим типом вещей, хотел бы получить несколько умных советов.
Данные / проблема выглядят так:
- В каждой таблице 2-5 ключевых столбцов и 1 столбец значений.
- Каждая строка имеет уникальную комбинацию клавиш.
- Мне нужно иметь возможность запрашивать любые подмножества ключей (т.е. key1 = 'blah' и key4 = 'bloo').
- Было бы неплохо иметь возможность быстро вставлять новые строки (обновляя значение, если строка уже существует), но я был бы удовлетворен, если бы мог сделать это медленно.
В настоящее время у меня это реализовано в MySQL, работающем на одной машине с отдельными индексами, определенными для каждого ключа, одним индексом для всех ключей (уникальным) и одним индексом, объединяющим первый и последний ключи (который в настоящее время является наиболее распространенным запросом I ' Я делаю, но это может легко измениться). К сожалению, это довольно медленно (и индексы в итоге занимают ~ 10-кратное дисковое пространство, что не является большой проблемой).
В моем распоряжении множество быстрых компьютеров (~ 40), что делает невероятную медлительность этой одиночной базы данных еще более раздражающей. Я хочу использовать все эти возможности, чтобы сделать эту базу данных быстрой. Я подумал о создании распределенной хеш-таблицы, но это затруднит запрос только для подмножества ключей. Кажется, что-то вроде BigTable / HBase было бы неплохим решением, но я еще не уверен, что более простого решения не существует.
Большое спасибо, любая помощь будет принята с благодарностью!