Я разрабатываю систему ELT для хранилища данных, и мне было интересно, какой самый эффективный и в то же время (в некотором смысле) безопасный способ извлечения данных из исходной базы данных.
Мне нужно прочитатьпара таблиц из исходной базы данных, организовать их в объекты POCO, с которыми я могу эффективно работать.Они примерно соответствуют размерам моего куба.Чтобы получить факты в мой куб, мне нужно массово загрузить огромные объемы данных из других таблиц, выполнить некоторые (нетривиальные) преобразования в них и записать их в таблицу в целевой базе данных.
ХотяВ принципе, я бы только выиграл от небольшого подмножества функций O / RM, в любом случае мне интересно, можно ли использовать Entity Framework.Поэтому мой вопрос заключается в том, может ли EF (в его новейшей версии) обрабатывать потоковые данные.Под этим я подразумеваю то, что я держу какой-то DataReader открытым, загружаю пару POCO, выполняю их преобразование, записываю результаты во вторую базу данных, удаляю их все как можно быстрее (я не могу держать их все впамяти, потому что она взорвется) и продолжит чтение, пока я не закончу.
Мне, очевидно, не нужно никакого управления изменениями для этих объектов, и я хочу сохранить их (по крайней мере, в второй категории с фактами) живымитолько в течение короткого периода времени и распоряжаться ими, находясь в той же транзакции.Утилизация для меня означает, что не только я избавляюсь от POCO, но и что EF больше не будет сохранять инфраструктуру и не тратить больше ни одного байта памяти ни на один из этих объектов.
Преимущества, которые я вижу при использованииO / RM заключается в том, что он может в некоторой степени упростить запросы и преобразование, но я не хочу жертвовать слишком большой производительностью, и я ограничен общим объемом памяти, который я могу использовать.Имеет ли смысл переходить на EF или мне лучше остаться на старом, старомодном ADO.NET DataReader?