Я занимаюсь разработкой проекта сбора электронных транзакций, который не подключен к .NET.Это означает, что я получу несколько текстовых файлов, содержащих транзакции за предыдущий день.В общей сложности он содержит около 2 000 000 строк в день.
Я хочу добиться высокой производительности при поиске по транзакциям за последний месяц (максимум 3 секунды), но я хочу иметь возможность поиска по более старым транзакциям (максимум30 секунд).Поиск в архиве основан на CardNumber
, TransactionNumber
и TransactionDate
.Я имею в виду сценарий поиска в архиве статический, и мы не хотим искать в других столбцах или получать какие-либо отчеты.
Я думаю о стратегии архивирования.
Есть некоторыеопции:
Настройка и оптимизация индексов на главной таблице.
Разделение главной таблицы.
Перенос старых транзакций в другую базу данных, каждую ночь.
Перемещение старых транзакций в текстовый файл, каждый час (TextFile, XmlSerialization, BinarySerialization), а затем поиск в памяти.
Использование других баз данных NON-RDBMS с открытым исходным кодом (например, движка Lucene в текстовом поиске).
Прежде всего, я хочу знать, какая стратегия лучшесоответствует одному для этого сценария?
Кроме того, сколько записей поддерживается известными механизмами баз данных (такими как SQL Server 2008, Oracle, Sqlite, MySql, ...)?Когда мы должны думать о разбиении таблицы?