MySQLを使ったデータの洗い替え
案件によって稀に大量のデータを入れ替える必要がある場合どうしていますか? 例えば、ECサイトで何かしらのセールで日付が変わると同時に大量の商品の在庫数を更新したり、連携する外部システムから膨大なデータが送られてきて自社のDBに取り込む場合等です。 一般的にこの様な処理を洗い替えといいます。 件数が少ない場合は、UPDATEなり、DELETE & BULK INSERTを使って直接対象のテーブルに反映させたりするかもしれません。同時トランザクション数や件数が少ないうちは気がつかないかもしれませんが、大量に処理させるとデッドロックが起きたりします。そうするとエンドユーザにも影響がでてしまいます。 洗い替え方法には幾通りか方法がありRDB毎に使える方法が違います。今回はMySQL(5.7)でのケースを考えてみます。 ケース: テーブルを入れ替える 一度にテーブル全体を入れ替える方法を考えてみます. 案1: View による参照の切り替え Viewを使えばテーブルの切り替えが簡単にできます。ただしMySQLのViewには制約があるので使用には注意が必要です。特にViewへの更新系クエリはサポートされてないケースもあります。 OR REPLACEを使えば既存のViewを置き換えることができます. CREATE OR REPLACE VIEW v1 AS SELECT * FROM t2; SWAPPING VIEW TABLES | DB Fiddle にプレイグラウンドを用意してみたので試してみてください。 案2: ALTER TABLE ~ RENAME を利用する(非推奨) 次は ALTER TABLE ~ RENAME を使った方法です. /* Bad */ ALTER TABLE t1 RENAME t_; ALTER TABLE t2 RENAME t1; ALTER TABLE t_ RENAME t2; この方法は何の問題もなくできる様に思えますが、RENAME間に別のコネクションからのテーブルの参照が行われる可能性があります。その場合にテーブルが見つからずエラーになってしまいます。 それならばとトランザクションで囲っても実は無駄です。MySQLはALTER TABLE等のDDLには 暗黙的なコミット(Implicit Commit) が発生する仕組みがあるので何も解決しません。 /* Bad */ START TRANSACTION; ALTER TABLE t1 RENAME t_; /* ここでCommitされてしまう */ ALTER TABLE t2 RENAME t1; ALTER TABLE t_ RENAME t2; COMMIT; 案3: RENAME TABLE を利用する MySQLにはこの様な時に使えるRENAME TABLE があります。RENAME TABLE は1度に複数のテーブルの名称変更ができます。 RENAME TABLE t1 TO t_, t2 TO t1, t_ TO t2; 暗黙的なコミットの確認はできませんが SWAPPING TABLES | DB Fiddle にプレイグラウンドを用意してみたので試してみてください。 ケース: テーブルの一部分だけを入れ替える こちらのケースは、外部システムからデータを受け取り部分的に置き換える様な時に使います。 案1: View による参照の切り替え テーブルを入れ替えると同様にViewが使えます。 この場合は、Viewにはインデックスを仕掛けられないので単純に複数のテーブルをJOINまたはUNIONした物になるのでソート等の実行計画が良くできません. 案2: Partitioning を利用する MySQLには Partitioning がサポートされており、このパーテーション毎にデータの置き換えができます。 ALTER TABLE t1 EXCHANGE PARTITION p00 WITH TABLE t1_p; 仕組みが複雑で更に Partitioning の制約もあります。端的にいうとPKを含むINDEXやUNIQUE INDEX にPartitionのキーを含めないといけません これさえ上手く使いこなせればViewより良い実行計画になります。 こちらも、 SWAPPING PARTIAL TABLES | DB Fiddle にプレイグラウンドを用意してみたので試してみてください。 まとめ いくつか案を出しましたが一長一短があるので銀の弾丸的なのはなく、一番マシな方法を選択する必要があります。 Also see MySQLでWebサービスを止めずに、その裏のバッチ処理で大量にデータを洗い替える。 - Qiita
ソフトウェアの脆弱性を見つけたら
みなさんご無沙汰しています。 WYRDの豊田です。 コロナ禍で弊社もリモートワークへシフトして営業中です。 早く鎮静化することを願って止みません。 さて今回のブログですが、この間情報処理安全確保支援士の資格更新のためにオンライン講習を受けまして、その中でみなさんにも共有したい話題がありましたので、内容をまとめてみました。 より身近になった脆弱性 スマホが普及し、みなさんも様々なアプリをインストールして使っているかと思います。 アプリも人間が作った物なので、完璧じゃないことも結構あります。 もしかしたらみなさんが使っているアプリにも**「バグ」**が潜んでいるかもしれません。 ちょっとした不具合なら見て見ぬ振りもできますが、もしその不具合が重大な脆弱性だった場合、遭遇してしまった利用者はどうすればいいのでしょう。 本記事では情報セキュリティ早期警戒パートナーシップガイド2019年版を元に、発見者の対応方法について簡潔にまとめてみました。 ソフトウェアの脆弱性を見つけたら 自分が利用しているソフトウェア(ウェブサイトを含む)に重大な脆弱性を見つけてしまったら、みなさんはどうしますか? 思いつくのは、利用を止めるか開発者に修正してもらうあたりでしょうか。 しかし、いずれも被害に遭わないための対策としては不十分な場合があります。 利用を止める 使っていた当時の情報が被害にあう可能性があります。 利用を止めるだけでは根本的な対策にはならないかもしれません。 開発者に修正を依頼する 引き続きソフトウェアを利用したい場合、開発者に連絡して修正してもらう方法があります。 ただし、開発者の連絡先がわからなかったり、開発者が必ずしも脆弱性の報告を受け付けたり、対応してくれるとは限りません。 いずれにしても発見者個人が脆弱性対応するのは大変です。 そんな時はIPAに報告しましょう。 IPAとは 日本にはIPAという独立行政法人があります。 IPAは脆弱性の報告を受付け、開発者への通知や脆弱性の情報公開などを管理してくれます。 独立行政法人情報処理推進機構(じょうほうしょりすいしんきこう、英: Information-technology Promotion Agency, Japan、略称:IPA)は、日本におけるIT国家戦略を技術面、人材面から支えるために設立された、経済産業省所管の中期目標管理法人たる独立行政法人である。 Wikipedia「情報処理推進機構」より一部抜粋 報告方法 以下のサイトから報告をすることができます。 https://www.ipa.go.jp/security/vuln/report/index.html 報告には以下の情報が必要になります。 (ア) 氏名等の発見者を識別するための情報 (イ) 電子メールアドレス等の発見者の連絡先 (ウ) (ア)および(イ)の製品開発者への通知の可否 (エ) 製品開発者から直接連絡を受けることの可否 (オ) (ア)の公表の可否 (カ) 脆弱性関連情報に係るソフトウエア製品の名称 (キ) 脆弱性関連情報の内容(脆弱性関連情報を確認する環境、手順および結果) (ク) 個人情報の取扱方法(製品開発者への通知および直接の情報交換の可否、一般への公表の可否) (ケ) 他組織(製品開発者、他のセキュリティ関係機関等)への届出の状況等 IPAは提供された情報を元に対応します。 ※内容によっては脆弱性と判断されない場合もあります。 脆弱性報告後の流れ 報告を受けたIPAは脆弱性の内容を確認・検証し、脆弱性と認めた場合は開発者へ連絡します。 ※脆弱性の対象がソフトウェア製品(ウェブサイト以外)の場合、JPCERT/CCという別組織を介して連絡が行われます。 以降は、IPA、JPCERT/CC、開発者、(場合によっては発見者)が連携して脆弱性の対応、一般への情報公開まで行います。 以下は脆弱性対策が行われるまでの流れのイメージです。 JPCERT/CCとは コンピュータセキュリティの情報を収集し、インシデント対応の支援、コンピュータセキュリティ関連情報の発信などを行う一般社団法人。 Wikipedia「JPCERT/CC」より一部抜粋 報告は任意です 本記事では脆弱性を見つけた場合の対応方法について記載してきましたが、これらの対応を強制するものではありません。 情報セキュリティ早期警戒パートナーシップガイドラインにおける**「関係者に推奨される行為」**をまとめたものになります。(発見者も関係者に含まれます) ただ、重大な脆弱性はたくさんの利用者に被害が及ぶ可能性がありますので、IPAへ報告することをお勧めします。
WYRDの事務方で導入しているサービス紹介
代表の大越です。 昨年ブログサーバが吹っ飛ぶ事件があり約5ヶ月間投稿がありませんでしたが、今回は新型コロナ感染拡大によるバタバタ(完全に言い訳ですが)によりそれを超える約9ヶ月ぶりの投稿です。 2020年2月下旬頃から新型コロナ感染拡大による影響が出始めて約半年となりますが、この半年でWYRDもいろんなことがガラっと変わりました。 クライアントとのMTGはすべてオンラインに変更 新規営業(初めて会う人)もオンラインに変更 新卒採用・中途採用の面接もオンラインに変更 全体会議や勉強会もオンラインに変更 オフィス勤務から在宅勤務へ オフィスの移転を検討 会社のメンバーとリアルに会う機会が激減し、ランチ行ったり飲みに行ったりも全然なくなってしまい、ちょっと寂しい感じではありますが、あと1,2年はこういうスタイルが続きそうな気もするので、今後もコロナ禍を前提とした仕事の仕方を考えていきたいと思います。 さて、今月からブログを再開することになったのですが、実は直近の全体会議にて「みんなアウトプットが少ないよね」という課題が出ました。そこで、手始めに社内ブログで「アウトプットする癖をつけよう!」ということになり9月から毎月4名ずつ順番に書いていくこととなりました。 まず、1周目(4名×3ヶ月)は制約は付けずにテーマは自由としました。会社に関することもあれば、本業のIT技術に関すること、個人の趣味に関することなど、どんな内容のものが出てくるかわかりませんが、多岐にわたる分野で読んでてためになるブログとなることを期待してます。 トップバッターの私は「WYRDの事務方で使っているサービス紹介」というテーマで今回は導入して1年が経過した fondesk というサービスについて紹介します。 fondeskのサービスを一言でいうと「オフィスの受電対応を代行して内容をチャットでお知らせしてくれる」サービスです。 もともとオフィスの受電対応は私かバックオフィスの女性社員のどちらかが受けて対応していたのですが、2018年4月より女性社員がお子さんの小学校入学を機に週3日の在宅勤務に勤務形態を変更した関係で、私かオフィスにいるエンジニアが受電対応することとなりました。 私もずっとオフィスにいるわけではないので、代わりにオフィスにいるエンジニアが受電対応するのですが、電話の大半が営業電話で問答無用に業務中に割り込みをしてくるので、集中力が落ちて、効率も落ちて、しかもエンジニアはどちらかというと電話対応が苦手な人が多く、電話対応がストレスにもなっていました。 そこで何かいいサービスがないかと検討していたところ、知人経営者が既にオフィスに導入していた fondesk いいよ!と教えてくれたのをきっかけに2019年7月に導入しました。 導入直後からオフィスの電話が1本も鳴らないんですよ!(当たり前ですが) 電話が鳴った時にあの無言の「誰か出ろよ」ってイヤな空気がなくなった 作業に集中しているのを妨げられることがなくなった 営業電話に付き合う無駄な時間がなくなった 電話対応を代行してくれた方が内容を聞いてslackに通知してくれるのです。内容を見て、必要な内容のものだけ折り返し電話をかければよいのです。 ちょうど1年が経過したところなので受電データを集計してみました。2019.08.01~2020.07.31の1年間で、受電件数が443件、うち必要な電話(折り返した電話)は67件でした。必要な電話は全体の約15%、実に85%が無駄な営業電話でした。 月ごとに件数の多い少ないはありますが、平均すると月37件入電し、そのうち31件が営業電話ということになります。 1件あたりの受電対応を5分(応答+伝言slack)として37件/月なので185分≒約3時間。毎月この3時間と営業電話に出るというストレスを月1万円で購入したことになるのですが、私的には全然ありだと思ってます! サービス内容としては、月に100件の受電対応まで月額10,000円(税抜)なので、WYRDでは月37件とちょっともったいない感じもしますが、それでも月1万円でこの営業電話対応のストレスから解放され、エンジニアが本来の業務に集中できてパフォーマンスが上がるなら全然払います!って感じですね。 営業電話が多くて困ってるという方には、とってもお薦めのサービスです! このブログを読んで導入検討したい!ってなった方は fondesk さんに直接お問合せください。私に聞くよりも丁寧に教えてくれますので。 今だとこちらの紹介用サイトからの申込で初期費用5,000円OFFになります! ※WYRDには1円も入りませんw
Ruby World Conference 2019 レポート
今年も11/7,8で開催された年に1度のRubyの祭典 Ruby World Conference に行ってきました。今回はWYRDメンバーとパートナーメンバーあわせて総勢10名と過去最多人数での参加! 初日午前中のMatzの基調講演を聞くために前日夜入りして、まずはWYRDメンバーで軽く前夜祭^^ 翌朝は寝坊せずに会場のくにびきメッセへ! 早めに行ったつもりでしたが既にたくさんの来場者が来ていました。今年のWYRDノベルティは、メンバー似顔絵チロルチョコとマイクロファイバークロス! 午前中はMatzの基調講演「How to dominate the world」会場は超満席で立ち見も出るほどでした。当日のプログラムはこちら※各講演の資料と映像がYoutubeで見れます お昼御飯は松江城近くの八雲庵さんで美味しいお蕎麦を堪能あまりの美味しさに「鴨なんばん」と「割子そば4枚」を食し大満足! 午後は1階のサテライト会場で仕事をしながら講演を聞くスタイル。平日開催なので東京での仕事は動いてるから合間見てちょこちょこ仕事なんです。 初日の講演も終わり、夜はレセプション。美味しい島根料理に美味しい島根のお酒で、参加者の方々と近況報告したり情報交換したりおしゃべりです。 レセプション後半になるとMatzとの写真撮影行列ができるので、行列できる前にMatzにお願いしてスポンサーボード前で記念撮影! ちなみに昨年までは「Goldスポンサー」でしたが今年は新設された「Nurseryスポンサー」で協賛。ここ最近お子さん連れでこのConferenceに参加される方がちらほらいましたので、もっとお父さんお母さんエンジニアが参加しやすいようにと託児所費用を提供させて頂きました。 創作料理と島根の唄-縁(えにし)さんでのRWC2019オフィシャル2次会にも参加とっても盛り上がった1日でした! 2日目は早朝から出雲大社観光へ日中はめちゃくちゃ観光客で混むのでゆっくり参拝したいなら9時前がオススメです。今年はちょうど出雲大社での神在祭(11/7~11/13)にかぶったので、いろいろなご縁をお願いしてきました。 お昼前に出雲から松江に戻り連日の八雲庵にて早めの昼食。「鴨なんばん」に「5種割子そば」を頂きました。美味しかった^^ 2日目午後の講演も終わり、最後は実行委員会副委員長のNacl井上社長のクロージング昨年に続き今年も2年連続の来場者数1,000人超えと大盛況の会でした。 翌日は島根観光組とRWC2019ゴルフコンペ参加組に分かれて別行動。スコアは残念な感じでしたが、11月にしては暖かく晴天のゴルフ日和で楽しませて頂きました。 あれだけ蕎麦食べたのにまだ飽き足らず最後に出雲空港でラスト蕎麦^^; また来年もできるだけ多くのメンバーでRWC2020に参加したいと思います!実行委員の皆さま、事務局の皆さま、ありがとうございましたm(_ _)m
WYRD主催 稲刈りツアー2019 レポート
WYRD大越です。 うぃるどん ぶろぐだどん全体として約5ヶ月ぶりの投稿です。 これにはいろいろと訳がありまして... 5月下旬にこのブログ運用している某レンタルサーバが不具合を起こしまして、タイミングが悪かったのか運が悪かったのか全部ふっとんでしまったのです!!! 普段、クライアントに対しては、本番同様の待機系構成を持つべきだとか、バックアップは絶対必要だとか言ってるのに、自社のサーバは疎かになっていたという「医者の不養生」といった感じですね。 さらに本業多忙の時期も重なって復旧作業を後回しにしてたら5ヶ月経ってしまいましたorzこれからまた以前のように記事投稿していくのでご愛読宜しくお願いします。 復旧1本目は、10/5(土)-10/6(日)で開催した**「稲刈りツアー2019」**についてお伝えします! 2014年から開催して今回で6回目となる稲刈りツアー そもそも、Webシステム開発事業がメインの ウィルド がなぜこんなことをしているのかと言うと 遡ること6年、2013年8月末に東京神田で開催された30人くらいの小規模な異業種交流会に参加した際、「今日新幹線で山形から来ました!美味しいお米を作ってるので東京で販売してくれる方を探しに来ました!」という米農家 猪野国雄 さんがいて、わざわざ山形から来るなんて気合い入ってるなーと話しかけたのがきっかけでした。 交流会後に近くの居酒屋に2人で飲みに行き、4時間近くお米への情熱を聞き**「一度山形県高畠町に来てくれ!」**とお願いされ、これ「行く」って言わないと帰れないパターンだなと思い、とりあえず「行く!」と返事したのが始まり。 約1ヶ月後の2013年10月に家族で稲刈り杭掛け天日干し作業を体験しに山形県高畠町に! 私自身も家族も稲刈りは人生で初体験。毎日あたりまえのように食べている「お米」がどのようにできているのかを知る貴重な体験となりました。 そこで、都会育ちの人にも同じようにこの体験に興味を持つ人がいるのでは?と思い、知人に声を掛けたところ**「行ってみたい!」**という声があったので、2014年の秋から稲刈りツアーを開催。 最初は5月の田植えと10月の稲刈りだけでしたが、次第に4月の苗作り、7月の田んぼ溝切り、8月の有機肥料撒き&雑草抜きなど、今では年間で延べ100人近くの人が参加しています。 そんなことしてたら、地元の新聞社さんが取材に来られてこんな記事にもなっちゃいました。 今回は、東京から17名が参加。結構はまってしまう方も多く、17名中リピーターが12名というリピート率の高さ!作業工程を理解している方が多く、農家さんにゼロから教えてもらうことなく動けるのでめちゃくちゃ戦力になるのです! 2時間ほどで杭掛け天日干しを終わらせて、次は雑草抜き作業。 無農薬栽培しているためたくさん雑草生えてしまうので、手で雑草を抜かなければなりません。色々な種類の雑草が生えているのですが、クサネムという豆科の雑草が厄介で米粒と同じ大きさなので収穫時に混入してきます。出荷前に色彩選別機で異物を弾きますが100%ではないので、雑草抜きは収穫前にできるだけ原因除去してクオリティを上げるための大事な作業です。 稲刈り杭掛け天日干しと雑草抜き、計3時間半ほどの農作業を終えて本日の農業体験は終了。 夕ご飯は近くの まつたけ料理屋 フレッシュマートたねや さんで地物松茸料理フルコース!!!松茸ホイル焼き、松茸すき焼き、松茸土瓶蒸し、松茸茶わん蒸し、松茸御飯と松茸だらけ^^東京で食べたら○万円しそうな料理が、高畠では7千円くらいで頂けます!(※その年の収穫量により値段は変動します) 翌朝は近くの稲子山に松茸狩りに有志8名で入山。入山料は1人2,000円で採れた分は全部持ち帰ってOK。 今年は9月に雨が全然降らなかったこともあり「不作」と聞いてましたが、高畠に来たからには登らなければと2,000円握りしめてみんなで入山届に記帳。 当日は朝から雨がぱらつきコンディション悪く、6時過ぎには本降りとなってきたため、事故の危険性も高くなるので7時に下山。過去の稲刈りツアーでは、毎年2,3人が採れていたのですが、今年は残念ながら誰も採れませんでした。来年リベンジします! 本当は日曜日も農作業を予定していたのですが、雨が降ってしまって作業が難しいとのことで高畠町一番の観光スポット 高畠ワイナリー さんに伺いました。 世界のコンクールで数々の賞を受賞しているワイン、スモークハウスファイン さんのソーセージ、地元高畠の漬物、厳選素材のドレッシング、ジャムなど、たくさんの高畠土産を購入して今回の1泊2日稲刈りツアーはお開き。 こんな感じで1泊2日の農業体験を実施しております。次回は下記日程で開催予定しておりますので、ご興味ある方はお問い合わせください! 2020年 5月23日~24日(予定) 田植えツアー 2020年10月 3日~ 4日(予定) 稲刈りツアー 最後にいつも農業体験を受け入れてくれてる いのファーム 猪野国雄 さんのお米の紹介です。つや姫、こしひかり、夢ごこち、ミルキークイーンに加えて、今年は山形の新ブランド米「雪若丸」も作付けしてみました。20俵(1,200kg)の数量限定販売となりますので、この機会に是非お試しください! 蔵出し米.com


