バッチ処理の方法
ハーイ
アキです。
よくないバッチ処理のやり方を見てしまったのでそれについて書こうと思います。
そもそもバッチ処理とはなんぞやって人に説明すると
なんかの処理を自動でやってくれるみたいなやつです。
例えば、毎日9:00にお客さんにメールを送るようなものを作れば、
「メール送信バッチ」なんて言います。
基本的にはメール送信よりかは、大量のデータ作成とか別システムにデータを渡したりします。
じゃあよくないやり方とはなんぞや?
先に結論
・データの処理方法を考えて作る
・無駄な処理はしない
よくないやり方の具体例ですが、こんな感じでした。
お客さんから来たcsvファイルを読み込み1件ずつインサートコミット
これはやばいです。
DBサーバへのDos攻撃かと思いました。
何がやばいのかというと、1件インサートすると1回のDBサーバへの接続が発生する
コミットするとDBサーバへの接続が発生する。
全然やばくないじゃんと思うかもしれないですが、バッチ処理は大量データを扱う場合があります。
今回のバッチ、1回につき扱うデータ数、数万あります。
つまりバッチ処理が始まってから数万回も終わるまで高速でDBサーバに接続しまくる訳ですね。
サーバ潰す気か
じゃあどうすればいいのか
方法としては2つあります。
- コミットを1件ずつではなく、最後に1回のみにする。
- csvをDBにインポートさせる
1はDB接続がほぼ半分に(パフォーマンスはそれ以上)
2はDB接続が1回に!!!
postgresならcopy句がありますね。
すごく便利です。
もし、csvのファイルの中身をチェックしたいとかなら、一旦全部チェックしてからOKのやつだけ取り込むとか、色々やりようはあるからそこは考えてね。
にしても1処理で数万回のDB接続を許容してるってセキュリティ面大丈夫なのか。。?
【要必見】今からITに入られる方々へ
アンニョンハセヨ!
タイトルの通りです。
今からなんの知識もなくされる方、
これからはITの時代とか言ってるし、IT企業にでも行くかーとか言ってる方。
要注意です!
結論
・新卒以外は微妙
・派遣会社はいくな
・自社開発や請負の案件に入れ
ITは確かに大変需要のある仕事です。
筆者も30歳で年収800万超えています。(実はそんなに大したことない)
しかし、みんなが稼げている訳ではありません!!!
なぜならば、全員プログラミングスキルがつくとかいう訳ではないから
どゆこと?
未経験で入りやすい会社は新卒を除くと派遣系の仕事ばかりです。
誰でもできるスキルの関係ないような仕事に回されて、スキルが身につかないまま年を重ね、40歳になっても給料が上がらず誰でもできるような仕事を任され続ける可能性が高いです。
派遣系は、とりあえず派遣したら企業にはお金が入るので、採用はしてくれますが、長い目で見ると自分のためにはなりません。
ですので、自社アプリ開発や、請負を行なっている会社がいいでしょう。
自社で開発案件を行なっていると、社員には色々できてもらわないと困るためか、割とプログラムもすぐにさせてもらえたりします。
私が働いていたのは200人程度の規模の会社でしたが、人が少ないのか、上流工程も無理やりやらされるような環境でした。
そのおかげもあって、色々失敗もしましたが、経験を積みフリーランスでも割と働けるようになりました。
ですので、色々チャレンジさせてもらえる自社アプリ開発もしくは請負の開発案件が一番おすすめです!
まとめ
・未経験者は派遣でスキルの身につかないところに飛ばされがち
・だから今から入る人はちゃんと会社選ぼうね
・とりあえずバイト感覚で稼ぐならOK!
(基盤運用の話は初心者は知らないと思うから別にいいよね)
Json⇔Object 変換 簡単
こんにちは!
知ってはいたんですが、具体的な実装方法がすぐに出てこなかったのでメモ
以下は使う手順です。
- Objectのクラス定義を行う
- Jackson ObjectMapperを使う
終わり。
簡単ですね!
それでは実際にどうするのか見てみましょう!
Objectクラス定義
public class Human {
private int id;
private String gender;
// Getter & Setter
}
Json文字列
[{id: 1, type: "Man"},{id: 2, type: "Women"}]
まずはJson→Object
プログラムコード
ObjectMapper objectMapper = new ObjectMapper();
Human human = objectMapper.readValue(json文字列, Human.class);
これで完了です。
Json文字列できた通り、人間オブジェクトを製造することができましたね!
また逆はこう
ObjectMapper objectMapper = new ObjectMapper();
Human human = new Human(99, "saiyajin);
String jsonAsString = objectMapper.writeValueAsString(human);
JSON文字列
{id: 99, type: "saiyajin"}
慣れないうちはややこしく見えるJson
思ったより簡単でしたね!
ライブラリ追加が必要なので、そのやり方は下に載せておきます。
まともにやったらめんどくさそうだけど、探してみれば楽な方法ってたくさんあるよね。
楽にお金を稼ぐ方法だけはないけどね。
仕事がんばろう。。。
今更ながらブログを始めてみるのであいさつ
初めまして!
今更ながらブログを始めてみます。アキと申します。
このブログではIT関係について色々書いていこうと思います。
プログラム関連で困ったことや新しく知ったこと、たまに全然関係ないことも書きますが、よかったらみてくださいね!