В памяти альтернатива наборам данных - PullRequest
3 голосов
/ 15 декабря 2011

Я перемещаю сложный процесс из SQL в приложение .NET.Я как бы использую метод грубой силы, извлекая только те данные, которые необходимы из SQL, и сохраняя их в таблицах данных.Используя паттерн конвейера со степпингом, я разбил процессы, которые можно выполнять параллельно (не зависящие от других процессов и не работающие с одними и теми же битами данных).

Все идет хорошо, но я хочу знать, есть ли решение sql в памяти, которое будет работать лучше, чем структуры DataSet / DataTable.Мы говорим о 50 тысячах строк одновременно с поддержкой до 1 метра строк данных (прочитайте 5б строк).Размер строки для 1 строки (со всеми поддерживаемыми строками данных) составляет около 1 КБ (из-за больших строк).

Мой вопрос конкретно касается производительности DataSets, нехватки памяти и постоянства.Мне нужно будет сериализовать данные на каждом этапе на диск для целей восстановления.

Было бы лучше вместо этого просто сопоставить строки строго типизированной модели?Мне не нужны какие-либо отношения или другие преимущества наборов данных;Я заменил большинство функций поиска своими собственными, используя параллельную обработку.

В данных используются только примитивные типы, без больших двоичных объектов, потоков, географии и т. Д.

1 Ответ

3 голосов
/ 15 декабря 2011

Для локальных операций SQL взгляните на SQLite.Я не припомню, чтобы он мог работать исключительно в памяти, но с отключенным кэшированием диска и журналированием транзакций он, вероятно, был бы довольно близок.тому назад.Я не знаю, было ли это когда-либо произведено.Просмотрите веб-сайт Embarcadero.com, чтобы увидеть, сохранились ли какие-либо остатки его работы.

Я заметил, что aidaim.com рекламирует движок SQL в памяти.Никакого опыта с этим, только FYI.

Также рассмотрите LINQ для операций запроса в памяти.Если вы обратите внимание на то, что делаете, состав запросов LINQ и отложенное выполнение хорошо работают с большими данными, IMO.И не требуется анализатор SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...