34 (2017 ) Unix UNIX 20 RDBMS RDBMS Java Unix Unix Unix Unicage is a system development method based on UNIX philosophy and has been applied on business system integration for 20 years. In these days, almost all business system is based on RDBMS. All data is stored in RDBMS and processed by some programs written in programming language such like Java. In other hands, the systems developed by Unicage is based on only Unix functions, because Unicage can build database system. All data is tored in text files of Unix file system and processed by shell commands those are invoked by shell script and cooperating by Unix pipe. In this paper, the authors explain how to construct databese and operate the data bye Unicage, and about comparison between Unicage system and RDBMS based system. 1 Unicage : Database development method by Unix File System and Schellscript This is an unrefereed paper. Copyrights belong to the Author(s). Nakamura Kazutaka Tounaka Nobuaki,, Universal Shell Programming Laboratory Ltd.. RDBMS 1 Java 1 Relational DataBase Management System
1. 1 DBMS Unix (USP ) ( )[3] 20 UNIX [2] KISS UNIX 1. 2 (Tukubai ) Unix OS Unix USP Tukubai Tukubai 1. 3 Unix SQL Tukubai usp Tukubai Open usp Tukubai usp Tukubai 2 ( ) Unix
2. 1 Unix Unix Unix OS Unix Tukubai Unix Tukubai 2. 1. 1 Unix Unix 2. 1. 2 Unix crond sshd httpd Web RAM Unix NFS 2. 1. 3 1 2. 2 3 2. 2. 1 ( ) UTF-8 2. 2. 2 ( ) ( )
2. 2. 3 () ( ) crond 2. 3 5 2. 4 2 5 2. 4. 1 1 DATAMASTER L1: 1 L1( 1) L1 L1 L1 L1 L1 L1GET
L2: 2 L2( 2) L2 L1 L1 L2 L2 Tukubai L1 L2 Execl rexce L2 L2MAKE L3: 3 L3( 3) L3 L2 L3 L3 L3 L3 2 1 () L2 2 L2 L3 ( ) L3 ( ) L3 L3 L3 L3 L3 L3MAKE 2. 4. 2 2 APPMASTER L5: 5 ( 4 ) L5( 5) L5 L5 L3 L1 L4 L5 L1
L5 L5 L5 Tukubai Execl wexce L5 L5MAKE L4: 4 L4( 4) L3 L5 L5 L3 L4 L5 L4 L4 ( ) L4 L4MAKE 3 () 3. 1 DATA : L1 : L1 ($lv1d) L2 : L2 ($lv2d) L3 : L3 ($lv3d) SCRIPT : APP : REPORT : L4 : L4 ($lv4d) SCRIPT : SHCED : 2 5 DATA APP/REPORT DATA/L1 lv1d $lv1d $lv1d $lv3d 3 TENPO URE $lv3d URE_TEN_MON
3. 2 3. 2. 1 POS ID ID 0001 20170401102340 1234567890123 2280 19 0001 20170401102340 2345678901231 2040 17 0001 20170401012340 3456789012312 2760 23 0001 20170401103052 1234567890123 2280 19 0001 20170401013052 3456789012312 2760 23 0001 20170401103052 4567890123123 2400 20 ID ID ID 0001 201611 3680187304 0001 201612 4080081360 0001 201701 4971217222 0001 201702 3386136033 0001 201703 4760390169 ID 3. 2. 2 ID 0001 0311111111 0002 0322222222 0003 0333333333 0005 0355555555 0006 0366666666 ID 0001 0311111111 20170401102555 0002 0322224444 20170401102326 0002 0322223333 20170401102401 0003 0333334444 20170401102433 0004 0344444444 20170401102624 ID ( ) ID 0001 2016/11 3,068,087,304 ID YYYY/MM
3 5 3. 3 L1GET: L1 Web L1GET 3. 2 L1 $ cat $lv1d/ure/0001/20170401102340.923 0001 20170401102340 1234567890123 2280 19 0001 20170401102340 2345678901231 2040 17 0001 20170401012340 3456789012312 2760 23 ID <YYYYMMDDHHMMSS>.< ID> 3 3 L1 L1GET 3. 4 L2MAKE: L2 L1 L1 3. 2 L1 L2 echo $lv1d/ure/????/20170401??????.* xargs cat > $lv2d/ure/20170401 1 4 1 L1 2 ID cat ID xargs L2MAKE L1 L2MAKE 3. 5 L3MAKE: 3. 5. 1 1 2017 4 L3 $lv3d/ure/201704 L3 3. 2. 1 3. 5. 2 L2 L3 L3 L2 L3
up3 key=1/2 $lv3d/ure/201704 \ $lv2d/ure/20170401 > $lv3d/ure/201704.new mv $lv3d/ure/201704{.new,} 1 2 up3 key=1/2 1 ID 2 L3 L2 3 2 mv L2 L3 $lv3d/ure_ten_mon/2017 self 1 2.1.6 4 $lv2d/ure/20170401 up3 key=1/2 $lv3d/ure_ten_mon/2017 - sm2 1 2 3 3 > $lv3d/ure_ten_mon/2017.new mv $lv3d/ure_ten_mon/2017{.new,} 1 self 1 2 4 2 2.1.6 YYYYMMDDHHMMSS YYYYMM 2 up3 3 sm2 1 2 3 3. 2. 1 3. 5. 3 ID 2 $lv3d/tenpo/id_name : ID, $lv3d/tenpo/id_tel : ID, $lv3d/tenpo/id_name 0001 0002 0003 0005 0006 loopj $ loopj num=1 $lv3d/tenpo/id_{name,tel} 0001 0311111111 0002 0322222222 0003 0333333333 0005 0355555555 0006 0366666666 loopj num=1 1 2 3. 5. 4 L3 L2 L3
3. 6 L4MAKE: L3 L3 L2 $lv2d/tenpo/tenpo_op.20170401 L3 $ loopj num=1 $lv3d/tenpo/id_{name,tel} > up3 key=1 - $lv2d/tenpo/tenpo_op.20170401 > getlast key=1 > delr 4 L4 3. 2. 2 L4 L5 2 > self 1/3 > $lv3d/tenpo/new 3. 6. 1 self 1 2 $lv3d/tenpo/new > $lv3d/tenpo/id_name self 1 3 $lv3d/tenpo/new > $lv3d/tenpo/id_tel rm $lv3d/tenpo/new 1 5 6 7 8 1 loopj 2 up3 key=1 1 3 getlast key=1 1 ( ) 4 delr 4 5 self(select Field) 1/3 1 3 $lv3d/tenpo/new L5 L3 L3 L5 3. 2. 2 join2 key=1 $lv3d/tenpo/id_name \ $lv3d/ure_ten_mon/2017 > $lv4d/2017 1 2 join2 $lv3d/ure_ten_mon/2017 $lv3d/tenpo/id_name key=1 1 $lv4d/2017 0001 201611 3680187304 0001 201612 4080081360 0001 201701 4971217222 0001 201702 3386136033 0001 201703 4760390169 L5 L5 3. 6. 2 L4
L4 L4 keycut $lv4d/%1.2017 $lv4d/2017 1 keycut $lv4d/2017 $lv4d/0001.2017 ID 0001 2017 $lv4d/0001/2017 L5 ID 1 500MBi 1 ID ID N 3. 7 L5MAKE: L4 L5 ID0001 201704 L5 selr 3 201704 $lv4d/0001.2017 dayslash yyyy/mm 3 comma 4 1 selr ID0001 3 2017/04 ID 2 dayslash 3 YYYYMM YYYY/MM 3 comma 4 3 3. 7. 1 L1 L4 L4 L1 L5 2017 4 2 ID0001 201704 { selr 3 201704 $lv4d/0001.2017 cat $lv1d/ure/0001.20170402??????.* self 1 2.1.6 4 join2 key=1 $lv3d/tenpo/id_name } sm2 1 3 4 4 dayslash yyyy/mm 3 comma 4 1 7 4 6 8 L5 4 6 ID 0001 2017
4 2 L4 $lv4d/0001.2017 1 7 4 8 8 sm2 9 10 4 RDBMS 4. 1 RDBMS OS Tukubai 4. 1. 1 L1GET L2MAKE L3MAKE L4MAKE (L5MAKE ) 4. 1. 2 OS 3. 7. 1 L1 L5 L1 OS Unix rename(2) mv file.new file 4. 2 BASE BASE LV1 ACID 5 3
5. 1 time L1 L4 () L5 ( ) L2MAKE.URE : L2MAKE L3MAKE.URE_TEN_MON : L3MAKE L4MAKE.URE_TEN_MON : L4MAKE L5MAKE.URE_TEN_MON : L5MAKE( ) L5MAKE.URE_TEN_MON 3. 7. 1 3 CPU : Intel(R) Xeon(R) W5580 @ 3.20GHz 8 Cores Mem : 47 GiB OS : CentOS Linux release 7.2.1511 (Core) MySQL : Ver 14.14 Distrib 5.7.18, for Linux (x86 64) using EditLine wrapper UTF-8 yum Linux 2 11 1 3 10 / / 10 150 15 10 3 100 750 75 10 4 1000 4500 45 10 6 50 60 L1 L2MAKE L2MAKE 5. 2 0.14 0 1.71 0.01 103.91 0.09 12.2 60.7 L2MAKE L3 L1 0 time L4 1
12 L1 4.5 6 6. 1 POSIX POSIX Unix version 7 join(1) SQL join cut(1) paste(1) sort(1) -k -m awk(1) Tukubai 6. 2 NYSOL 1970 [4] 2 (RPG ) NYSOL [1] NYSOL KDD(Knowledge Discovery in Database) 2 6. 3 POSIX POSIX UNIX POSIX [5] POSIX Unix OS POSIX POSIX 6. 3. 1 USP InfiniBand usp BOA Hadoop 7 7. 1 5 2
7. 2 NYSOL RDBMS NoSQL Java 7. 3 / RDBMS NoSQL UNIX UNIX 7. 4 8 [1] Cheung, S., Nakamoto, M., and Hamuro, Y.: NYSOL: A User-Centric Framework for Knowledge Discovery in Big Data, International Journal of Knowledge Engineering, Vol. 1, No. 3(2015). [2] Gancarz, M.,, and : UNIX :,, 2001. [3] :,, 2010. [4] :, 2020, 1987. [5],,, : POSIX,, 2016, Vol. 2016(2016), pp. 1327 1334.