2017/07/10 SQLアンチパターンNight Part2 https://connpass.com/event/59946/
2017/07/10 SQLアンチパターンNight Part2 https://connpass.com/event/59946/
「SQLパフォーマンス詳解」という本を翻訳しました 2015-04-07 題の通り、「SQLパフォーマンス詳解」(原文タイトルSQL Performance Explained)という本を翻訳しました。PDF版と印刷版が上記サイトから購入できます。 (追記 2017年9月から、渋谷のBOOK LAB TOKYOさんでも印刷版を販売していただいています。輸送コストの関係で、サイトから購入するより若干安くなっています) リレーショナルデータベースにおいて、SQLとインデックスがどのように関連し、どのようにすればSQLのパフォーマンスを良くできるのかを解説した本です。特定のデータベース製品に焦点を当てた本は多数ありますが、この本ではOracle Database、PostgreSQL、MySQL、SQL Serverの4つのメジャーなリレーショナルデータベース製品を同時に扱っていて、それぞれのク
https://github.com/r7kamura/scheman 旅行を兼ねて沖縄に開発合宿に来ているので、1日目の成果を書き出しておく。 目的 Webアプリの開発フローで次のような状態を実現したい。 DBの変更のたびに変更用のSQLやMigrationファイルを人間が書かなくて良い migrationファイルを書く代わりに人間はスキーマを編集する スキーマはSQLで記述できる (DSLの使用を強制されない) SQL以外の言語でも記述できる (DSLを使用しても良い) 方針 次のような実装を試みた。 SQLを構文解析してスキーマデータに変換する (解析器は事前に実装済み) 適用すべきSQLを2つのスキーマデータの差分から自動で計算する SQL以外の解析器も作成可能に scheman diff scheman diffというコマンドを実装した。 これは変更前後の二つのスキーマの差分を標
TOPICS Database 発行年月日 2013年01月26日 PRINT LENGTH 352 ISBN 978-4-87311-589-4 原書 SQL Antipatterns FORMAT 本書はDB設計やSQL記述の際に避けるべき事柄を1章で1つ、25個紹介する書籍です。リレーショナルデータベースを中心に据えたシステム開発には、様々な場面で陥りやすい失敗(アンチパターン)があります。本書はデータベース論理設計、データベース物理設計、クエリの記述、アプリケーション開発という4つのカテゴリに分け、それぞれの分野におけるアンチパターンを紹介し、失敗を避けるためのより良い方法を紹介します。複数の値を持つ属性や再帰的なツリー構造の格納から、小数値の丸めやNULLの扱いに起因する問題、全文検索やSQLインジェクション、MVCアーキテクチャなど、実践的かつ幅広いトピックを網羅します。日本語
Perl でDB 今年に入ってからまたPerl を使うことが多くなってきていました。画面を伴うものはだいたいPHP で書いて、そうでないもの、例えばバッチ処理のようなものはPerl で書くことが多いので、バッチを書くことが多くなってきているということです。 Perl でDB を扱うときは、少し前まではDBIx::Class を好んで使っていたので、既存の案件のカスタマイズなどではいまも使うことになっています。しかし、新規に何か作ろうと思うと、スキーマを作るのが面倒に思えてなりません。ワンライナーで作れるのですが、それすらも面倒に思えてきてしまいました。 そもそも、簡単な処理しかしないのであれば、DBIlC は大袈裟な気がしてしまいます。DBIx::Skinny なども検討したのですが、そもそもO/Rマッパーが不要なんじゃないかというくらいの小さな規模では、そういうものもあまり使う気になれま
atsushi nagase*developments / blog / 過去の記事 / JavaScript / AbstractSQL.js作りました。 atsushi nagase - ngsdev.org 東京でウェブ開発をしている、長瀬敦史のブログ。 »HOME »LABS »BLOG 全ての記事を見る このサイトを購読する CPANのモジュールの、SQL::Abstractは、Perlのデータ構造からSQL文を生成するという 素晴らしいライブラリなのですが、同じようなものがJavaScriptで必要になって、 探してもなかったので、自分で作りました。 例 var sql = new AbstractSQL("test"); sql.createTable([ new AbstractSQL.Field("id",AbstractSQL.FieldType.INTEGER,1
良し悪しはまた別に置いといて。 SQL::String - An object representation of a chunk of SQL - metacpan.org #!/usr/bin/perl use strict; use warnings; use Data::Dump qw(dump); use Perl6::Say; use SQL::String; sub ss { my ($sql, @params) = @_; SQL::String->new($sql, @params); } my ($country_min_population, $city_min_population) = (50000000, 1000000); my $sub_query = ss(q|SELECT Code FROM Country WHERE Population > ?|,
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
米 Yahoo! が Yahoo! Pipes みたいに自由度が高くて、またちょっと毛色が違うサービスが出てきた。題して、Yahoo! Query Language。YQL と呼ぶようだ。SQL 風の言語を REST で投げて、結果を XML や JSON で受け取ることができる。具体的にやってみないと分かりにくいので、とりあえず試してみた。RSS からデータ取得YQL を使って RSS から最新のタイトル10個を取ってきてみる。こんな YQL になるらしい。 select title from rss where url='http://d.hatena.ne.jp/nitoyon/rss' rss テーブルに対して select を発行している。実際にこの YQL を試すには YQL 用の console を利用するとよい。(※要ログイン)console の左上に YQL を入力して
補足 この記事は旧徳丸浩の日記からの転載です。元URL、アーカイブ、はてなブックマーク1、はてなブックマーク2。 備忘のため転載いたしますが、この記事は2007年11月26日に公開されたもので、当時の徳丸の考えを示すものを、基本的に内容を変更せずにそのまま転載するものです。 補足終わり 本稿ではSQLインジェクション対策として、SQLのエスケープ処理の方法について検討する。 最近SQLインジェクション攻撃が猛威を振るっていることもあり、SQLインジェクションに対する解説記事が増えてきたようだが、対策方法については十分に書かれていないように感じる。非常に稀なケースの対応が不十分だと言っているのではない。ごく基本的なことが十分書かれていないと思うのだ。 SQLインジェクション対策には二通りある。バインド機構を使うものと、SQLのエスケープによるものだ。このうち、SQLのエスケープについて、十分
Filter::SQL 作った - id:kazuhookuのメモ置き場にある、Filter::SQLが使いやすくて仕方がないという話。 前にも書いたけれど私はPerlのデータベースプログラミングに苦手意識がある。SQLもPerlも人並みにはできるけれど、その両方がまざったのはどうもだめだ。 だいたい、こちらはSELECTだけをすればいいのに use 5.010; use DBI; my $dbh = DBI->connect("dbi:SQLite:dbname=foo.db"); my $sth = $dbh->prepare("SELECT * FROM table WHERE bar > 1"); $sth->execute; while ( my $row = $sth->fetch ) { say join "\t", @$row; }のような呪文を書かなくてはならないのは苦痛
« Japanize for IE バージョンアップのおしらせ | メイン | Filter::SQL を使って掲示板を書いてみました » 2008年04月16日 Perl で埋め込み SQL を使って楽をする話 DSL (ドメイン固有言語) は、プログラム開発の生産性を向上させる有力な手段です。そして、よく使われる DSL の代表例が正規表現と SQL だと思うのですが、前者に比して後者を嫌いな人が多いようです。なぜだろうと思ってつぶやいたところ、「SQL はリテラルじゃないから!」という答えが tokuhirom さんから返ってきました。そういえば例えば Pro*C のように C で Embedded SQL というのは良く聞く話なのに、Perl では同様の例がないような感じだったので、作ってみました。Perl で埋め込み SQL を実現するソースフィルター Filter::SQL で
0-DAY - SIMPLE SQL INJECTION あるオープンソースのCMSのセキュリティホールを探る際のFlashムービー。 映画のイントロのように始まり、怪しげな音楽と共にムービーが再生される等、あやしい雰囲気たっぷりに作られています。 IRCチャットで依頼が始まり、ソースのDL〜grepしてSQLインジェクションの脆弱性を見つけ、実際にIDとpassを取り出すまで。 こういう手口で脆弱性が発見されるんだな、というのがハッキリと分かります。 もちろん、ソースなど見なくてもURLから類推したりその他のパターンも多数あると思いますが、オープンソースの場合はこんな感じでソースをgrepされたりするんでしょうね。 SQLインジェクション対策の参考に。
TOPICS Database 発行年月日 2006年04月22日 PRINT LENGTH 320 ISBN 4-87311-281-8 原書 Learning SQL FORMAT 本書『初めてのSQL』は、SQL言語に初めて触れるプログラマを対象に、SQL言語の基本を解説する書籍です。その特徴は、実践に必要なポイントを過不足なく、コンパクトにまとめたこと。「データベースの歴史」から始まり「データベースの作成と設定」「クエリ」「フィルタリング」「複数テーブルからのデータの取得」「集合」「データの作成、変換、操作」「グループ化と集約化」「サブクエリ」「結合」「条件ロジック」「トランザクション」「インデックスと制約」などについて、丁寧に解説を行います。本書のサンプルは、MySQLを使用していますが、Oracle、SQL Serverなどでも動作するように配慮されています。各章末には練習問題
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く