2017年4月29日土曜日

linuxのhostnameコマンドを使う時の注意点、uname -nを使うようにした理由

自分がこれから作業するサーバが果たして目的のサーバなのかを確認するとき、

#hostname

と入力して、

XXXX

返ってくる結果を見て間違いないことを確認します。
※XXXXは目的のサーバ名。

ただ、hostnameの引数に、YYYYと付けたりした場合、

#hostname YYYY

※YYYYは適当なサーバ名とします。

なんと、サーバ名がXXXXからYYYYに変更されてしまいます。
再起動すれば元に戻りますが、うっかりコピペミスやらで、サーバ名が変更してしまうことになります。
本番環境だったらと思うと怖い怖い。

そこで、以下の通りにサーバ名を確認するように変更しました。

# uname -n

XXXX

これでも、サーバ名は確認できるし、変更の心配はありません。

2017年4月28日金曜日

ざっくりと、ORACELのディスクサイズ設計方法

新規にORACLEデータベースを作成する場合、まず必要なディスクサイズを見積もります。
私は以下の方法を使います。
 ※注意:本来は、アーカイブ領域、一時表領域、undo表領域の容量も考慮しますが、これらは机上で見積もるのは難しいです。そこで、今回はデータ領域だけに絞って話をします。
 ■1. テーブルサイズを求める。
   そのテーブルの最大件数×1レコードサイズ
   これをデータベースに作成する予定のテーブル数分計算します。
 ■2. データベースに作成する全テーブルのサイズを合計する。
   つまり、1で計算した全テーブルを足した合計になります。
インデックスも同じように求めます。
テーブルと異なる点として、インデックスの1レコードのサイズは、インデックスを構成するカラムの桁数を合計したものになります。
テーブルサイズの合計と、インデックスサイズの合計を足したものが、そのデータベースのデータ領域に必要な容量です。
これで、ざっくり求まります。
あとは、このサイズを一本当たりのディスクサイズで割れば、必要なディスク本数が求まります。
ただし、あくまでざっくりですので、ここに適当な安全率を掛けることを忘れずに。
安全率は過去のプロジェクトで作成したデータベースを参考にして決めることが多いです。
今回作成するデータベースと似ているものを参考にします。
参考にしたデータベースの設計値と運用後の容量を比較して、今回作成するデータベースの安全率をどうするか決定します。
例えば、1.3~1.5倍と言ったように決定します。
あと、容量に余裕を持たせるために、閾値を考慮する必要があります。
安全率を掛けた結果に対して、閾値のパーセンテージで割り算してください。

以下、簡単な例で計算をしてみます。
例)AとBという二つのテーブルを持つデータベースの容量を求めよ。
 ただし、ディスク使用率が80%以下を維持できることを考慮すること。
 安全率は1.3倍とする。
 ■1. テーブルサイズを求める。
   ・Aテーブル
    最大件数:100,000,000件
    レコードサイズ:100Byte
    Aテーブルのサイズ
     100,000,000件×100Byte=10,000,000,000Byte(10GByte)
   ・Bテーブル
    最大件数:200,000,000件
    レコードサイズ:50Byte
    Bテーブルのサイズ
     200,000,000件×50Byte=10,000,000,000Byte(10GByte)
  ※テーブルにインデックスが存在する場合は、同じように計算してください。
   今回は単純な説明にしたいためインデックスを省いてます。
 ■2. 1で求めた全テーブルのサイズを合計しデータ領域のサイズとする。
  AテーブルサイズとBテーブルサイズを足す。
  10GByte+10GByte=20GByte
 ■3. 2で求めたサイズに安全率1.3を掛ける。
  20GByte×1.3=26GByte
 ■4. 3で求めたサイズの容量閾値を80%としてサイズを見積もる。
  26GByte÷0.8=32.5GByte
  ※設定したサイズぎりぎりで運用するのは危険なため閾値を考慮した
   サイズにしています。
   ここでは使用率80%を維持するものとし、常に20%(6.5GByte)の容量を
   余裕として確保するように計算しています。
 ■5. 4で求めたデータベースサイズを一本当たりのディスクサイズで割って、
   必要なディスクサイズを見積もる。
  ※1本あたり5GByteとする。
  32.5GByte÷5GByte=6.5G本
  端数切り上げで、5GByteのディスク7本必要とする。
ここで注意してほしいのが、最大件数は業務チームから頂くということです。
なるべく正確な数値を頂きたいところですが、開発当初は中々決まらない数字でもあります。
なので、業務からの回答も遅めになるかと思います。
そんな時は、多目でもいいので早く出してもらえるように働きかけましょう。
テーブルやインデックスのレコードサイズは、ざっくりならカラムごとの桁数を積算することで求めることができます。
実際には行ヘッダや列ヘッダまで考えると正確だとは思います。
ですが、そこまで考慮して計算すると時間も掛かるし、何よりカラムが増えたり減ったりしたときの再計算が面倒です。
そこで注目してほしいのが、安全率を掛けたり、ディスク本数を求めるところで端数を切り上げていると言うところです。
細かいところに目を向けても、どの道、上記の計算で丸められて大き目にされてしまうのです。
また、ORACLEはエクステントサイズ単位で容量を使うので数Byte単位で正確に見積もったとしても、内部処理で丸められてしまう運命なのです。
テーブルやカラムの数だって、ここで設計した後、増えたり減ったりするのが常です。
と言うことで、ここで正確さを求めすぎて、時間を費やすくらいなら、もっと他にも時間を掛ける場所は幾らでもあります。
ディスクの見積もりは、ある程度ざっくりスピーディにやることが肝かなと思ってます。
とにかく、早く仕上げて他のメンバーに見てもらうって言うのが大事だと思います。
確認してもらうことで、皆の思惑とこっちの見積もりとの間に思い違いや、すれ違いがあるのが分かって、早めに修正できるからです。

2017年4月15日土曜日

「1週間でLPICの基礎が学べる本 第2版」これを読んだら、もっとLinuxが知りたくなりました

LPICを受ける予定はないですが、Linuxを使用する仕事が多くなってきたので、初心者向けと思われる本書を手に取ってみました。


私はORACLE使いですが、OSにはあまり詳しくないです。
それでも、ORACLEのインストール作業や設定作業で必要なコマンドについては一通り把握しているつもりでした。
例えば、ls、tail、rmp、rm、mkdir、scp、cp、mount、cdなど。
ですが、この本を読んで、まだまだ知らないことがあるということと、Linuxがコマンドを受け取って内部でどういう動作をしているかと言うことが少し分かりました。

 ・manコマンドの中でlessコマンドが使われてる
 ・ファイルを削除するというのは、iノードとファイル名とのリンクを切断すること。
  厳密にはすべてのハードリンクを削除した時点で、ファイル内容へのアクセス手段がなくなるときが、本当に削除されたということ。

など、目から鱗でした。

字が大きめで読みやすく、色もどぎつく無くて図が分かりやすかったです。
この本だけで、全てを学べるわけでは無いですが、これから知識を深めようと思ったので、足掛かりにはなったと思います。
利用者として、一通りLinuxを使ってみた人が、その復習用として使えると思いました。

2017年4月9日日曜日

AIを使ったmagistoで動画作成してみた

なかなか面白いアプリを見つけました。

Magisto - 魔法のビデオエディター

スマホで撮った写真なんかを、何枚か指定して、○○風にアレンジするように指定すると、それっぽいPV動画を作ってくれます。

以下、毎日の何気ない風景をDJ風に指定して、作った動画です。

再生するときは音が出るので、音量に注意してください。



なかなか、手作業でやると面倒なエフェクトを掛けてくれるし、タイトルもいい感じで入れてくれます。
あと、音楽もピッタリです。
穏やかな風景たちがカッコいいムービーになった感じです。
お誕生日風とか、ラブ風とか色々あるんで試してみたいです。

他にもこういう動画作成アプリはあるようですが、magistoはAIを使っているところに特徴があります。
動画作成後に評価を登録することが出来て、その結果をフィードバックして次に作る動画に改善を入れていくのでしょう。
笑顔の画像を自動で判別して柔らかい加工をしたり、猫の画像と判断して猫の声を入れたり、人工知能だったら深層学習でそういうことも可能になるのでしょう。
多くのユーザが使って評価すれば精度が上がって、自動で簡単に雰囲気ピッタリの動画が作れるようになるのでしょうね。

何て、便利な時代になったんだ。。。