Мы все еще оцениваем Cassandra для нашего хранилища данных.В качестве очень простого теста я вставил значение для 4 столбцов в семейство столбцов Keyspace1 / Standard1 на моем локальном компьютере объемом около 100 байт данных.Затем я прочитал его так быстро, как только мог, по строке ключа.Я могу прочитать его обратно со скоростью 160 000 в секунду.Отлично.
Затем я вставил миллион похожих записей, все с ключами в форме XY, где X в (1..10) и Y в (1..100,000), и я запросил случайную запись.Производительность упала до 26 000 запросов в секунду.Это все еще намного выше числа запросов, которые мы должны поддерживать (около 1500 в секунду)
Наконец, я поместил десять миллионов записей с 1.1 до 10.1000000 и случайно запросил одну из 10 миллионов записей.Производительность ужасна - 60 запросов в секунду, и мой диск крутится как сумасшедший.
Я также проверил, что если я запрашиваю подмножество данных, скажем, 1000 записей в диапазоне от 3 000 000 до 3 001 000, сначала он медленно возвращается, а затем, когда они кэшируются, он ускоряет до 20 000 запросов в секунду имой диск перестает сходить с ума.
Я прочитал повсюду, что люди хранят миллиарды записей на Кассандре и загружают их со скоростью 5-6k в секунду, но я не могу приблизиться к этому, имея только 10 миллионов записей.Есть идеи, что я делаю не так?Есть ли какие-то настройки, которые мне нужно изменить по умолчанию?Я на разогнанной коробке Core i7 с 6 гигабайтами оперативной памяти, поэтому я не думаю, что это машина.
Вот мой код для извлечения записей, которые я порождаю в 8 потоков, чтобы запросить одно значение из одногостолбец через ключ строки:
ColumnPath cp = new ColumnPath ();cp.Column_family = "Standard1";cp.Column = utf8Encoding.GetBytes ("site");строковый ключ = (1 + sRand.Next (9)) + "."+ (1 + sRand.Next (1000000));ColumnOrSuperColumn logline = client.get ("Keyspace1", ключ, cp, ConsistencyLevel.ONE);
Спасибо за любые идеи