Visual Studio 2010、Windows XP、SQLServerCEを使用しています。
次のようなデータベーステーブルを作成したいと思います。
CREATE TABLE Logs
(
Id int,
***LogTime datetime***,
Register1 smallint,
Register2 smallint,
Register3 smallint,
)
IDが主キーとIDになります。
私には解決できないこれらの問題があります:
- 「データソース」はPCに接続されたUSBからのファイルであるため、このテーブルには大きな一括挿入(一度に最大300kレコードでも)が入力されます。このバイナリ形式のファイルには、時系列のログが含まれています。私のソフトウェアはそれを取得し、デコードして、データベースに追加するレコードを準備する必要があります。
- 最終的にこのテーブルのデータからグラフが作成されるため、データベースに重複する日時(同じ日時の2つのレコード)を含めることはできません。
したがって、最初のバルク挿入は問題ありません。たとえば、次のようになります。
1, 2013-01-01 12:34:12, 12, 100, 200
2, 2013-01-01 12:34:24, 13, 100, 212
3, 2013-01-01 12:34:36, 11, 110, 208
...
100, 2013-01-01 14:04:58, 15, 120, 198
ただし、次に挿入するファイルには、古いコンテンツとその他の新しい後続のレコードが含まれます。そして、新しいレコードのみを挿入する必要があります(それ以外の場合は、レコードのコピーを作成しています)。
したがって、
ファイル1:1月1日から1月5日まで
ファイル2:1月1日から1月8日まで
現時点では、データベーステーブルをフラットバイナリファイルとして実装しており、挿入する前に、O(N)線形スキャンで「挿入ポイント」を見つけて、新しいデータを追加できます。
フラットバイナリファイルの代わりにSQLサーバーCEをデータコンテナーとして使用したいと思います。
任意の提案をいただければ幸いです