ユニケージ FAQ 有限会社ユニバーサル・シェル・プログラミング研究所 ユニケージ開発手法技術概説資料 [2] © usp lab. 2016 Confidential Confidential Proprietary Proprietary 1 Appendix : ユニケージ FAQ アジェンダ 1. 何故処理スピードが速いのか データの更新アーキテクチャの差異 2. データ管理はどうするのか 3. ファイルのリレーションはどうするのか 4. 排他制御はどうするのか 5. ロールバック機能はあるのか 6. テキストファイルのデータセキュリティに確保は 7. バックアップはどうするのか 8. 暗号化手法は 9. 画像は扱えるのか 10. データ整合性の保証は 11. UNIXは並列処理できるの 12. OSの変更に伴う移植性は © usp lab. 2016 Confidential Proprietary 2 1. 何故処理スピードが速いのか(1) 各コマンドはプリミティブなC言語で記述され、入出力バッファ、メモリ操作、演算ア ルゴリズムが工夫されています。 シェルはダイレクトにカーネルの提供する機能を使用し、不必要な処理やミドルウェア に相当する部分の処理が無いため基本的に高速な処理系です。シェルの記述におい て、処理の遅い変数型プログラミングや関数型プログラミングを避け、各コマンド の処理速度を活かすデータフロー型プログラミングを行うことでその特性を発揮さ せます。 頻繁に行うソートについては、予めソートして整理しておき、処理上も不要なソートは 避けています。また、ソート自体も非常に高速なコマンドを開発しており、1,000 万レコードのソートは1秒程度で実施できます。 © usp lab. 2016 Confidential Proprietary 3 1. 何故処理スピードが速いのか(2) データの更新アーキテクチャーの差異 DBアーキテクチャー Table1 Key1 Key2 Unicageアーキテクチャー マスター POS Table3 伝票 整合OK Key2 変更 Table2 並行更新処理 変更 変更 Key1 Key3 Table4 Key3 テーブル1のあるレコードに変更をかけようとする時、テ ーブル間での不整合を避けるため、DBでは各テーブルの 該当レコードに排他制御をかけに行くが、そのためのロッ ク・リリースの処理に時間がかかる。変更レコードが多数 ある場合、変更レコード数分の回数の時間がかかる。 レコードの追加・削除を行う場合、必要なレコードの回数 分だけメモリーの確保・削除(malloc)を実行するため の時間を要する。 © usp lab. 2016 Confidential Proprietary 処理中の 不整合を 認める 排他処理は行わず スピードを重視する 整合OK 必要な変更処理が終了した時点で整合が取れて いればよい。変更レコードが多数あってもレコ ード自体にはロックはかけない。 レコードの追加・削除を行うのに必要な全メモ リー量を算出し、一括してメモリーの確保・削 除を行う。 1回だけmallocを実施する。 4 2. データ管理はどうするのか ユニケージではファイルの整理法を持っています。お作法に基づきレベル1~レベル5 にファイルを分類整理します。 L1:原始データ、L2:確定データ 、L3:整理データ 、 L4:アプリケーションデータ 、L5:出力データ データやプログラムは、次のようなディレクトリーで管理される。 [ディレクトリー]:[役割] DATA/LV1, DATA/LV2, DATA/LV3, DATA/LV5:レベル 1, 2, 3, 5 データ SYS:シェルスクリプト置き場 LOG:シェルスクリプトの走行ログ置き場 LAYOUT:レイアウトファイル置き場 SEMAPHORE:セマフォファイル置き場 RCV:外部システムからの受信ファイル置き場(レベル 1) SND:外部システムへの送信ファイル置き場(レベル 5) BACKUP:シェルスクリプトのバックアップ置き場 ユニケージではファイルの分類についての「お作法」が存在するが、 特別な管理システムやツールがあるわけではない。 © usp lab. 2016 Confidential Proprietary 5 3. ファイルのリレーションはどうするのか join1(インナージョイン)、join2(アウタージョイン)などのコマンドで、 Keyを基に、必要な時にその場でファイル同士を結合する。 例えば、販売データファイルと品目マスターファイルを join し、 販売データファイルに品目を組み込んだファイルを生成することが出来る。 販売データファイル xx xx xx xx A B C A 品目マスターファイル 品番 A B C xxxx xxxx xxxx xxxx 品目 a b c cjoin2 新しいファイルx x A a x x x x xx Bb xxxx xx Cc xxxx xx Aa xxxx © usp lab. 2016 Confidential Proprietary ユニケージでは詳細なジョインの機能別 にコマンドが用意されている。 インナー ジョイン アウター ジョイン マルチ ジョイン フル ジョイン ソート済 join1 join2 join1x join2x ソート未済 cjoin1 cjoin2 cjoin1x cjoin2x キーの順 6 4. 排他制御はどうするのか DBでは、排他制御のためにDBMSが物理的なレコードを自動的にロックするのに対し、ユニケージ では排他的に処理したい範囲を ulockコマンド を使って、明示的にプログラムで指定します。 入力トランザクションファイル ulock ロックファイルの生成 アプリ参照ファイル.new アプリ参照ファイル 更新後 rm ロックファイルの消去 mv ファイル名を元に戻す アプリ参照ファイル 更新前 ロックファイルが存在する間は 他アプリケーションは実行が一時停止する シェルスクリプトのイメージ if ulock ロックファイル then upl 入力トラン アプリ参照ファイル > アプリ参照ファイル.new mv アプリ参照ファイル.new アプリ参照ファイル rm ロックファイル fi ※ulockコマンドにはタイムアウト、強制ロックファイル消去機能があります。 © usp lab. 2016 Confidential Proprietary 5. ロールバック機能 DBアーキテクチャー Unicageアーキテクチャー Aファイル XXXX aaaa cccc YYYY 更新済 aaaa→XXXX 更新済 bbbb→YYYY × 未済 cccc→ZZZZ 旧データは自動 バックアップされる。 バックアップを戻 す 過去1回しか戻らない! aaaa cccc bbbb © usp lab. 2016 Confidential Proprietary Cファイル cccc XXXX × 未済 B´ファイル バックアップを戻 す 未済 bbbb YYYY A´ファイル ★ Bファイル 未済 未済 更新後のA´ファイル、B´ファイ ルを削除すれば更新前の状態に復 帰する。 ユニケージでは更新前・後のファ イル履歴は自動的には削除しない 。 設計に従い、必要に応じ消したい 時に削除を行う。 自ら削除しない限り、いつの時点 にでも戻ることが可能である。 8 6. テキストファイルのデータセキュリテイの確保は (1) アプリケーションセキュリティ アプリケーション(アクセスツール)をアクセス権限付きになるように開発することが出来る。 この開発には、テーブルを参照して、読み・書きの許可を与える”getpermission”コマンドを使 えます。 (2) データセキュリティ 開発者以外はユニケージのテキストファイルに直接アクセスが出来ません。開発者にもアクセ スさせたくない時は、OSの設定を変更します(例えばSELinuxの設定を使う)。 システム管理者(OSを設定する人)にもアクセスをさせたくない時は、データを暗号化し、セキ ュリティ管理者のパスワードがないと解読出来ないようにします。 DBアーキテクチャー Unicageアーキテクチャー DBMS アクセスツール データ セキュリティはDBMSの機能次 第 © usp lab. 2016 Confidential Proprietary コマンド アクセスツールを絞って、ア クセスツールにID、PWDな どの制御を盛り込む。 例えば、SELinuxはファイル をアクセスするコマンドを限 定することが出来る。 アクセスツールを絞れない 場合には暗号化をする セキュリティは設計でコントロールする 7. バックアップはどうするのか Linuxで用意されているバックアップコマンド tar,cpio,…などが使える。 例えば、homeの下のディレクトリー user1 をディレクトリーごとバックアップする場合には # cd /home # tar cvf /dev/nst0 user1 バックアップ ストレージ nst0 user1 12/1 12/2 tar cpio 12/3 散っているファイル群 日次バックアップ 構造を保持して 1ファイルにするコマンド © usp lab. 2016 Confidential Proprietary 10 8. 暗号化手法は 様々な暗号化コマンドを使うことが可能です。 パスワード付きzipファイルを作成・解凍する zip –e option zip –p option unzip –p option 共通鍵や公開鍵で暗号化するコマンド openssl GNU Privacy Guard(GNU PG)を使ってファイルを暗号化するコマンド gpg 様々な暗号化アルゴリズムを組み合わせて、よりセキュリティを高めることも可能。 zip original_file ¦ openssl ¦ gpg > target_file 暗号化コマンドについては以下参照 © usp lab. 2016 Confidential Proprietary : http://ameblo.jp/itboy/entry-10484615897.html 11 9. 画像は扱えるのか UNIX/Linuxで公開されている画像処理コマンドを利用することが出来ます。 例えば ImageMagick には次のような機能があります。 ■画像形式の変換 convert 画像ファイル名 変換後のファイル名.拡張子 拡張子には、先の表に示した拡張子を指定する。例えばJPG形式からPPM形式 への変換は、 convert test.jpg test.ppm このコマンドを実行すると新しくtest.ppmが作成される。(元のtest.jpgも残っ ている) ■画像のモノクロ化 画像形式の変換で、モノクロ用の形式に変換すればよい。 convert 画像ファイル名 変換後のファイル名.pgm PGM形式は非圧縮形式なので、必要ならさらに別の圧縮形式に変換すること ■画像の拡大縮小 convert -scale 変換したい比率% 画像ファイル名 変換後のファイル名 convert -scale 変換したい 幅x高さ 画像ファイル名 変換後のファイル名 convert -scale 30% test.jpg test.ppm ■部分画像の切り出し convert -crop 左上x座標,左上y座標+幅+高さ 画像ファイル名 切り出す画像名 ■複数画像からアニメーションGIFの作成 convert 入力画像1 入力画像2 入力画像3 以下入力画像… 出力画像名.gif ■複数画像の結合 複数画像のカタログ画面を作成 montage 入力画像1 入力画像2 入力画像3 以下入力画像… 出力画像名 © usp lab. 2016 Confidential Proprietary 12 10. データ整合性の保証は 一般のDBでは、一つのキーに対しデータは一つしか入力できないようにし、データは 「物理的にひとつ」の原則でデータの整合性や一元管理を担保している。この方法で は、例えば日次データ処理や月次データ処理など、複数の処理の結果に不整合が生じ た場合、システム上この不整合を修正することができないというデメリットがある。 一方、ユニケージには「元データ」という考え方があり、「物理的にひとつ」にこだわ ってはいない。つまり、そのデータが事実であれば全てLevel1ファイルとして保管 し、各種の処理の結果を一意的にして、元データと結果の整合性を取っていく。 複数の処理の結果に不整合が生じた場合、処理を正しいものに直し、再処理させるこ とにより合理的に不整合を修復できる。 ユニケージのデータ整合性は正しい「元データ」の保管に依拠しており、元データが 損なわれないようにコピー、バックアップなどでシステムの安全性を高めている。 © usp lab. 2016 Confidential Proprietary 13 11. UNIXは並列処理できるの UNIX自体はマルチユーザー、マルチタスクOSであり、複数のユーザーの 複数のジョブを同時に実行できます。 ジョブを並列化するには、ジョブ起動時に、“&(バックグランド)”を指定します。 “bg” や “fg” コマンドをつかえば、処理の途中でジョブを並列化したり、順 次処理化したりすることができます。 また “nice” コマンドでは並列処理の 優先順位を変更でき、“stop”や “kill” コマンドでジョブを停止したり中断し たりすることができます。 並列で動作している状況は "jobs" や "ps" や "tree"コマンドで確認することができます。 これらのジョブコントロールコマンドをつかってシェルスクリプトを記述すれば、 指定の並列数で並列処理を行うこともできます。 © usp lab. 2016 Confidential Proprietary 14 12. OSの変更に伴う移植性は ユニケージは、UNIXであれば どのOS上でも動作します。 Linux、MacOS X、AIX、HP-UX・・・ など これを支えているのは、以下の事柄がユニケージ全体で貫かれているからです。 ・コマンドは標準C言語で記述(OSが変わってもリコンパイルのみで動作する) ・データはテキストファイル(コピーするだけ) ・プログラム(シェルスクリプト)は標準シェル(bash)の標準的な記述のみで作 成(OSのバージョンによる影響を受けず、コピーするだけ) これによって、OSそのものが変わっても、あるいはOSのバージョンが変わっても簡 単に移植することが出来ます。 「移植性が高い」ことによるエンドユーザのメリットは、 ・構築したシステムの永年使用が可能 ・H/Wの日進月歩のパワー向上を、プログラム改変なく享受できる ・余剰になったサーバーを業務に再利用することも出来る ・OSのバージョンをほとんど意識しなくて良い © usp lab. 2016 Confidential Proprietary 15 本資料に関するお問い合わせは以下までお願い致します。 [email protected] ©©usp lab. 2016 Confidential Proprietary USP Lab. 2016 16
© Copyright 2024 ExpyDoc