0

У меня есть таблица с 40 миллионами строк. Я ищу лучшую технологию для извлечения этих данных в JSON через API.Лучший способ получить большие объемы данных из базы данных SQL Server (или SQL Azure)

Производительность критическая!

Я думаю, лучший способ - использовать ADO.NET и SqlDataReader. Но, я хочу использовать automapping (как EF).

Не могли бы вы сказать мне, что это лучший способ получить большие объемы данных? (2, 3, .. 40 миллионов строк)

ответ

1

Вы правы, что не собираетесь получать быстрее, чем сырые ADO.NET, если вы пытаетесь получить данные с SQL Server в библиотеку C#.

Для получения простого отношения-> сопоставления объектов, но, избегая цены, которую вы платите с помощью более крупных, более полнофункциональных ORM, таких как EF и NH, я обнаружил, что Dapper работает очень хорошо (https://github.com/StackExchange/dapper-dot-net). Это быстрее, чем NH в моих случаях использования, очень проста в использовании, и вы получаете сопоставление, которое вы ищете.

Есть тесты, которые были сделаны в прошлом, глядя на производительность выборки ORM, которые могут дать вам представление о том, что вы можете посмотреть (например, это: http://weblogs.asp.net/fbouma/fetch-performance-of-various-net-orm-data-access-frameworks, что не удивительно обнаружило сырой ADO.NET самый быстрый - хотя это с 2013 года, который является просто древним в интернет-время).

Вы можете сделать свое подобное сравнение довольно быстро с вашими данными и средой, чтобы понять, что может сработать для вашей ситуации.

Кроме того, чтобы подходить к нему под другим углом - насколько часто данные меняются? Нужно ли каждый раз выходить из SQL-сервера? Возможно, вы сможете загрузить его в кеш в памяти, где поиск быстрее, чем запрос от SQL Server.

1

Также дайте попробовать linq2db (https://github.com/linq2db/linq2db). Как и Dapper linq2db - очень легкий микро ORM, но также поддерживает запросы linq для фильтрации, прогнозов и т. Д.

Смежные вопросы