Я пытаюсь найти лучшее решение для существенной замены базы данных SQL в решении, которое в настоящее время разрабатывается, но работает. Хранилище данных должно включать в себя разбиение таблиц и группы файлов, для которых можно создавать резервные копии и / или развертывать / выгружать (как описано в разделе «Разделение IBM DB2 здесь: http://www.ibm.com/developerworks/data/library/techarticle/dm-0605ahuja2/index.html),», но также разрешать массовую вставку / обновление строк.
Таблицы, хранящиеся в базе данных SQL, в настоящее время имеют простую структуру:
ID долго (первичный ключ)
TimeStamp DateTime (ПЕРВИЧНЫЙ КЛЮЧ)
Значение float
Атрибут int
Идентификатор не связан с каким-либо идентификатором в текущей базе данных, но происходит из других источников. Идентификатор и метка времени вместе используются в качестве первичного ключа для вставки / обновления
данные в таблице. В настоящее время в .NET используется хранимая процедура с параметром с табличным значением, позволяющая объединять данные в строки таблицы по 50 Кб за раз. В настоящее время я измерил около 10 000 записей в секунду на машине для разработки, что меня устраивает. Однако, поскольку решение является чувствительным к затратам и из-за требований к производительности по мере роста таблицы, мне нужна возможность выполнять разбиение таблиц (ранжируется по полю TimeStamp) и разделять разделы между несколькими файлами для упрощенного обслуживания / резервного копирования. Кроме того, мне нужна возможность для клиента выполнять запросы (только для чтения) к данным, как минимум, через ODBC.
Я рассмотрел несколько параметров NoSQL, mySQL и DB2 (которые сейчас кажутся наиболее подходящими). Я был бы признателен за понимание того, что может быть наилучшим образом. Конечно, всегда есть возможность перенести логику «разбиения» в код, но я бы хотел этого избежать, если это возможно.