ユニケージ FAQ

ユニケージ
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