タグ

DBMSに関するt-murachiのブックマーク (38)

  • SQLわかんねーーーーーーーー!!!!!!

    学生時代に独学でVBAやってたのが零細企業でなぜか評価されてDB管理をやらされかけてるけど SQLマジでわかんねーーーーーーーーーーー!!! なんだこれーーーーーーーーーーーーー!! ああああああああああああああ!!!! わかんねーーーーーー!!!!

    SQLわかんねーーーーーーーー!!!!!!
    t-murachi
    t-murachi 2022/10/08
    まずその現場がアプリケーション開発やってるのかデータ解析やってるのか、どっちなのかがとても重要。それ次第で何がどうなればいいかがまるっきり違ってくる。
  • 個人開発のコストはDB次第 - laiso

    個人でWebサービスを継続的に運用するのは金がかかってかなわんという問題がある 「個人開発」だと定義が曖昧なので自己資金かつ赤字のプロジェクト(Webサービス)ということにする。 そういうプロジェクトではプロダクトオーナー=自分、開発者=自分、予算管理者=自分というロールになるので予算管理者としてコストを図る必要がある(ここでいうコストはWebサービスを実現するアプリケーションのランニングコストのこと)。 通常はみんな自分の人件費を0として計算していると思う(逆にいうとそれが負債という考え方もできると思う)。 ただしメンテナンス時間とコストのトレードオフもあるので、人件費0ではあるけど有限の時間は別軸として管理しているのが普通だと思う。極端な例だと「コスト削減できるけどメンテナンス時間10倍になる」というのは避けられる。 仮に個人開発プロジェクトの予算を月数千円から高くても1万円ぐらいか

    個人開発のコストはDB次第 - laiso
  • MySQLでIN句の中に大量の値の入ったクエリがフルスキャンを起こす話 - freee Developers Hub

    こんにちは、freee Developers Advent Calendar 2021、19日目のid:shallow1729です。昨日はtdtdsさんで【マジで】サイバー演習シナリオの作り方【怖い】でした!障害訓練後に攻撃方法を解説された時はリアリティの高さに驚きました。 僕はMySQLを使っていて発生した不思議な挙動の調査の話をしようと思います。 今回問題となったクエリ 今回話題にするクエリは以下のようなシンプルなものです。 SELECT * FROM hoge WHERE id IN (...) MySQLのパラメーター次第ですが、デフォルトの設定だとこのIN句の中の値の数が数万になると適切なインデックスが用意されていてもフルスキャンが発生する事がありました。このクエリがテーブルのほとんどのレコードを網羅するような場合や高速でレコードを大量にinsertして統計情報が追いつかないケー

    MySQLでIN句の中に大量の値の入ったクエリがフルスキャンを起こす話 - freee Developers Hub
    t-murachi
    t-murachi 2021/12/19
    そも数万個とか書いたのちゃんと動いちゃうんだ… (他のDBMSだと誤動作もありそうなパターン)
  • MySQLでプライマリキーをUUIDにする前に知っておいて欲しいこと | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]

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

    MySQLでプライマリキーをUUIDにする前に知っておいて欲しいこと | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]
    t-murachi
    t-murachi 2021/09/01
    べんきょうになりますた。
  • ポケモンを題材に「SQLアンチパターン」を実践してみる - kanayamaのブログ

    @tkanayama_です。「SQLアンチパターン *1」 というを読みました。「ポケモンを題材に因果推論を実践してみる」のように、仮想的なストーリ上で実際に使ってみた感を出すことにより、自分の記憶に定着させることを狙います。 前提として、何をアンチパターンとするかは状況(ベンダーフリーである必要があるかどうか、どの程度の頻度で更新されるか・・・など)によって大きく異なるので、下記で紹介するアンチパターンは実は状況によっては問題にならないケースもあるかと思います。この投稿はあくまで「SQLアンチパターン」に忠実に従うことが目的です。 www.oreilly.co.jp 追記 登場人物 ストーリー フシギダネへの対応 ヤミカラスへの対応 ディグダへの対応 誤登録でポケモントレーナーになってしまったユーザーの削除 最後に 謝辞 追記 このブログを公開後、「外部キー制約はレコードロック周りのト

    ポケモンを題材に「SQLアンチパターン」を実践してみる - kanayamaのブログ
    t-murachi
    t-murachi 2020/07/26
    外部キーはアプリ開発ではとてもお世話になるけど、データ分析用途のデータウェアハウスではまずお目にかからない印象。数百万レコードのテーブルをまるっとコピーとかが茶飯事だったりするので…(´・ω・`)
  • SELECT文で本番環境を落としたお話 - Qiita

    (この記事は 地平線に行く とのマルチポストです) 番環境でやらかしちゃった人 Advent Calendarで、このパターンのやらかしはなかったのでキーボードを叩くことにしました。 番外編のつもりでお楽しみください。 この記事が、新たな障害発生を防ぐことにつながれば幸いです。 何をやったのか ある日、ちょっとした調査のために番データベースのデータを確認することになりました。 (個人情報が格納されているようなシステムではなかったので、必要であれば番データベースへのアクセスが許されていました) もしメンテナンスがあればそのタイミングでやればよかったのですが、直近では特に予定はないとのことでした。そのため、システムが動いている状態のまま作業をすることにしました。 ごく単純な SELECT を実行するだけのつもりだったので、システムに影響がないと判断したためです。 その際、万が一コピペをミ

    SELECT文で本番環境を落としたお話 - Qiita
    t-murachi
    t-murachi 2019/12/26
    色々ひどい。解決手段が人為的になってる。READ ONLYの (変更権限のない) ユーザー作るのがまず先決やろ。「気をつける」が解決手段の現場で胃潰瘍になるなっちゅー方が無理な話や(´・ω・`)
  • データベースにRDBを選択するときの注意事項について考える(追記あり) - Qiita

    2019年6月20日追記: この度は、ブログにて技術的に誤った記事を掲載したことをお詫び申し上げます。具体的には以下の通りです。 一方的にRDBがスケールしないという技術的根拠が薄い内容となっていました。 RDBAmazon DynamoDB(以下、DynamoDB)/NoSQLデータベースを要件に応じて適切に選択するという内容になっていませんでした。また、来考慮すべきアプリケーションの設計やデータアクセスパターンに言及しておらず、RDBのデメリットの部分にのみ焦点を当てる内容となっていました。 DynamoDBの具体的な活用やDynamoDBを使う上での注意点についても触れられていない不明瞭な記載でした。 当初の記事の目的としましては、特定のユースケースをサンプルとして、最適なデータベースを選択頂くことでした。近日中に正確な技術記事を掲載させて頂きます。 以下の内容は修正前の内容と

    データベースにRDBを選択するときの注意事項について考える(追記あり) - Qiita
    t-murachi
    t-murachi 2019/06/19
    DynamoDB宣伝したかっただけにしたってもうちょっとさぁ…(´・ω・`) それに最初は小さく作って運用しながら諸問題に対応していくのは基本中の基本やで(´・ω・`)
  • O/Rマッピングは百害あって一利なし! - Qiita

    O/Rマッピング(Object-relational mapping)について、Wikipediaには以下のように書かれています。 データベースとオブジェクト指向プログラミング言語の間の非互換なデータを変換するプログラミング技法である。 O/Rマッピングを実現する仕組みを、O/Rマッパーと言います。(両者を区別しなくても私が言いたいことは伝わると思いますので、ORMと統一して記述します)(また、個人的な理由で、プログラミング初学者向けに語りかける口調にしていますが、初心者向けの記事というわけではありません) 最近はWEBアプリ開発をするにあたって、WEBフレームワークに標準で何らかのORMが組み込まれていることが多いため、その存在を知らない人はまずいないでしょう。 私も何度かORMと向き合ってきましたが、そうこうしているうちに気がつきました。 ORMはめんどうくさい! …ってことに。 みん

    O/Rマッピングは百害あって一利なし! - Qiita
    t-murachi
    t-murachi 2018/11/20
    こういうことを書く人にPHPerが多い印象…(フレームの元-1) / 型整合性をコンパイルレベルでチェックしようという考え方が根底に無いと中々有り難みが得られないものなのかもとは思うが…(´・ω・`)
  • Microsoftが最新のExcelに加わる機能を発表『紙のデータの写真を撮るとデータ入力できる』にざわつくみなさん「い、印刷のズレは…?」 - Togetter

    リンク GIGAZINEExcel」にAIをフル活用した高度な新機能が4つ追加される 表計算ソフトウェアの定番中の定番である「Microsoft Excel」がアップデートされ、4つの新機能が追加されました。4つの新機能は人工知能(AI)を駆使したものとなっており、これらを活用する 61 users 363 Excelラボとみ君 @Excel_labotomi 最新のExcelMicrosoftから発表されたけど進化し過ぎてて吐き気してきた ・紙のデータでも写真を取ると、Excelがデータを入力してくれる ・Sort関数やUnique関数で、自動並べ替えや重複削除してくれる ・VLOOKUPやMATCHが高速化し100万レコードを数秒で処理する 今までのExcelは何やったんや!マジ泣 pic.twitter.com/tuwm1x4ZFF 2018-09-25 03:36:01

    Microsoftが最新のExcelに加わる機能を発表『紙のデータの写真を撮るとデータ入力できる』にざわつくみなさん「い、印刷のズレは…?」 - Togetter
    t-murachi
    t-murachi 2018/09/26
    まだExcel文書作成で消耗してるの? (煽 / ちなマクロ言語はPython が選択可能。これで SQL も叩けるようになったら Access 要らんねw
  • Sequel Proを超えるGUIツールが出てきたぞ

    悲報 2019年6月26日現在、TeamSQLのサポートがなくなってしまったようでダウンロードできなくなくなりました。。 TeamSQL has retired and is not available for download anymore. 今までSequel Proを重宝してきましたが、それを超えるGUIツールが出てきました。 その名も、TeamSQL 現状サポートしているものだけでもかなり豊富 今後、elasticやmongoDBにも対応されるようです。 機能 クエリ保存 履歴保持 ファイル出力 抽出した結果をボタン1つでcsvやjson形式に保存可能。 共有 データをエクスポートしなくても共有が可能。 グループの作成が可能なため、特定のユーザー同士で簡単に共有ができるとこがメリット。 可視化 様々なチャートでクエリの可視化が可能。 そのままイメージとして保存も可能。 テーマ選択

    Sequel Proを超えるGUIツールが出てきたぞ
  • なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策 - エンジニアHub|Webエンジニアのキャリアを考える!

    なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策 『SQLパフォーマンス詳解』の翻訳者の松浦隼人さんに、8つの「SQLが重たくなる原因とその対策」を聞きました。システムのボトルネックになるような「問題のあるSQL」を回避するノウハウを学びましょう。 データの操作や定義をする言語「SQL」は、どのような領域を担うエンジニアにとっても必修科目です。しかし、その仕様をきちんと理解し、パフォーマンスに優れたSQLを書ける方はそれほど多くありません。問題のあるSQLを書いてしまい、知らぬ間にそれがシステムのボトルネックになってしまう事態はよく発生します。 では、どうすればそうした事態を回避できるのでしょうか? そのノウハウを学ぶため、今回は『SQLパフォーマンス詳解』の翻訳者であり、自身もエンジニアでもある松浦隼人(まつうら・はやと/@dblmkt)さんに8つ

    なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策 - エンジニアHub|Webエンジニアのキャリアを考える!
  • ITプロジェクト失敗の原因は「リレーショナルデータベース」

    IT部門でデジタル変革構想に携わる上級意思決定者450人に実施した調査によると、これまで使われてきたデータベースがデジタルプロジェクトの障害になっていることが明らかになった。 市場調査会社Vanson BourneがCouchbaseの委託を受けて実施した調査によると、94%の企業が依然として「Oracle Database」や「Microsoft SQL Server」などの従来型リレーショナルデータベースを使用しているが、こうしたデータベースはデジタルプロジェクトには不適切だと考えられている。 調査に答えたIT部門意思決定者の41%が、リレーショナルデータベースがニーズを満たさなかったために失敗したデジタルプロジェクトがあることを認めている。 また、リレーショナルデータベースの変更にコストがかさみ、プロジェクトの規模縮小を余儀なくされたという回答が29%、プロジェクトを大幅に延期せざる

    ITプロジェクト失敗の原因は「リレーショナルデータベース」
    t-murachi
    t-murachi 2017/10/10
    恣意的な内容っぽい希ガス(´・ω・`) NOSQLの類が思ってたほど普及してなくて焦ってる人たちなのかな?
  • 論理削除が云々について - mike-neckのブログ

    今日朝イチで見たエントリーがこれでした。 qiita.com 論理削除の弊害は色々なところで言われているけど、僕の足りない頭で理解している所によると、二つの値しか持たない削除フラグ的なものはカーディナリティが云々で検索条件につけても性能上的にもよくないし、意味がないということです。 論理削除を完全に悪だとは言いませんが、論理削除を極力排したい人たちは、基的にデータそのものを削除する、もしくは論理削除というのはまだ要件的に未確定な要素が隠されていることを示すフラグであると考えているようです。 僕がITの業界でキャリアをスタートしてから2年目くらいに配置されたプロジェクトではT字型ER手法というのをベースにしたテーブル設計をしていて、そこでかなり鍛えられたわけですが、その時にはだいたいこのような原則を叩きこまれました。 テーブルに状態を持たせない 究極には機械が認識するキーと、人間にとって意

    論理削除が云々について - mike-neckのブログ
    t-murachi
    t-murachi 2015/03/25
    某所で某社が手がけた某アプリのデータが1つのでかいオーダーテーブルに業務に関するすべての情報を蓄積するという仕組みになってて何をどういう条件で探せばどの情報が得られるのかが分からんことになってた。
  • SQLデータベースに正しインデックスを作るのは 誰の役割?

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

    SQLデータベースに正しインデックスを作るのは 誰の役割?
    t-murachi
    t-murachi 2014/10/18
    ワシこれ読んだほうがいいな…
  • How do I use prepared statements in SQlite in Android?

    For prepared SQLite statements in Android there is SQLiteStatement. Prepared statements help you speed up performance (especially for statements that need to be executed multiple times) and also help avoid against injection attacks. See this article for a general discussion on prepared statements. SQLiteStatement is meant to be used with SQL statements that do not return multiple values. (That mea

    How do I use prepared statements in SQlite in Android?
    t-murachi
    t-murachi 2012/04/13
    db.compileStatement() [→ stat.bindXXX()]* → stat.execute() って感じか。 API Level1 でいける (http://bit.ly/HF35fm )。 / ていうかこの辺ちゃんと触れろよ… >ANDROID HACKS
  • ドリランド カード増殖祭り | 水無月ばけらのえび日記

    公開: 2012年2月26日20時55分頃 グリーのゲーム「探検ドリランド」でカード増殖祭りだそうで。 【トレードに関する不具合について】 (help.gree.jp)「探検ドリランド」 で増殖技がバレてレアカード複製祭り発生中wwwwww (jin115.com)「ドリランド」増殖バグで3000万以上荒稼ぎ!ゲームの仕様上、罪に問われず売ったもん勝ちwww (blog.esuteru.com)方法はこんな感じだったようで。 必要なもの 携帯もしくはPCを二台 gleeアカウント二つ 二台の機器でそれぞれのgleeアカウントでログインしてドリランド起動後お互いでトレードさせる トレード(受け取りはしない)が終わったら片方の機器はログアウトして二つの機器のアカウントを同じにする それぞれトレード品受け取り画面にして受け取るボタン同時押し 以上、「探検ドリランド」 で増殖技がバレてレアカード複

    t-murachi
    t-murachi 2012/02/27
    トレードの悪用阻止を優先すべきか、大量アクセスを捌ききることを優先すべきか。この手のサービスでやたらめったら排他制御が走るような作りにはしたくないって気持ちは分からんでも無い。
  • 何が正しいのかを考える際は、正しさの基準が必要 - ockeghem's blog

    大垣さんの寄稿記事「第44回 セキュリティ対策が確実に実施されない2つの理由:なぜPHPアプリにセキュリティホールが多いのか?|gihyo.jp … 技術評論社」のまとめにて、『最後に「何が正しいのか?」常に考えるようにしてください』と書かれています。この部分は、私への反論のようですので、このエントリで返答したいと思います。 大垣さんの主張 先にも述べたように、大垣さんはこのエントリの「まとめ」として以下のように書かれています。 最後に「何が正しいのか?」常に考えるようにしてください。 http://gihyo.jp/dev/serial/01/php-security/0044?page=2 この主張自体には私も大賛成です。大垣さんの記事は以下のように続きます。 例えば,SQL文を作成する場合にリテラル(パラメータ)を文字列としてエスケープすると浮動小数点型のデータが正しく処理されないデ

    何が正しいのかを考える際は、正しさの基準が必要 - ockeghem's blog
    t-murachi
    t-murachi 2011/12/04
    よーするにこのおおがきって人は、 W3C の勧告も読まずに「このサイトは IE6 で期待通りに表示される。そうでない firefox の実装が駄目なんだ」とか言っちゃう昔よくいたタイプの Web 制作者と同じ過ちを犯している訳だ罠。
  • データベースの内部動作を知る

    SQLのプログラミングは奥が深い。特にパフォーマンスの観点から、そう言えるだろう。 みなさんご承知の通り、同じ結果を出すプログラムでも、SQLの書き方次第で処理時間に何倍もの差が生じ得る。効率の悪いSQLを書いてしまう原因は、多くの場合、リレーショナルデータベースの内部動作やアプリケーションに関する理解不足である。両者をよく知った上で最適なSQLを書けるようになることは、システムエンジニアとしての重要なスキルの一つである。 特集『基礎から理解するデータベースのしくみ』では、リレーショナルデータベースの内部動作について、基的な部分を分かりやすく解説している。SQLプログラミングに役立つことはもちろん、SQLチューニングやデータベース設計のための基礎知識としても不可欠だ。 イントロダクション ブラックボックスのままでいいの? Part 1:SQL文はどのように実行されるのか SQL実行までの

    データベースの内部動作を知る
    t-murachi
    t-murachi 2011/07/02
    この辺もうちっと勉強しないと…。
  • ソーシャルゲームのためのMySQL入門 | BLOG - DeNA Engineering

    こんにちはこんにちは。最近お腹痛いばっかり言ってることで有名なiwanagaです。 DeNAは外部的にはプラットフォーム的な部分の方がフィーチャーされることが多いですが、実はソーシャルゲームの提供も行っています。怪盗ロワイヤルとか、どこかで聞いたことがあるのではないでしょうか。 僕はDeNAでソーシャルゲームが誕生した辺りからずっとサーバサイドを見てきましたが、そんな運用の中で自分が貯めてきた知見とかTIPSをご紹介したいと思います。 かれこれ10タイトル近くはレビューしたり運用したりしてるため結構言いたいことはいっぱいあるので、小出しにしつつ評判よければ次も書きます。 ソーシャルゲームのためのMySQL入門一覧 ソーシャルゲームのためのMySQL入門 - Technology of DeNA ソーシャルゲームのためのMySQL入門2 - Technology of DeNA 「MySQL

    ソーシャルゲームのためのMySQL入門 | BLOG - DeNA Engineering
    t-murachi
    t-murachi 2010/11/16
    パーティション機能とか LAST_INSERT_ID() とか。 / IO ってディスク I/O のことか。
  • HandlerSocketソースコード公開しました | BLOG - DeNA Engineering

    はじめまして、樋口と申します。 先日のDeNA Technology Seminar #2でお話させていただきました HandlerSocket Plugin for MySQL のソースコードを公開しました。 HandlerSocketとは? 簡単に言うと、MySQLデータベースへのアクセスを高速化するためのプラグインです。MySQLSQLパーザをすっ飛ばし、ネットワーク通信とマルチスレッド処理周辺を置き換えることによって、InnoDB等のデータベースエンジンの性能を限界まで引き出します。 このHandlerSocketですが、すでにモバゲータウンにて実際に運用しています。従来MySQLとmemcachedの構成で運用していた箇所を、HanderSocketを組み込んだMySQLだけの構成に置き換えました。その結果、MySQLサーバの負荷軽減、memcachedの負荷軽減、ネットワーク

    HandlerSocketソースコード公開しました | BLOG - DeNA Engineering