2009年11月27日

経緯

しばらく、社内システム部門のことについて記事を書きたい。そのために経緯を説明してみる。私は、かれこれ十数年にわたり社内情報システム部門で従事している。その間にはいろいろな変化が伴ってきているが、入社当時、システム部門には、30人近い人員がいた。古い会社であるため、パンチャーと呼ばれる女性もいたことを覚えている。その時点で数十年と動いている汎用機が中心となっていたためである。私が生まれたころにも動いていたという汎用機。プログラムは、カード(マークシートのようなもの)にパンチで穴を開け、それを順に読み込ませるという今では考えられない実行形態であったらしい。メモリ、CPU、ハードディスクも今のパソコンに比べれば10分の1以下のレベルであった。それが、年々進化し、端末が備え付けられ、プログラムを端末から作成することができるようになり、機器も処理能力アップされてくる。そしてパソコンの登場である。さらにMicrosoftのオフィスが展開され、EUCが推奨されるようになる。この時期から、情報システム部門に対する風当たりが強くなってくる。コストはかかる、言っている意味がわからない、世間は情報化と言っているということから、アウトソーシングを提唱することになる。おのずと、情報システム部門の人員は少なくていいという極論に達し、削減が行われる。その進行はとどまるところを知らず、機器のスペックが上がることとオープン化という言葉に踊らされ、社内に蓄積されるべきノウハウをも排出してしまった。そして現在に至る。

このアウトソーシング、会社にとって将来どのような意味となっていくのだろうか?

【システム部門の最新記事】
posted by yskillup at 22:27| Comment(29) | TrackBack(0) | システム部門 | このブログの読者になる | 更新情報をチェックする

ITリテラシー

かなりのご無沙汰。前の記事が明けまして。もう今年も残すところ1ヶ月ほどとなってしまった。忘れていたわけではないが、ついついがここまで来てしまった結果。また復活したい。

私は、情報システム部門に居て十数年になる。これまでの経緯も知っている。汎用機、サーバ、パソコンと時代とともに機器は進化を遂げている。64Kのメモリが今や公然と1G以上となり、CPUも計り知れないスピードを得た。しかし...

情報リテラシー(じょうほう - 、information literacy)とは、情報 (information)と識字 (literacy) を合わせた言葉で、情報を自己の目的に適合するように使用できる能力のことである。「情報活用能力」や「情報を使いこなす力」とも表現する。(-Wikipediaより)


社内における、情報リテラシーは進化を見ない。へたをすれば退化しているのではないだろうか。少ない資源で工夫をこらし、最小限のデータで何かしら成果をあげようと努力していた時代があった。高い処理能力を得たにも関わらず、考え方がついてこず、風評などに惑わされシステムが一人歩きを始めてしまっているように感じる。このままでいいのだろうか?

posted by yskillup at 00:45| Comment(0) | TrackBack(0) | システム部門 | このブログの読者になる | 更新情報をチェックする

2009年02月06日

明けまして...

今年になってから初の投稿となり。年明けにはと思いつつ1ヶ月が過ぎ。あっという間に日々が過ぎている。この1ヶ月、ほとんど汎用機での開発がメインで納期があるので余力がなかったのが現実(←いいわけ)。さてさて気を取り直して。と言いたいところだが、あと数日は難しい。懲りずに来ていただけると幸いです。

posted by yskillup at 21:58| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2008年12月24日

今年&来年

今年は、なにかと忙しくブログも更新できずまま。なんとか復活して少しでも備忘録になればと更新している。年末になるにつれ、忙しくなりもうすぐ年末へ突入で、今度は家のことでいろいろと忙しくなる。またしばらく休んでしまうが、また来年新たな気持ちで更新する。是非、お越しください。
posted by yskillup at 21:49| Comment(11) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2008年12月17日

データベースバックアップ

業務でデータベースを使うときは、やはり気にかけたいのはバックアップ。昨今のサーバ機の寿命は4年程度。当たり外れがあってもそれくらいの年月を経つと老朽化が進む。機器は購入したり交換すれば問題ないが、ソフト(データ)はそうはいかないことが多い。日ごろからバックアップに気をつけたいところ。とは言っても、開発し運営に移るとバックアップがわずらわしいこともある。手順が複雑であったり、本当にバックアップが取れているのか、もしくはリストアができるのか、という不安があったりする。個人的に行っておりバックアップについて述べてみる。(これが正解とは言えないが)

・バックアップとサーバのリブート(再起動)は毎日行う。
・バックアップは、簡素に結果がわかる。
・リストア手順が簡単にできる。


まず、タイマーソフトなどでバックアップを取る。バックアップ時間を想定し(テストを行い)余裕をもって、タイマーソフトによりリブートを行う。Windowsの場合、定期的にリブートを行わないとOSに不具合がでることが多いため。タイマーソフトで行えば手間はかからない。

バックアップは、3種類行っている。一つは、同サーバ内の物理的ハードディスクにデータバックアップ。一つは、別サーバへのデータバックアップ。一つは、テキストベースのデータバックアップ。

これだけでもしておけば、ハードが故障してもなんらかの形で動かすことができると思っている。一番大切にしたいバックアップは、テキストベースのバックアップ。MYSQLでは、INTO OUTFILE でテキストにデータを出力することができるで楽(後述)。この生成されたテキストを圧縮し、時系列に保存しておけば、ハードディスク容量の省スペース化もできるしいいと思う。もちろん、リストアもこのテキストからINTO INFILE で簡単にすることができるので手順は簡単で、内容も確認することができる。

バックアップにはそれなりのインフラが無ければできないことであるが、もしない場合ならないなりに工夫していかなければならないと思っている。LTOなどのバックアップ機器をつなげるもよし、テープなどに出力するもよし、さまざまな手法があるが、規模とコストを考えてより簡単にバックアップをとり、いざとなったら即、リストアできることが肝心である。

posted by yskillup at 23:14| Comment(0) | TrackBack(0) | MySQL | このブログの読者になる | 更新情報をチェックする

2008年12月14日

フロー制御関数

SQL文を作成している際、条件によって出力を変えたい場合がある。抽出、集計についてはこれまでで簡単にできるようになったが、条件によってカラムのセット、内容の変更などはできない。そこで使われる『フロー制御関数』。これを使うと一つのSQLでいろんなことができるようになる。

[CASE]

CASE 対象 WHEN 1 THEN a WHEN 2 THEN b ELSE c END

この構文(CASE〜END)を言葉で説明してみると、「対象」が 1の時はaにし、2の時はb、それ以外ならcにするとなる。THEN、ELSEはさまざまな言語でも使われているのでWHENで区切って考えるとわかりやすいのではないか。

参考に、以前作成している[syain]テーブルより、社員コードが007をAA7に、008をBB8に変更してみる。

mysql> SELECT (CASE syain_code
-> WHEN '007' THEN 'AA7'
-> WHEN '008' THEN 'BB8'
-> ELSE syain_code END) as syain_code,
-> syain_name,syozoku_code FROM syain;
+------------+------------+--------------+
| syain_code | syain_name | syozoku_code |
+------------+------------+--------------+
| 002 | 山田次郎 | 100 |
| 001 | 山田一郎 | 100 |
| 003 | 相澤仁美 | 100 |
| 004 | 相武紗季 | 200 |
| 005 | 秋山莉奈 | 511 |
| 006 | 安倍なつみ | 520 |
| AA7 | 綾瀬はるか | 200 |
| BB8 | 新垣結衣 | 400 |
| 009 | 堂本光一 | 510 |
| 010 | 堂本剛 | 520 |
| 011 | 二宮和也 | 610 |
| 012 | 夏帆 | 511 |
| 013 | 山下智久 | 620 |
| 015 | 里田まい | 300 |
+------------+------------+--------------+
14 rows in set (0.00 sec)


[IF]

IF(条件,a,b)

この構文は、VBなどと同じ構文で、()内は、条件,満たす時,満たさない時 となっている。他の言語と同じように入れ子もすることができる。たとえば、IF(条件,a,IF(条件,b,c))というように複数の条件も指定することができる。

CASEと同じように、以前作成している[syain]テーブルより、社員コードが007をAA7に、008をBB8に変更してみる。

mysql> SELECT
-> (IF(syain_code='007','AA7',
-> IF(syain_code='008','BB8',
-> syain_code))) AS syain_code,
-> syain_name,syozoku_code FROM syain;
+------------+------------+--------------+
| syain_code | syain_name | syozoku_code |
+------------+------------+--------------+
| 002 | 山田次郎 | 100 |
| 001 | 山田一郎 | 100 |
| 003 | 相澤仁美 | 100 |
| 004 | 相武紗季 | 200 |
| 005 | 秋山莉奈 | 511 |
| 006 | 安倍なつみ | 520 |
| AA7 | 綾瀬はるか | 200 |
| BB8 | 新垣結衣 | 400 |
| 009 | 堂本光一 | 510 |
| 010 | 堂本剛 | 520 |
| 011 | 二宮和也 | 610 |
| 012 | 夏帆 | 511 |
| 013 | 山下智久 | 620 |
| 015 | 里田まい | 300 |
+------------+------------+--------------+
14 rows in set (0.01 sec)

ちなみに、IFの時は、LIKEも使うことができるのを確認できた。しかし、CASEの時は、LIKEが使えなかった。構文が違うのだろうか?。IFとCASEはよく似た動きになるので使いやすいほうがいいのではないだろうか。条件が多ければ、CASEのほうがSQL文はすっきり見やすいと思われる。このほかに、IFNULL、NULLIFもあるが詳しくはここでは述べない。個人的にあまり使うことがなく、上記の関数で十分思っている。

posted by yskillup at 18:20| Comment(0) | TrackBack(0) | MySQL | このブログの読者になる | 更新情報をチェックする

2008年12月13日

論理演算子

MYSQLに問わず殆どのデータベースへのSQL文として使われる論理演算子。その昔、算数で習った集合の利用である。社会に出て思い出すとは思わなかった。ここでもおさらいのつもりで。

[論理積]
(AであってBでもある)

AND、&&

Aという条件を満たし、さらにBという条件を満たす場合。
たとえば、a < 10 AND a > 0 であれば aは1〜9。(a整数)

[論理和]
(AかもしくはBか)

OR、||

Aという条件を満たすか、Bという条件を満たすかの場合。
たとえば、a = 1 OR a = 2 であれば aは1,2。(a整数)

後、XOR(排他論理和)というのもあるが、結構ややこしい(説明しづらい)。条件として利用するのであれば、上記の二つを駆使すれば殆どのことは可能である。

posted by yskillup at 22:12| Comment(0) | TrackBack(0) | MySQL | このブログの読者になる | 更新情報をチェックする

2008年12月10日

比較演算子

MYSQLを使っているなかでWHERE句にて比較をする必要がでてくるはず。よく使うことなので知っていることも多いのでおさらいのつもりで。

[等しい]

=

SELECT 1 = 0; 結果:0(FALSE)
SELECT 1 = 1; 結果:1(TRUE)
SELECT '1' = 1; 結果:1(TRUE)

[等しくない]

<>、!=

SELECT 1 <> 0; 結果:1(TRUE)
SELECT 1 <> 1; 結果:0(FALSE)
SELECT '1' <> 1; 結果:0(FALSE)

[より小さい]

<

SELECT 1 < 2; 結果:1(TRUE)

[以下]

<=
SELECT 1 <= 1; 結果:1(TRUE)

[より大きい]

>

SELECT 2 > 1; 結果:1(TRUE)

[以上]

>=

SELECT 1 >= 1; 結果:1(TRUE)

[等しい(NULL含む)]

<=>

SELECT 1 <=> 1; 結果:1(TRUE)
SELECT NULL <=> NULL; 結果:1(TRUE)
SELECT 1 <=> NULL; 結果:0(FALSE)
SELECT NULL = NULL; 結果:NULL

[NULLかどうか]

IS NULL,IS NOT NULL

SELECT NULL IS NULL; 結果:1(TRUE)
SELECT 0 IS NULL; 結果:0(FALSE)
SELECT NULL IS NOT NULL; 結果:0(FALSE)

[cはa〜bに含まれるか]

c BETWEEN a AND b

SELECT 2 BETWEEN 2 AND 5; 結果:1(TRUE)

[cはa〜bに含まれないか]

c NOT BETWEEN a AND b

SELECT 6 NOT BETWEEN 2 AND 5; 結果:1(TRUE)

[cはリストに含まれるか]

c IN (a,b,c,d)

SELECT 'c' IN ('a','b','c','d'); 結果:1(TRUE)
SELECT 2 IN (1,2,3); 結果:1(TRUE)

[cはリストに含まれないか]

c NOT IN (a,b,c,d)

SELECT 'c' NOT IN ('a','b','c'); 結果:0(FALSE)
SELECT 5 NOT IN (1,2,3); 結果:1(TRUE)

これくらい使えれば十分ではないだろうか。文字列、数値の比較には結果が思っているのと違うことがあるかもしれない(思い違いにより)。使う際に、上記例にてテストしてみるのもいいのではないだろうか。事例に直面したときに試すことによって身になると思う。

posted by yskillup at 23:23| Comment(2) | TrackBack(0) | MySQL | このブログの読者になる | 更新情報をチェックする

2008年12月06日

SHOW TABLE STATUS

テーブルの情報を見てみたいことがある。今日、仕事中にテーブルの更新がいつ行われたか見ようと思ってSQL文をすっかり忘れてしまっていた。改めて。

[MYSQL Command Line Client]を起動。(スタート−プログラム−MYSQL)
インストールしたときに管理者権限のパスワードでMYSQLを起動。

データベースのテーブル情報を見る。

SHOW TABLE STATUS;

mysql> USE test;
Database changed
mysql> SHOW TABLE STATUS;
+---------+--------+---------+------------+------+----------------+-------------
+-----------------+--------------+-----------+----------------+-----------------
----+---------------------+------------+------------------+----------+----------
------+---------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length
| Max_data_length | Index_length | Data_free | Auto_increment | Create_time
| Update_time | Check_time | Collation | Checksum | Create_op
tions | Comment |
+---------+--------+---------+------------+------+----------------+-------------
+-----------------+--------------+-----------+----------------+-----------------
----+---------------------+------------+------------------+----------+----------
------+---------+
| syain | MyISAM | 9 | Dynamic | 14 | 23 | 328
| 4294967295 | 1024 | 0 | NULL | 2008-11-11 00:26
:30 | 2008-11-18 00:06:40 | NULL | sjis_japanese_ci | NULL |
| |
| syozoku | MyISAM | 9 | Dynamic | 13 | 28 | 376
| 4294967295 | 1024 | 0 | NULL | 2008-11-19 00:12
:32 | 2008-11-19 00:14:22 | NULL | sjis_japanese_ci | NULL |
| |
+---------+--------+---------+------------+------+----------------+-------------
+-----------------+--------------+-----------+----------------+-----------------
----+---------------------+------------+------------------+----------+----------
------+---------+
2 rows in set (0.00 sec)

少し見難いがテーブルの情報がみることができた。さらに、

[syozoku]テーブルの情報を見る。

SHOW TABLE STATUS FROM test LIKE 'syozoku';

mysql> SHOW TABLE STATUS FROM test LIKE 'syozoku';
+---------+--------+---------+------------+------+----------------+-------------
+-----------------+--------------+-----------+----------------+-----------------
----+---------------------+------------+------------------+----------+----------
------+---------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length
| Max_data_length | Index_length | Data_free | Auto_increment | Create_time
| Update_time | Check_time | Collation | Checksum | Create_op
tions | Comment |
+---------+--------+---------+------------+------+----------------+-------------
+-----------------+--------------+-----------+----------------+-----------------
----+---------------------+------------+------------------+----------+----------
------+---------+
| syozoku | MyISAM | 9 | Dynamic | 13 | 28 | 376
| 4294967295 | 1024 | 0 | NULL | 2008-11-19 00:12
:32 | 2008-11-19 00:14:22 | NULL | sjis_japanese_ci | NULL |
| |
+---------+--------+---------+------------+------+----------------+-------------
+-----------------+--------------+-----------+----------------+-----------------
----+---------------------+------------+------------------+----------+----------
------+---------+
1 row in set (0.06 sec)

それぞれのカラムの説明はまた今度。

QUITで[MYSQL Command Line Client]を終了。

posted by yskillup at 01:27| Comment(0) | TrackBack(0) | MySQL | このブログの読者になる | 更新情報をチェックする

2008年12月03日

汎用機とオープン

続き。

汎用システムは、自社で開発する場合が多いのではないだろうか。私の会社もそうである。開発言語は、COBOL。コボラーと呼ばれなんだかもう過去の人のように言われることもあったり、あまりいい意味で呼ばれない。しかし、個人的に思うのはシンプルで使いやすい。システムを知らない人から見れば受けつけにくいのかもしれない。パソコン、Windowsからみれば、確かに特殊という感は否めない。

かと言って、汎用システムを排除しようということにはならないと思う。もちろん、長所短所がそれぞれにあるわけで、一概に汎用システムはダメということは危険である。

いいところ取りをすればいいのである。汎用機の信頼性を重視し、規模を制約する(コストを抑える)ことにより、基幹システムとして日々の流通部分、在庫管理や販売支援、伝票発行などを行うようにし、データ蓄積や計画、実績管理を開発コストが低く、スピードが速いオープンシステムで行うようにすればいい。

日々の業務分野については、本来の経営活動であり、トラブルや障害は避けなければならない。機会損失になる。となればリスク回避という点より「汎用システム」が優勢である。
実績管理や分析においては、基準や切り口が時代により絶えず変化していくことが必要であり、汎用システムでは小回りが効かない点において対応していくためには少々無理が出てくる。そこでローコストで可変に調整がしやすい「オープンシステム」が優勢である。

この分野によりシステム基盤を分け、運営することにより費用対効果が得られるものと考える。なんでもかんでもオープンシステムにすれば万事解決とはいかない。

posted by yskillup at 23:27| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。