タグ

dbに関するhatekun33のブックマーク (77)

  • Rails だって硬いデータベース設計をしたい!そんなあなたに贈る Tips 4 選 - peroli Developer's Blog

    2016 - 09 - 09 Rails だって硬いデータベース設計をしたい!そんなあなたに贈る Tips 4 選 list Tweet こんにちは、ペロリのサーバサイドエンジニアの @a_suenami です。 今回は Ruby on Rails アプリケーションにおけるデータベース設計についてちょっとご紹介したいと思います。 データベース設計してますか? みなさん、データベース(以下、DB)設計していますか?Scaffold したときにできた migration ファイルをそのまま使ったりしてませんよね? Ruby on Rails (以下、 Rails )は CoC(Convention over Configuration: 設定より規約)を強く提唱している フレームワーク であり、それによって得られる恩恵も大きい反面、かなり強めに設計の自由度を束縛されるという特徴もあります。特に

    Rails だって硬いデータベース設計をしたい!そんなあなたに贈る Tips 4 選 - peroli Developer's Blog
    hatekun33
    hatekun33 2016/09/12
  • コマンドラインでPostgreSQLを操作する – psqlで効率を上げる | POSTD

    私は、もう4年も毎日のようにPostgreSQLを使用しています。以前はデータベースとやりとりするためにGUIアプリケーションを用いていました。しかし今では、お気に入りのツールを使いながら効率よく作業できる、ビルトインのコマンドラインツールだけを使用しています。 稿は、 psql というコマンドラインツールを通して実現可能なタスクを複数のセクションに分けて説明します。ここで挙げる項目は次のとおりです。 psqlの設定 ヘルプの使用 データベースが遊び場 データベースの探索 クエリの作成 出力の比較 データベースのクローン作成 データの抽出 psqlの設定 あらかじめpsqlはある程度設定されています。そのため、稿では提供されているオプションを詳しく説明しません。psqlの使用がより楽しくなる2つのオプションについてのみ説明します。 1つ目は、データが横長でも正しくスクリーンに映し出され

    コマンドラインでPostgreSQLを操作する – psqlで効率を上げる | POSTD
  • 1日に100万レコード増える場合のテーブル設計

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。 PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

    1日に100万レコード増える場合のテーブル設計
  • Redis 本番障害から学んだコードレビューの勘所

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

    Redis 本番障害から学んだコードレビューの勘所
  • リレーショナルデータベースの仕組み (1/3) | POSTD

    リレーショナルデータベースが話題に挙がるとき、私は何かが足りないと思わずにはいられません。データベースはあらゆるところで使われており、その種類も、小規模で便利なSQLiteからパワフルなTeradataまで様々です。しかし、それがどういう仕組みで機能しているかを説明したものとなると、その数はごくわずかではないでしょうか。例えば「リレーショナルデータベース 仕組み」などで検索してみてください。ヒット数の少なさを実感できると思います。さらにそれらの記事は短いものがほとんどです。逆に、近年流行している技術(ビッグデータ、NoSQLJavaScriptなど)を検索した場合、それらの機能を詳しく説明した記事はたくさん見つかると思います。 リレーショナルデータベースは、もはや大学の授業や研究論文、専門書などでしか扱われないような古くて退屈な技術なのでしょうか? 私は開発者として、理解していないものを

    リレーショナルデータベースの仕組み (1/3) | POSTD
    hatekun33
    hatekun33 2015/09/16
  • SQLアンチパターン 幻の第26章「とりあえず削除フラグ」

    SQLアンチパターン 26章「とりあえず削除フラグ」 2015/08/31 @ GMO Yours #ronsakucasual https://atnd.org/events/68902Read less

    SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
  • Mac/Windows/Linuxで利用可能なDB専用GUIツール『0xDBE』について | DevelopersIO

    これまでに、(主に)Amazon Redshiftで活用出来るGUIツールとして『Intellij IDEA Ultimate Edition』や『Aginity』等を紹介して来ましたが、Intellij IDEAを開発しているJetBrain社から別種のDB関連ツールが開発されているという情報を先日知りました。 Amazon RedshiftのMac OS X向けGUIツールとして『Intellij IDEA Ultimate Edition』のDatabase Toolsを使う | Developers.IO Redshift専用 Windows GUIツール『Aginity Workbench for Amazon Redshift』が便利かもしれない件 | Developers.IO それがこの『0xDBE』と呼ばれるものになります。アナウンス自体は1年以上前からなされていた様で、

    Mac/Windows/Linuxで利用可能なDB専用GUIツール『0xDBE』について | DevelopersIO
    hatekun33
    hatekun33 2015/07/29
  • ルーク!MySQLではkamipo TRADITIONALを使え! | おそらくはそれさえも平凡な日々

    よくMySQLはゆるふわだから 値が勝手に切り詰められる エラーが起きずに変な値/日付が入る 不正なスキーマが入ってしまう など言われることがあります。ただそれは、そもそもの設定が悪いのです。(確かに昔デフォルトがゆるふわなのはいけなかったんですが) ということで、データベースには不正な値が入らないように設定はとにかく厳しくしておくのがオススメです。 じゃあどうするか。 MySQLSQL Modeによって、その辺りの制約をコントロールすることができます。以前、MySQLsql-modeで一番厳しいやつはTRADITIONAL、というのを書いたのですが、実はそれだけでは不十分で、TRADITIONAL,NO_AUTO_VALUE_ON_ZERO,ONLY_FULL_GROUP_BYとするのがより安心なようです。 これはkamipoさんに教えてもらいました。 @songmu TRADITI

    ルーク!MySQLではkamipo TRADITIONALを使え! | おそらくはそれさえも平凡な日々
  • Webシステムにおけるデータベース接続アーキテクチャ概論 - ゆううきブログ

    先月投稿した2015年Webサーバアーキテクチャ序論では、Webサーバアーキテクチャを学ぶ道のりと代表的な実装モデルの概要を紹介しました。 今回は、前回同様、主に新卒Webエンジニア向けに、Webアプリケーションサーバとデータベースサーバ間の接続管理モデルと運用事情について紹介します。 データベース接続の永続化やコネクションプーリングとは何なのか、なぜ必要なのかといったことが主な話題です。 背景 データベース接続の永続化とはなにか データベース接続のオーバヘッド データベース接続の永続化手法 コネクションプーリングとはなにか コネクションプーリング: ドライバ型 コネクションプーリング: プロキシ型 コネクションプーリング全体について PostgreSQLMySQL 参考資料 まとめ 背景 2015年Webサーバアーキテクチャ序論では、Webサーバアーキテクチャの話とWebアプリケーショ

    Webシステムにおけるデータベース接続アーキテクチャ概論 - ゆううきブログ
  • MySQLテーブル設計入門

    行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...Masahiko Sawada

    MySQLテーブル設計入門
  • 現場指向のレプリケーション詳説

    この文書は、技術評論社刊『WEB+DB PRESS Vol.22』に執筆した記事を技術評論社の 許可を得てWWWで公開しているものです。 このWWW版は校正前の原稿を元にしている点、WWW公開後に必要があれば修正する点で、雑誌版の文章とは異なる部分があります。また、図表も雑誌版とは異なります。 予めご了承ください。 また、この文章が対象しているのはMySQL 4.0系なので、最新のリリース版と比べると説明不足な点などが多々あると思います。 レプリケーションの基をおさえるには、この文書はまだ有益だと思いますが、設定レベルの説明は最新のドキュメントを参照するようにしてください。

  • RailsでDBからFixtureを作成する|TechRacho by BPS株式会社

    fixtureを手で作るのはとても疲れるので、DBから自動生成したり、FactoryGirlをはじめとしたFixture alternativeを使うことが多いと思います。 DBからfixtureのYAMLを生成する方法は色々見つかりますが、今回は要件を満たすものが見つからなかったので、rakeタスクを作ってみました。 複数行テキストやコロン(:)が含まれるテキストを、正しく処理できないものが多いんですよね。 今回はこのような要件を満たすようにしました。 MySQLで動作する テーブルを指定できる 複数行のテキストフィールドを処理できる IDやモデルファイルが無いテーブル(HABTM用中間テーブルなど)に対応する 以下のようなファイルを、lib/tasks/extract_fixtures.rakeとして保存し、 rake db:fixtures:extract すると、tmp/fixtu

    RailsでDBからFixtureを作成する|TechRacho by BPS株式会社
  • 国際化に対応したDB設計で一般的に用いられる方法と、メリット・デメリットを教えて下さい。…

    国際化に対応したDB設計で一般的に用いられる方法と、メリット・デメリットを教えて下さい。 @単純にフィールドを増やす: contents (table) -id -comment_jpn -comment_usa -comment_fra -author .. @テーブル単位で増やす: contents_jpn (table) -id -comment -author .. contents_usa (table) -id -comment -author .. @マスター言語以外をまとめる: contents (table) : master扱い -id -comment -author .. contents_i18n (table) -id -content_id : fk -locale : usa,fra.. -comment .. @全言語を並列に: contents (tab

  • Implementation of EAV pattern for ActiveRecord models

  • docrails/association_basics.md at develop · hachi8833/docrails · GitHub

    Active Recordの関連付け(アソシエーション) このガイドでは、Active Recordの関連付け機能(アソシエーション)について解説します。 このガイドの内容: Active Recordのモデル同士の関連付けを宣言する方法 Active Recordのモデルを関連付けるさまざまな方法 関連付けを作成すると自動的に追加されるメソッドの使用方法 関連付けを使用する理由 モデルとモデルの間には関連付けを行なう必要がありますが、その理由を御存じでしょうか。関連付けを行なうのは、それによってコード内で一般的に行われる操作をはるかに簡単にできるからです。簡単なRailsアプリケーションを例にとって説明しましょう。このアプリケーションには顧客用のモデル(Customer)と注文用のモデル(Order)があります。一人の顧客は、多くの注文を行なうことができます。関連付けを設定していない状態

    docrails/association_basics.md at develop · hachi8833/docrails · GitHub
    hatekun33
    hatekun33 2014/10/23
    Active Recordの関連付け(アソシエーション)
  • 【Rails】ActiveRecord:単一テーブル継承(sti)とポリモーフィック関連を未だにぱっと思い出せないのでまとめ。 - 訳も知らないで

    ActiveRecordで単一テーブル継承(STI:Single Table Inheritance)とポリモーフィック関連という2つの便利なモデルの持ち方?関係性?があるのですが、恥ずかしながらいつも混同してしまいます… 多分頭の中では両方とも「似たモデルをまとめる」みたいなぼんやりした認識してるので混ざってしまっているようで… すごい今更ですが ちょっと自分なりにまとめてみようと思います。 単一テーブル継承(STI:Single Table Inheritance) 同じような機能(メソッド)を持つActiveRecordモデルクラスが2つ存在するので、 継承を使って実装しようとした場合。 例として 「Information」モデルを継承した「Warning」クラスと「Notice」クラスを作成するとします。 (例としておかしかったらごめんなさい…) 単純に実装すると、各モデルに対しD

    【Rails】ActiveRecord:単一テーブル継承(sti)とポリモーフィック関連を未だにぱっと思い出せないのでまとめ。 - 訳も知らないで
  • 開発者のためのSQLパフォーマンスの全て

    前書き - インデックスの作成はなぜ開発者のタスクなのか インデックスの 内部構造 - インデックスは何に似ているか インデックス リーフノード - 二重連結リスト 検索 ツリー(Bツリー) - バランス木 遅いインデックス パートI - インデックスを遅くする2つの原因 where 句 - 検索のパフォーマンスを改善するためにインデックスを作成 等価 演算子 - 一致するキーの検索 プライマリキー - インデックスの使い方を確認 複合インデックス - 複数列に対するインデックス 遅いインデックス パートII - 前の問題点が再び 関数 - where句の 中での関数 大文字・小文字を区別する 検索 - UPPERと LOWER ユーザ定義 関数 - 関数インデックスの制限 インデックスの作り過ぎ - 冗長性の排除法 パラメータ化 クエリ - セキュリティとパフォーマンスのために 範囲 検

    開発者のためのSQLパフォーマンスの全て
  • 京の路: Railsで単一テーブル継承(Single Table Inheritance)

    ActiveRecord以外のORマッパーはどうなのかよく知らないのですが、Rails(というかActiveRecord)では、DB上の一つのテーブルを複数のモデルで共有する「単一テーブル継承(Single Table Inheritance)」というものが存在します。今日はこの単一テーブル継承についてちょっと紹介します。 ここでは種々のメッセージ機能を単一テーブル継承で実現する方法を例に、単一テーブル継承について紹介します。今回想定するメッセージ機能はSNSなんかでよく使われるであろう以下の3つです。 一般メッセージ:NormalMessage 招待メッセージ:InvitationMessage お問い合わせ:InquiryMessage それでは、すべてのモデルのデータ保存先となるMessageテーブルの定義から始めましょう。 まず単一テーブル継承をActiveRecordで使う為には

  • makopi23のブログ SQLアンチパターン読書会 「EAV(エンティティ・アトリビュート・バリュー)」に参加しました

    2013/6/27(木) SQLアンチパターン読書会 「EAV(エンティティ・アトリビュート・バリュー)」に参加してきました。 DoorKeeper http://sqlap.doorkeeper.jp/events/4507 以下の書籍をターゲットとした読書会なのです。 場所はいつもの湯島、アルティネットさんです。 参加者は10名かな。初参加1名です。新しい風が入るのは良いですね。 『SQLアンチパターン』読書会、日は「5章 EAV(エンティティ・アトリビュート・バリュー)」を議論します。 E・A・V! E・A・V! #sqlap — Takuto Wada (@t_wada) June 27, 2013 今日も相変わらず頼もしい! ちなみに @t_wada さんがこの書籍を翻訳しようと思ったキッカケは、このEAVだったそうです。 そういう意味でも、非常に興味深い章ですね。 ■アジェン

    hatekun33
    hatekun33 2014/10/08
    大変参考になった。/WordPressみたいな柔軟なDB設計を考えていたのですがテーブル継承で十分だと考えなおしました。
  • login

    ナップザックは、システム開発/ソフトウェア開発の設計・開発事務所です。 株式会社ナップザック © 2013-2018 NAPZAK Inc.