Влияние Aerospike UDF на производительность?

Я хотел бы знать, какое влияние на производительность я должен ожидать при вызове UDF (пользовательской функции), написанной на C, каждый раз, когда создается или изменяется какая-либо запись (с предположением, что сам код UDF не занимает времени — я сам оптимизирую).

Допустим, у меня есть аппаратное обеспечение, способное поддерживать пространство имен, сохраняемое на SSD, со скоростью 200 000 записей/с. Могу ли я ожидать не менее 50 000 операций записи/с при каждом запуске UDF?

Подвопрос: что может ограничить производительность UDF (переключение контекста?)

Причина запроса в том, что Aerospike использует эти пользовательские функции, например для больших типов данных, но, по словам сотрудников AS, они не очень эффективны (по сравнению с KVS-Ops). Мой вариант использования — использование определяемых пользователем функций для поддержания широкого диапазона вторичных индексов в кластере Redis в актуальном состоянии, что позволяет выполнять гораздо более сложные запросы в реальном времени (например, пересечения/объединения 5–10 вторичных индексов).


person Manuel Arwed Schmidt    schedule 24.05.2015    source источник


Ответы (1)


Лучше всего провести тест самостоятельно. Его трудно предсказать. Но я считаю, что вы должны быть в состоянии сделать 50k tps.

В основном на производительность UDF влияет внутреннее выделение памяти перед вызовом UDF. Если вы используете простые типы данных, такие как int/string/blob, вам лучше. Если вы используете список/карту в UDF, он будет выделять больше памяти, что повлияет на производительность.

person sunil    schedule 29.05.2015