Недавно я проводил измерения производительности Феникса.Мне нужна высокопроизводительная система, которая может обрабатывать большие куски данных временных рядов (deviceID, timestamp, someDoubleValue) с миллиардами строк.
* +1002 *
DDL-: CREATE TABLE IF NOT EXISTS table_timestamp (DeviceId VARCHAR NOT NULL, CREATED_DATE ТШЕЗТАМР NOT NULL, METRIC_DOUBLE двойной, METRIC_VALUE INTEGER CONSTRAINT PK PRIMARY KEY (DeviceId, CREATED_DATE ROW_TIMESTAMP)) SALT_BUCKETS = 4;
read: Один из самых популярных сценариев чтения - получение последнего состояния датчика на данный момент.
Мы пытаемся решить эту проблему следующим запросом:
SELECT * FROM TABLE_TIMESTAMP WHERE DEVICEID='const' AND
CREATED_DATE = (SELECT MAX(CREATED_DATE)
FROM TABLE_TIMESTAMP WHERE DEVICEID='const' and
CREATED_DATE <= TO_TIMESTAMP('2018-01-01 00:00:00.001'))
Выполнение запроса занимает слишком много времени.В настоящее время время запроса составляет около 0.9-1.0s
И я думаю, это потому, что он считывает все данные для DEVICEID и вычисляет максимальное количество данных в подзапросе.Согласно моему пониманию HBase, похоже, что подобный запрос в HBase мог бы работать намного быстрее.
У кого-нибудь есть идеи?