Contactお問い合わせ
お気軽にお問い合わせください。
超高速汎用 ソート/マージ ライブラリー
(データベース 分析、再構築)
Opttech Sort for Windowsは、
データベースファイルから抽出した様々な形式のデータを
ソート(並べ換え)、マージ(併合)、条件による抽出、集計などを行う
テキストファイルの扱いに慣れたプロフェッショナルに最適のツールです。
コマンドラインおよび Windows ベースの
スタンドアローンでの使用はもちろんのこと、
Visual Basic、C++、Delphi など各種高級言語からの
サブルーチンとして使用することも可能です。
データベースシステムにはデータ処理機能が予め用意されてはいますが、それらの機能はデータベースサーバ上で実行されるので、同時に多くのユーザが利用するとデータベースシステムのパフォーマンス低下を引き起こしかねません。そのため個人レベルのデータ分析や集計は、一旦抽出したデータを使用して処理したほうが効率的なことが多いのです。
Opttech Sort for Windows はデータベースの再構築にも非常に有用です。外部データが予めソート済みであれば、データベースへのロード時間を著しく短縮することが可能になります。また、重複データや不要データの削除、テーブル内容の再構築、特定のデータ内容の一括変更なども、ロード前の外部データレベルでの処理のほうが容易です。
例えばインターネットでのアクセスログなど大量のテキストログの分析や集計に Opttech Sort for Windows は最適です。一般的なフィールドに加え、IPアドレスをソートキーとして使うことができるため、不正アクセスの解析やマーケティングデータの分析などに威力を発揮します。
レコード件数 | ファイルサイズ | 処理時間(ソート) | 処理時間(セレクト) |
---|---|---|---|
10,000 | 800KB | 0.05 秒 | 0.02 秒 |
50,000 | 4MB | 0.39 秒 | 0.05 秒 |
100,000 | 8MB | 0.81 秒 | 0.10 秒 |
500,000 | 40MB | 4.72 秒 | 0.42 秒 |
1,000,000 | 80MB | 10.06 秒 | 0.82 秒 |
Private Declare Sub Sortvb Lib "OTSW32.DLL" Alias "s_1mains" _ (ByVal Infile$,ByVal Outfile$,ByVal Ctlstmt$,Numrec&,Retcode&) Private Sub cmdStartButton_Click() Infilev$ = txtInfile.Text Outfilev$ = txtOutfile.Text Ctlstmtv$ = txtCtlstmt.Text Call Sortvb(Infilev$, Outfilev$, Ctlstmtv$, Numrecv&, Retcodev&) txtNumrec.Text = Str$(Numrecv&) txtRetcode.Text = Str$(Retcodev&) End Sub
/* C program calling Opttech Sort with records */ char io_area[100], *result; unsigned int func, io_len, ret_code; FILE *f1, *fopen(); /* set up for initialization call func=1 */ func = 1; strcpy(io_area,"sort(1,10,c,a)"); io_len = strlen(io_area); RSMSCS(func, io_area, &io_len, &ret_code); if (ret_code != 0) sorterr(ret_code); if ((f1 = fopen("samp.dat","r")) == NULL) { printf("can not open file \n"); exit(1); } /* pass records to sort func=2 */ func = 2; result = fgets(io_area, 100, f1); while(result != NULL) { io_len = strlen(io_area); RSMSCS(func, io_area, &io_len, &ret_code); if (ret_code != 0) sorterr(ret_code); result = fgets(io_area, 100, f1); } /* get sorted records back from sort func=3 */ func = 3; while(ret_code != 1) { RSMSCS(func, io_area, &io_len, &ret_code); if (ret_code == 1) break; if (ret_code > 1) sorterr(ret_code); io_area[io_len-1] = '\0'; printf("%s\n",io_area); }