タグ

DBに関するhidex7777のブックマーク (32)

  • MySQLでプライマリキーをUUIDにする前に知っておいて欲しいこと | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]

    株式会社ラクーンホールディングスのエンジニア/デザイナーから技術情報をはじめ、世の中のためになることや社内のことなどを発信してます。 bashパフォーマンスMySQLInnoDBDB設計インデックス こんにちは、羽山です。 今回は MySQL のプライマリキーに UUID を採用する場合に起きるパフォーマンスの問題を仕組みから解説します。 MySQL(InnoDB) & UUID のパフォーマンスについては各所でさんざん議論・検証されていますが、論理的に解説した記事が少なかったり一部には誤解を招くようなものもあるため、しっかりと理由から理解するための情報として役立つことができればと思っています。 UUID と比較される古き良き昇順/降順のプライマリキーはというと、 MySQL の InnoDB において良いパフォーマンスを出すために縁の下の力持ちのような働きをしてくれているケースが実は少な

    MySQLでプライマリキーをUUIDにする前に知っておいて欲しいこと | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]
  • EXCELのワークシートに対してSQL文で問い合わせを行いデータを取得する方法(VBA)

    EXCELSQLサンプル こんな感じのEXCELのワークシートに対してSQL文を発行し、結果を取得する方法です。 1行目をフィールド名と見立てて、Where句でデータを絞り込んだり、ソートしたりすることが可能です。 以下のサンプルコードでは自ワークブック(*.xls,*.xlsm等)に対しADOでEXCELファイルをオープンし、SELECT文を発行しています。 実際に動くEXCEL VBAのサンプルプログラムは一番下にあります。 ここで使用しているSQLは、ANSI-92 SQLに準拠しています。 そのため、以下のような機能を使用することができます。 WHERE句やLIKE演算子を使用した条件式 ORDER BYによる並び替え GROUP BYによるSUMやCOUNTなどの集計機能 複数の表をJOIN演算子で結合 サブクエリを使用して、クエリの内部で別のクエリを実行 特定の範囲を複数のテ

    EXCELのワークシートに対してSQL文で問い合わせを行いデータを取得する方法(VBA)
  • なぜVLOOKUPを使えるとExcel中級者なのか - 本しゃぶり

    Excel中級者の定義は、VLOOKUPを使えることである。 この力を手にした時、人は神を追放する。 Excel中級者 「Excelが使える」とはどの程度のことを指すのか。企業の募集などで「Excelが使える人」と言う場合、それはExcelの達人を求めているわけではない。かと言って使える関数がSUMとAVERAGE程度の、初心者を指すわけでもない。ここで必要とされるのは「Excel中級者」である。 求められているのが「Excel中級者」ならば話は早い。VLOOKUPが使えればそれでいいのだから。 この定義について、今では異論のある人はほとんどいない。しかし、なぜVLOOKUPが使えたら中級者*1と言えるのか分かっている人は少ない。だからこの記事でそれを解説したいと思う。 VLOOKUPとは 表や範囲から行ごとに数値や文字列などを検索するには、検索/行列関数の 1 つ、VLOOKUP を使用

    なぜVLOOKUPを使えるとExcel中級者なのか - 本しゃぶり
    hidex7777
    hidex7777 2017/06/05
    はじめからセル結合しなければよいのでは。
  • GitLab.comが操作ミスで本番データベース喪失。5つあったはずのバックアップ手段は役立たず、頼みの綱は6時間前に偶然取ったスナップショット - Publickey

    果たしてGitLab.comで何が起きたのでしょうか? これまでの経緯をまとめました。 スパムによるトラフィックのスパイクからレプリケーションの不調へ GitLab.comは今回のインシデントについての詳細な経過を「GitLab.com Database Incident - 2017/01/31」で公開しています。また、もう少し整理された情報がブログ「GitLab.com Database Incident | GitLab」にも掲載されています。 これらのドキュメントを軸に、主なできごとを時系列に見ていきましょう。 1月31日16時(世界協定時。日時間2月1日午前8時)、YP氏(Yorick Peterse氏と思われる)はPostgreSQLのレプリケーションを設定するためにストレージの論理スナップショットを作成。これがあとで失われたデータを救う幸運につながります。 1月31日21時

    GitLab.comが操作ミスで本番データベース喪失。5つあったはずのバックアップ手段は役立たず、頼みの綱は6時間前に偶然取ったスナップショット - Publickey
  • 第3回 バックアップとリカバリ―「もしも」に備え、転んでも泣かない子になる(1) | gihyo.jp

    はじめに データベースには、重要なデータが多く保存されています。企業の財務状況から、私たち個人のプライバシーに関わるものまで、近年ではほとんどありとあらゆるデータがデータベース化されています。もし、そのデータが何かの間違いで消失してしまったら、データベースを管理していた企業やシステム構築を請け負った企業の受けるダメージは計りしれません。 しかし現実には、データ消失のニュースは定期的と思えるぐらい繰り返し報じられます。最近では、クラウドサービスのEvernoteでデータが消え、顧客6,323人に影響を与えた可能性があると報じられた話は記憶に新しいですし、昨年にはMicrosoft傘下の携帯電話向けサービスDangerでもユーザデータが消失する事件が起きました。 こうした障害が発生する原因は、大きく分けて2つあります。1つ目は論理障害と呼ばれるもので、そもそもシステムのロジックに欠陥があって、

    第3回 バックアップとリカバリ―「もしも」に備え、転んでも泣かない子になる(1) | gihyo.jp
    hidex7777
    hidex7777 2016/04/07
  • ANAシステム障害の原因判明、シスコ製スイッチの「世界初のバグ」でDBサーバーがダウン

    同期処理が失敗した原因は、4台をつなぐスイッチの不具合。具体的には、スイッチが故障状態であるにもかからず、故障を知らせる「故障シグナル」を発信しなかった。国内線システムは故障シグナルを検知するとスイッチを予備機に切り替えるが、今回はその機能そのものを作動できなかった。 スイッチは完全に停止したわけではなく、「不安定ながらも動作していたようだ」(同)。そのため、DBサーバー間の同期は順次失敗し、停止していったと見られる。 ANA広報によると、スイッチは米シスコシステムズ製「Catalyst 4948E」という。「2010年6月の発売開始以降、世界で4万3000台、うち日で8700台を販売しているが、今回の不具合は初めての事象と聞いている」(ANA広報)。なぜ「故障シグナル」が発信できなかったかは分かっていない。 1台での縮退運転を決断 4台の完全停止から37分後、ANAは1台のDBサーバー

    ANAシステム障害の原因判明、シスコ製スイッチの「世界初のバグ」でDBサーバーがダウン
  • もう二度と、絶対にMongoDBを使うべきじゃない理由

    MongoDBは悪だ。なぜならそれは… …データを無くす(ソース:1、2)。 …実際、長期間、デフォルトでエラーを無視し続け、何があってもすべての単一書き込みが成功したとみなした( 32ビットのシステムで3GBかそこらを使用したら、MongoDBの制限によって何の警告もなしに全データを失うことになった)。 …宣伝していたユースケースでですら遅く、これが早いと主張するには完全に証拠に欠けている(ソース:3、4)。 …ほぼ全てのユースケースで、暗黙のスキーマという悪しき習慣を強要してくる(ソース:4)。 …ロッキングに問題がある(ソース:4)。 …セキュリティの問題になるくらい、応答時間が酷く遅い。求めてきた人全員に認証なしで全データをさらしてしまうという危険なデフォルト設定をパッチするのに2年かかった(ソース:5)。 …ACID特性に準拠していない(ソース:6)。 …拡張やメンテナンスをする

    もう二度と、絶対にMongoDBを使うべきじゃない理由
  • Redis 本番障害から学んだコードレビューの勘所

    Redis不適切利用による問題は番運用が始まってから顕在化することが多く、時限爆弾みたいな存在です。事前に防ぐにはコードレビュー段階で叩くしかありません。 Redisはスクリプト言語と相性が良く、適切に利用するとRDBと比較し驚くほど高速なプログラムを組むことができます。昨年尊敬する先輩にコードレビューで斧100くらい(レビューコメント)投げられて血まみれになりつつ学んだことを、まとめて書いてます。概要は『消えても良いデータならRedis』 Redisのメモリが溢れたら... (この話は事実ではなくファンタジーです。) 深夜電話で叩き起こされました。どうやらアクセス障害みたいです。 何人かで実機確認したら、まったくゲームが遊べない。データ不整合怖いのでメンテIN。 ほどなくしてRedisが溢れメモリ不足で新規書き込みが出来なくなっていると判明。サーバのメモリ容量は64GByteでこれ以

    Redis 本番障害から学んだコードレビューの勘所
  • 嵐のコンサートがあるとダブルブッキングしてしまうホテル予約システムを作ってみた

    今年の5月1日に、仙台市内のホテルで多重予約のトラブルが発生したと報道されています。 部屋数203室の仙台市のビジネスホテルで、9月18~23日の宿泊予約を数千件受け付けるトラブルがあった。アイドルグループ「嵐」のライブが宮城県内で開催される期間だった。インターネットでの申し込みが殺到し、システム障害が起きたとみられるという。 トラブルがあったのは、仙台市泉区の「ホテルルートイン仙台泉インター」。ホテルなどによると、9月19、20、22、23日に宮城スタジアム(宮城県利府町)で嵐がライブを開くことが明らかになった後の5月1日午前5時ごろ、ネットを使った予約申し込みが殺到していることに気づいたという。 203室のホテルなのに「予約」数千件 嵐公演で殺到か:朝日新聞デジタル より引用 5月1日の朝に何があったのか調べてみると、この日の早朝にテレビや新聞でコンサートの情報が流れたようですね。 お

    嵐のコンサートがあるとダブルブッキングしてしまうホテル予約システムを作ってみた
  • 論理削除はなぜ「筋が悪い」か

    「論理削除が云々について - mike-neckのブログ」を読んで。 データベース設計において、「テーブルの書き換えをするな、immutableなマスタと更新ログによって全てを構成しろ」というこの記事の主張はモデリング論として全く正しい。 だが、残念なことに、ディスクやメモリが貴重な資源だった時代の技術であるRDBは、そのようなモデリングに基づいて設計されたデータベースには必ずしも適していない。 第一の問題は、RDBに対してなされる様々な「更新」(トランザクション)は不定形(どのテーブルをどのように修正するかはアプリケーション依存)だという点。不定形な「更新」を時系列にそってRDBに記録していくのは、設計と並走性の点において困難あるいは煩雑なコーディングが必要になる(というか、そのような「イベント」による「変化」はREDOログに書き、その更新された「状態」をテーブルに反映していくというのが

  • 国語力エスパーって他にもいるの?

    知人の話なんだが、文章を読むと大体書いた人の年齢、性別、生きていた時代がわかるというんだ 興味深いのは、人が言うには文章を読むときに頭のなかで声に変換されるらしく、その印象通りに特徴をいうと大体あたっているらしい 例えばテストで「これに続く文章はどれか」とかいう設問があった場合、内容よりもその声が同じかどうかで判断できると言っていった 試しにラノベから純文学まで作者を隠していくつかの作品をかいつまんで読ませんたんだけど、時代はなんとなく言葉遣いでわかるとしても性別と執筆当時の年齢も前後10歳くらいで言い当てやがった ちなみに男性が女性目線で書いてたりその逆の場合だったりすると、2ページくらい読むとオカマ声に聞こえてくるらしく、人はそれが耐えられなくてすぐに読むのをやめてしまうのだそうだ そのためか国語の成績だけはずば抜けてよいのだが、文学オタクかというと別にそういうわけでもなく、他の教

    国語力エスパーって他にもいるの?
    hidex7777
    hidex7777 2014/11/12
    増田はなんで「時代はなんとなくわかる」のか。自分でわかる理由がわかれば理解できるんじゃないか。
  • Mobage を支える Ruby の技術 ~ 複数DB編 ~

    GraalVMJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...Shinji Takao

    Mobage を支える Ruby の技術 ~ 複数DB編 ~
  • すこやかRails

    2014-11-01 渋谷Ruby会議01 http://regional.rubykaigi.org/shibuya01/Read less

    すこやかRails
  • SQLデータベースに正しインデックスを作るのは 誰の役割?

    SQLのパフォーマンス問題は、SQLそのものと同じぐらいの歴史がある―― ある人は、SQLはそもそも遅いものだとすら言うかもしれません。これは、SQL歴史が始まった頃は正しかったかもしれませんが、今となっては全く 当てはまらないでしょう。にもかかわらず、SQLのパフォーマンス問題は今も一般的でよくあることです。どうしてそうなってしまうのでしょうか? SQL言語は、恐らく最も成功した第4世代言語(4GL)でしょう。その最大の利点は、「何を」と「どのように」 を分離できることです。SQL文は、どのようにそれを実行するかを記述せずに、単純に 何を必要としているかのみの記述になっています。以下のような例を考えてみましょう。 SELECT date_of_birth FROM employees WHERE last_name = 'WINAND'SQLのクエリは、データを要求する英語の文として読

    SQLデータベースに正しインデックスを作るのは 誰の役割?
  • MEANスタックは破壊的か

    最近、MEANがイイという話をチラホラと耳にする。先日も次の記事がはてブで話題になっていた。 MEAN(MongoDB, Express, AngularJS, Node.js)スタックが優れている理由 - Mozilla Open Web Day in Tokyoを終えて - albatrosary's blog この記事の冒頭では、MEANはLAMPに変わる技術として紹介されているが、果たしてそれは正しいのだろうか。(この記事では、LAMPを例にとりつつJavaがどうのという記述があるので、恐らくはLAMPではなく既存のリレーショナルデータベースを用いたアーキテクチャ一般について述べたいのではないかと思う。)MEANについて少し思うところがあるので、今日はMEANの可能性について書き綴っておこうと思う。ただし、私自身MEANスタックと呼ばれるシロモノは使ったことがなく、構造を理解した上

    MEANスタックは破壊的か
  • クックパッドにおける最近のActiveRecord運用事情 - クックパッド開発者ブログ

    インフラストラクチャー部の成田(@mirakui)です。 Rails の OR マッパーである ActiveRecord ですが、みなさんどのように運用していますか? ActiveRecord を使うと、 SQL を直接扱うことなく、抽象化された表現で RDB にアクセスできるので、アプリケーションの開発効率という観点ではメリットが大きいです。 一方で、 ActiveRecord が駆使されているアプリケーションをサーバに配置してプロダクションとして運用する立場からすると、いくつかの問題に突き当たります。 まずはクックパッド体アプリケーションにおける、最新の rake stats をご覧ください。 +----------------------+-------+-------+---------+---------+-----+-------+ | Name | Lines | LOC

    クックパッドにおける最近のActiveRecord運用事情 - クックパッド開発者ブログ
  • 主キーはインデックスではない - 設計者の発言

    仕事柄、奇妙なDB構造を目にすることが多い。どういう発想からそんな設計がされるのかを理解したいと思っていたのだが、モデラー仲間の秋里さんが先日うまい指摘をした。「主キーをインデックスみたいなものと勘違いしているからではないでしょうか」。インデックス(キー)というのは、レコードの並び順を規定するキーのことだ。 たしかに思い当たる節がある。「こんな順にレコードが並んでいれば処理上都合がよさそうだ」という考えで主キーが設定される。さらに主キーはユニーク制約でもあるので、重複が起こらないように「多め」に項目を突っ込んでおく。つまり「ユニーク制約をともなう代表的インデックス」程度に主キーが理解された結果として、グダグダなDB構造が出来上がるのではないか。 じっさい、昔こんなことがあった。{a,b,c,d}の複合主キーをもつテーブルXがある。ところが、別のテーブルYからテーブルXの特定レコードにアクセ

    主キーはインデックスではない - 設計者の発言
  • MySQLを商用利用すると無料で使えないという都市伝説

    MySQLに限らないけど、「GPLは営利目的では使えない的な思い込み」は止めて欲しい。 先週、システム開発の提案で客先に行ってきた。 当方、30前半のSE。対応してくれた担当者は40代後半の情報システム部門の方。 提案したシステムの規模はそれほど大きくはなく、お客さんからもあまり予算はないと言われていたため、RDBMSに「MySQL」を使ったWebシステムを提案したところ、「それほど可用性は求めてないし、無料で使えるDBの方がいい」と言われた。 あぁ、商用ライセンスを購入すると勘違いしたんだな、と思ったので、「MySQLはGPLライセンスもあるので無料で使うことができますよ」と説明したところ、担当者の顔が険しくなった。 「GPLだとソースコードを公開しないといけないんだよ?たとえMySQLのソースコードを改変していなくても、MySQLを使ったソフトウェアであればソースコードを公開しないとい

    MySQLを商用利用すると無料で使えないという都市伝説
    hidex7777
    hidex7777 2014/07/22
    ぜんぶOracleがわるい(適当
  • これからMySQLをイチから学ぶ人に捧げたい23個のコマンドリスト

    どーも。今年の春頃からMySQLを学び始めた、するぷ( @isloop )です。 学び初めのころは、「たかだか文字列を記録するだけでなんてかったるいんだ。やっぱりCSV保存に逃げようかな。」と思っていました。が、最近になってようやく慣れてきたようで、「結構便利じゃんMySQL」と思えるようになってきました。 というわけで今日は、学び初めの頃に欲しかった「とりあえずこれだけ覚えたらなんとかなるMySQLのコマンドリスト」というものを作ってみました。 これからMySQLをイチから学びたいという人が参考になればこれ幸い。

    これからMySQLをイチから学ぶ人に捧げたい23個のコマンドリスト
  • とある診断員とSQLインジェクション

    PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)Koichiro Matsuoka

    とある診断員とSQLインジェクション