Без БД в данном случае можно обойтись, но это очень костыльный вариант:
- Работаем с файлом построчно через fopen() и fgets()/fgetcsv(), а не через CCSVData
- Выбираем из файла только те строки, которые подходят к текущему состоянию пагинации
- Кэшируем нашу выборку с учётом пагинации и фильтров
Мне кажется что лучше всё-же использовать таблицу в БД, которая будет очищаться при импорте нового csv.