タグ

programmingとdatabaseに関するghostbassのブックマーク (60)

  • 後輩エンジニアを絶望させるDB設計方法4選 - Qiita

    エンジニアの格闘 エンジニアのみなさんはかつてひどいコードや設計と直面し、それと格闘したことでレベルアップした経験はあるでしょう。 つまり、先輩エンジニアたるものクソコードやクソ設計を残して、後輩エンジニアのレベルアップに寄与するのは義務だと言っても過言ではありません(?) 今回はDB設計に焦点をあてて、そのように絶望させる設計の残し方を記しておきます。 初めての投稿なのでレベル的にはかなり初歩になっています。 ↑きっと彼も立派なエンジニアになった時感謝してくれるでしょう 1) 必要な正規化を行わない エンジニアという不思議な不思議な生き物は処理の共通化等なにかと処理をまとめたがる習性があります。 以下のように著者テーブルと書籍テーブルがあるとします。 書籍 書籍ID 書籍名 著者ID

    後輩エンジニアを絶望させるDB設計方法4選 - Qiita
    ghostbass
    ghostbass 2023/05/31
    最後のサンプルはなんかこう…仕方がなくないか?JOINが増えるからって理由は却下だ
  • CentOS7にMySQLをインストールして初期設定するまで - Qiita

    環境 macOS 10.12.6 MacBook pro 2016 VirtualBox 5.2.18 CentOS 7.6-1810 MySQL 5.7.25 リポジトリの追加 MySQLはyumコマンドでインストールします。 CentOS 7では公式のyumリポジトリにMySQLがないので、まずはMySQLの公式が用意しているリポジトリを追加します。 ※ yum と リポジトリ に関しては、こちらの記事をご覧ください。 rpmファイルをインストール まず、MySQL Yum リポジトリをシステムのリポジトリリストに追加します。この操作は一度だけ必要で、MySQL が提供する RPM をインストールすることで実行できます。次の手順に従います。 MySQL公式より ってことなので、公式が用意しているrpmファイルをインストールすれば、yumのリポジトリもいい感じに追加してくれるみたいです。

    CentOS7にMySQLをインストールして初期設定するまで - Qiita
  • 【MySQL】外部キーの制約を無視してテーブルを削除する | ミーミルの泥泉

    foreign key が多すぎてテーブルが消せないよママン… リレーショナルデーターベースの鬼子。ERD(ER図)を書くときにわかりやすくなるのでつける人が多いだろう。 確かにこれがあることで制約が守られて健全な構造になるというのは分かるんだけど、その関係性を(あたりまえだけど)常に保つためとにかくメンテナンスし辛くなる。 特に開発初期にテーブル構造を頻繁に作り替えるときなどはdrop tableもままならない状態に陥って、ついdrop databaseしてしまうこともしばしばだろう。 …だよね? というわけで、MySQLで制約を無視してテーブルを削除できるコマンドをメモ。 対応方法 MySQLのステートメントを利用すると制御をON・OFFできる。 外部キーおよびその他のMySQLステートメント 使うステートメントは以下。 FOREIGN_KEY_CHECKS 制約を無効にするときは S

    ghostbass
    ghostbass 2019/09/20
    外部キー制約を無視してdrop table
  • MySQL 8.0登場!立ち止まることを知らない進化はこれからも続く。

    ゴールデンウィークはいかがお過ごしされただろうか。今年は天気も良く、行楽日和が続いたように思う。 さて、先日MySQL 8.0が正式にリリースされた。少し時間が経ってしまったが、今回はMySQL 8.0の新機能について紹介したい。コミュニティ版のダウンロードはこちらから可能だ。 ひとつ前の正式バージョンはMySQL 5.7だったのだが、MySQL 8.0は非常に大きなリファクタリングが含まれており、5.x台のバージョン番号を捨て去ろうという話があった。そこで、次のメジャーバージョンは最初の桁を増やすということになったのだが、MySQL 6.0は過去に既に存在し、買収などの騒ぎで開発が頓挫してしまった経緯がある。7.xはMySQL NDB Clusterと被っている。というわけで、5.7の7の部分の次という意味合いもあって、8.0というバージョン番号を引っさげ、満を持しての登場となった。その

    MySQL 8.0登場!立ち止まることを知らない進化はこれからも続く。
    ghostbass
    ghostbass 2018/05/07
    再帰的CTEが使えるってことは入れ子集合モデルも用済みになるってことか
  • ユーザ情報を保存する時のテーブル設計 - そーだいなるらくがき帳

    はじめに ※この発言は個人の見解であり、所属する組織の公式見解ではありません 用法用量を守り、個人の責任で業務に投入してください 参考資料 2024/02/14追記 実際のテーブル設計の詳細はこちらを参考にどうぞ。 agilejourney.uzabase.com 要件 User情報を保存するときにどのようなテーブル設計を行うか 今北産業で頼む テーブルに状態を持たせず状態毎のテーブルを作る 状態が変わればレコードを消して別のtableに作る tableの普遍的な情報は別に持たせる 僕の考えた最強のDB設計 PostgreSQLをベースの雑なER図を作った。 これを元に話を進める。 table構成 users 親tableであり、すべてのユーザはここに属する。 基はINSERTのみでUPDATE、DELETEを考慮しない。 user_detail userに付随する詳細の情報がここに登録

    ユーザ情報を保存する時のテーブル設計 - そーだいなるらくがき帳
    ghostbass
    ghostbass 2018/05/02
    ユーザーの状態が増えたらテーブルが増えるって構造が個人的には受け入れられない。とあるユーザーの今の状態は?みたいな問い合わせが辛く感じる。けどそういうユースケースがないと仮定できるなら…
  • 奥野幹也『理論から学ぶデータベース実践入門』はどこがダメなのか - 檜山正幸のキマイラ飼育記 (はてなBlog)

    言い訳から始めます。この記事を(途中まででも)読んだ人は、次のように言いたくなるでしょう。 『理論から学ぶデータベース実践入門』は良いなのか悪いなのか、いったいどっちなんだよ?! このは間違いや説明不足があり、誤読されやすい表現も多く、その点では残念なです。しかし、面白いアイディア、するどい観察も含まれていて、行間を補い深読みすれば、多くの示唆を得られるでもあります。 よって、「良い/悪い」の二択では答えられません。良い点と悪い点の両方を、できるだけ客観的に記述するしかないのです。それをした結果、長い記事となりました。 内容: ことの発端: zhanponさんの批判 奥野擁護と奥野批判 僕の擁護・批判の方針 zhanponさんの指摘の再検討 1. 論理的な矛盾とデータの不整合を混同している 2. 命題論理の限界についての説明がおかしい 3. 古典論理の定義を間違えている 4.

    奥野幹也『理論から学ぶデータベース実践入門』はどこがダメなのか - 檜山正幸のキマイラ飼育記 (はてなBlog)
    ghostbass
    ghostbass 2017/10/11
    RDBの沼が深すぎるのはわかった/ 「inner join使うとデータ取れないからleft join」的な理解で止まったベテランPG|SEは読むべきとは思うの
  • 管理者グループ(administrators)なのにSQL Server Expressの管理者になれない場合

  • DBeaver - 多彩なデータベースに対応した管理UI

    データベースを使った開発や運用時においてGUIの管理インタフェースが欲しいと思うことは多々あります。特にプロジェクトによってデータベースの種類が違ったり、接続先があちこちに存在するとそう感じるはずです。 そこで使ってみたいのがDBeaverです。多彩なデータベースに対応した管理UIです。 DBeaverの使い方 接続先の選択画面です。PostgreSQL/MySQL/MariaDB/DB2/Oracle/SQL Serverなどの基に加えてMS Access、infomix、MongoDB、Firebirdなども選択できます。 SSHトンネルに対応しているので番環境のデータベースも確認できるでしょう。 接続しました。 テーブルの一覧です。 データも確認できます。 ダイアグラムはリレーションなどの関係が分かるようになっています。 DBeaverを入れておけば、大抵のデータベースには接続で

    DBeaver - 多彩なデータベースに対応した管理UI
    ghostbass
    ghostbass 2017/05/05
    PgAdmin4が高解像度モニターに対応してないので代わりに使うのは有りかなあ。でもダイアグラムがほぼ表示のみだしA5M2の方がましだなあ。/Eclipseベースなのでプラグインがあればそっちかなあ。
  • https://qiita.com/kantomi/items/2ada31d9a93f2b31bb9f

    ghostbass
    ghostbass 2016/09/14
    なるほど/ いい記事だと思うのに最後がアレ
  • https://qiita.com/kantomi/items/07a691e19725e3cd3c4d

    ghostbass
    ghostbass 2016/06/24
    View内でもカーソルを維持できてカーソルを複数使用できてリテラルでなくシンボルで列アクセスできて型チェックもやってくれるミドルウェアが存在するならありかも。
  • OWASPのSQLインジェクション対策方針を読んで「おまえは俺か」と思った

    つい最近まで、グローバル・スタンダードのセキュリティ施策ではバリデーションが極めて重視されている、いささか過剰ではないかと思っていたのですが、OWASPの文書を読みなおしたところ、これは僕の思い過ごしだったかと思い始めました。あくまでOWASPに限った話ではありますが… OWASP Top 10 2004については、以下のようなプレゼンをしたことがあります(2012年3月27日)。 ここが変だよ、グローバルスタンダードの脆弱性対策~入力値の考え方~ OWASP Top 10 2004をはじめとして、バリデーションが過剰に重視されているのではないかという指摘でした。 しかし、最近OWASPの文書を読みなおしてみると、OWASP Top 10 2004当時にあった「バリデーション至上主義」のようなものはすっかり影を潜め、私が(そして日の専門家の多くが)言っていることとほとんど変わらないことに

  • これでスッキリ!! SQLServerダイエット! - Sanwa Systems Tech Blog

    どもuozy☆です。 突然ですが、今話題の「おにぎりダイエット」!!お腹まわりがちょっと気になるお年頃のuozy☆は今日から始めてみます!! http://diet-wiz.net/184/ さて、今回はDBに負荷をかけているクエリを探す方法を書いてみます。MySQLではスロークエリログを設定する事で処理が遅いクエリを取得できますが、SQLServerではもっとお手軽に動的管理Viewをselectする事で同様に取得する事ができます。 ※厳密に取得したい場合はトレースログを設定する事をおすすめします。 実行時間の長いクエリを取得 実はトレースログを仕込んでいなくても、ある程度SQLServerの中に実行時のデータが保存されています。そのデータを使用し実行時間の長いクエリを抽出する事ができます。dm_exec_query_statsという動的管理Viewがそれです。これをselectするとサ

    これでスッキリ!! SQLServerダイエット! - Sanwa Systems Tech Blog
    ghostbass
    ghostbass 2015/10/02
    最適化の前
  • 嵐のコンサートがあるとダブルブッキングしてしまうホテル予約システムを作ってみた

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

    嵐のコンサートがあるとダブルブッキングしてしまうホテル予約システムを作ってみた
    ghostbass
    ghostbass 2015/05/07
    排他制御
  • 新著が出ます:『SQL実践入門』 - ミックのブログ

    4月中旬ころになりますが、新著が出ます。SQLのパフォーマンスを主題にしたで、実行計画を読むことで、なぜこのSQLは遅いのか、あるいは速いのかをデータベースの内部動作まで把握して理解しよう、という趣旨です。 リレーショナルデータベースというのは、SQLという自然言語を模したインタフェースによって、低次のレイヤーを隠蔽する意図で作られたミドルウェアなので、当は実行計画などという手続レベルの世界をユーザが覗き見るのは、末転倒なところもあります。ただそうはいっても、現実にSQLが遅かったら原因を解析せざるをえないわけだし、大体当にブラックボックスにしたいなら、なんでどのDBMSも実行計画を見られる手段なんか用意してるんでしょうね不思議ですね、という理想と現実の狭間で悩むエンジニアの方々に少しでもベターな解に辿りつけるアプローチを提示できれば、と考えております。 以下まえがきと章立てです。

    新著が出ます:『SQL実践入門』 - ミックのブログ
  • トランザクション分離レベルについて極力分かりやすく解説してみた[SQL] - 明日になったら本気出せる

    こっちに移動 qiita.com

    トランザクション分離レベルについて極力分かりやすく解説してみた[SQL] - 明日になったら本気出せる
    ghostbass
    ghostbass 2015/03/10
    トランザクションAはn件あるつもりだったのに終わり間際に「いやn+1件ですよ?」といわれるのがファントムリード、Aは s1のつもりだったのに終わり間際にs0ですよ?って言われるのがダーティーリード
  • 日本一熱いデータベース論、「理論から学ぶデータベース実践入門」 - プログラマでありたい

    技評さんから理論から学ぶデータベース実践入門を頂きました。ありがとうございます。 著者の奥野さん 著者は、漢(オトコ)のコンピュータ道で有名な奥野さんです。直接の面識はないものの、データベース設計に悩み調べて行き着いた先が奥野さんが出している情報ということはよくありました。そんなこともあり、心のなかで勝手にデータベースの師匠として崇めています。そんな奥野さんが扱うテーマは、MySQLではなくデータベースです。個別の製品の話ではなく、データベース理論です。実践入門と銘打っているだけあり、データベース設計の具体的なやり方、考え方が随所にあります。 何について書いているのか? ポイントは、説明とやり方を集めたノウハウ集ではなく、設計の考え方の指針を示している点です。例えば、ID設計の話。永遠の論争であるナチュラルキーとサロゲートキー、どちらが適切かという命題があります。それぞれの利点と問題点を上

    日本一熱いデータベース論、「理論から学ぶデータベース実践入門」 - プログラマでありたい
    ghostbass
    ghostbass 2015/02/24
    ほしい/技評の電子版サイトにはまだなかった。電子版出たら買う
  • Amazon.co.jp: 理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus): 奥野幹也: 本

    Amazon.co.jp: 理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus): 奥野幹也: 本
    ghostbass
    ghostbass 2015/02/24
    “理論から学ぶデータベース実践入門”
  • Part7 データベースにまつわる怖い話

    怖い話 その1 終わらないバッチ処理 インテグレータ勤務 Aさん お正月気分も抜けてきた冬のある日,普段と同じように仕事をしていると,突然部長から呼び出された。あるプロジェクトでシステムの稼働開始を1カ月後に控えているのだが,開発が遅れているので支援してほしいと言うことだった。 そのシステムは製造業のある中堅企業向けで,全国の売り上げを集計して販売分析を行うという普通によくあるものであった。3週間前にプログラミング作業に着手し,予定ではすでにシステム・テストに入っているはずなのに,まだ修正を続けているらしい。 「やはりオープン系RDBは使えない?」 聞いてみると,夜間の6時間で終わらなければならないバッチ処理が,12時間たっても終わらないのだと言う。ちなみに,そのバッチ処理は,Oracleのストアドプロシジャを使って記述している。売り上げの元データの件数は100万レコード以上。データ量が多

    Part7 データベースにまつわる怖い話
    ghostbass
    ghostbass 2014/07/17
    暑い日にはちょうどいい
  • [Ruby][解答募集]文字列に出現する単語の個数を数えてみよう - Qiita

    先日参加したRuby/Rails勉強会@関西 60thの「Ruby初級者向けレッスン」でこんな問題が出題されていたので紹介します。 問題 文字列中に含まれる単語の個数を単語ごとにカウントして、ハッシュとして表現してください。 実行例 入力: "no ruby no life" 出力: {"no" => 2, "ruby" => 1, "life" => 1} 自分なりの実装方法を考えてみよう Rubyに慣れた人なら、おそらくかなり簡単な部類に入るプログラミング問題だと思います。 しかし、こんな簡単な問題でも意外と実装方法は人によって異なるものです。 実際、僕が関わっている西脇.rb & 東灘.rbのコミュニティで出題したときも、解答例は人それぞれ異なっていました。 各人の知識やこだわりの違いがコードに現れてくるので、コードを見るだけでも面白いですし、お互い勉強にもなります。 あなたも解答例

    [Ruby][解答募集]文字列に出現する単語の個数を数えてみよう - Qiita
    ghostbass
    ghostbass 2014/04/04
    やってみる
  • - データベースの進化的設計

    データベースの進化的設計 Martin Fowler Pramod Sadalage 原文(Evolutionaly Database Design) ここ何年かで私たちはアプリケーションの開発に即してデータベースの設計を進化させることを可能にする技法を編み出した。このことはアジャイルメソッドにとって非常に重要である。この技法は継続的インテグレーション及び自動化されたリファクタリングをデータベースの開発に適用し、かつDBAとアプリケーション開発者が密接に協力することによって成り立つ。この技法は開発中のシステムや既に開発されたシステムに対しても機能する。 変化に対応する 制限事項 プラクティス集 DBAは開発者と密接に協力し合う 全員が自分のデータベースインスタンスを保有する 開発者は共有マスターに頻繁に結合する スキーマとテストデータから成るデータベース すべての変更でデータベースのリファ