タグ

SQLとdatabaseに関するdecoy2004のブックマーク (9)

  • jOOQ (Java Object Oriented Querying) の使い方の紹介 - 愛と勇気と缶ビール

    jOOQ (http://www.jooq.org/) についてのメモ。 jOOQは、type safeかつdatabase orientedなクエリビルダーである。 database orientedなので、「アプリケーションからDBのことなんて全然意識したくないねん」的な思想に基いて作られた類のプロダクトとは異なり、思い通りのSQLを生成できるようになっている。 以下gradle前提で。version等はよしなに。 gradle dependenciesはこんな感じ compile 'org.jooq:jooq:3.7.1' compile 'org.jooq:jooq-meta:3.7.1' テーブル等に相当するクラスをgradle taskから生成するためにbuildscriptのdependenciesにも以下をかいておく classpath 'org.jooq:jooq-cod

    jOOQ (Java Object Oriented Querying) の使い方の紹介 - 愛と勇気と缶ビール
  • はじめに[SQL実践入門──高速でわかりやすいクエリの書き方|gihyo.jp … 技術評論社

    書の目的は,パフォーマンスの良いSQLの書き方,特に大量データを処理するSQLの性能向上の方法を理解することです。SQLの第一の目的は,ユーザが欲しいと思ったデータを選択すること,あるいは望んだ結果になるようデータを更新することです。通常のプログラミング言語と同様,一つの目的を実現するSQLの書き方は複数あり,それらの間には機能的には差異はなくても,パフォーマンスには大きな差が生じることが頻繁に起こります。したがって,SQLの組み立てを行うにあたっても,効率やパフォーマンスを重視した書き方が求められることが多くあります。 アプリケーション開発者の方の中には,普段あまりDBMSの内部アーキテクチャやストレージといった下位層を意識せず,データベースをブラックボックスとして扱っている人も多いでしょう。実際,データベースの扱うデータ量が少なければ,そのスタンスでも十分実用に堪えるシステムが作れる

  • 新著が出ます:『SQL実践入門』 - ミックのブログ

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

    新著が出ます:『SQL実践入門』 - ミックのブログ
  • JavaでRDBデッドロック検出 - Qiita

    http://cs.hatenablog.jp/entry/2013/07/09/234554 RDB操作でデッドロックは不可避です。ご確認ください。 DBでのデッドロックの発生は、直ちにシステムが停止することを意味しません。DBMSはデッドロック発生を検出してトランザクションを失敗させる機能を持っているからです。 アプリケーションの開発者がすべきことはただ一点、 デッドロック検出時のリトライ です。更新処理だけじゃないです。参照処理でも忘れちゃいけません。約束です。 Javaの場合デッドロック発生はコード的にどう検知すればいいかというと、SQLExceptionが内部にSQLSTATEというRDB共通のエラー番号を持っているのでこれで判別可能となっています。 SQLSTATEの一覧は日立さんのこのまとめが役に立ちます。拝承。 http://www.hitachi.co.jp/Prod/c

    JavaでRDBデッドロック検出 - Qiita
  • sqlt-diagram - 気軽に簡単にデータベースのダイアグラムを作成するソフトウェア MOONGIFT

    sqlt-diagram はPerl製のオープンソース・ソフトウェアです。データベース構造を示すスキーマからイメージファイルを作成するCUIのソフトウェアになります。面倒な設定は必要ありません。テーブル構造やテーブル同士の相関を気軽に確認できる便利なソフトウェアです。 sqlt-diagram の主な特徴 1) 面倒な設定は不要 コマンドラインでデータベースの種類、出力先、スキーマを記したファイル名を指定するだけです。以下は実行例となります。データベースは SQLite で、PNG形式の画像を出力します。 sqlt-diagram -d=SQLite -o=sample.png sample.sql 2) 画像は PNG/JPEGが選択可能 既定値はPNG形式となります。 3) フォント・サイズを4種類 small、medium、large、huge の4種類を指定できます。既定値は me

    sqlt-diagram - 気軽に簡単にデータベースのダイアグラムを作成するソフトウェア MOONGIFT
  • 開発者のためのSQLパフォーマンスの全て

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

    開発者のためのSQLパフォーマンスの全て
  • JPAで少しずつデータを処理する方法を考える - n-agetsumaの日記

    OutOfMemoryErrorの主な要因例として、DBMSからデータを取得しすぎがあります。 LASYフェッチによるN + 1 問題を回避するために、結合先テーブルの要素を一気に持ってくるJOIN FETCHを使ったところ、引き換えにJavaヒープ使用量が多くなるのはよくあるケースです。 以下のような、1つのIssueに対して複数のIssueAttributeを持つ1対多関連のエンティティの操作を例に、OutOfMemoryErrorを少しでも避ける方法を考えてみます。 @Entity public class Issue implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue private int issueId; private String tit

    JPAで少しずつデータを処理する方法を考える - n-agetsumaの日記
    decoy2004
    decoy2004 2014/06/21
    『OutOfMemoryErrorの主な要因例として、DBMSからデータを取得しすぎがあります。』
  • Entity-Attribute-Value: SQL アンチパターン - ペンギンラボ Wiki

    Bill Karwin “SQL Antipatterns: Avoiding the Pitfalls of Database Programming” の読書メモ。 Jaywalking 目的 ある属性について、複数の値を持たせる。 アンチパターン : カンマ区切りリスト カンマ区切りで複数の値を 1 つの列に納める。 例では、特定の製品についての担当者を複数設定するのにカンマ区切りで、担当者のアカウントIDを記述している。 create table products ( product_id integer, product_name varchar(1000), acount_id varchar(100), -- comma separated list -- ... ); insert into products (product_id, product_name, accou

  • Jdbi 3 Developer Guide

    Jdbi provides convenient, idiomatic, access to relational data in Java. Jdbi 3 is the third major release, which introduces enhanced support for modern Java, countless refinements to the design and implementation, and enhanced support for modular development through plugins and extensions. Jdbi is built on top of JDBC. If your data source has a JDBC driver, you can use it with Jdbi. It improves JD

  • 1