You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
ちょっと遅れましたが、シリーズの第3回です。前回までに論じた内容をふまえて、簡単な実装を示します。↓前回までの内容はこちら。 DAOの悪夢 - PHPでデータベースを扱う(1) - 泥のように ドメイン駆動設計という救世主 - PHPでデータベースを扱う(2) - 泥のように 題材 「記事にタグを設定できるブログ」みたいなシステムを考えてみます。ブログ記事を示すEntryテーブル、タグを表すTagテーブルの二つを用意しました。MySQL WorkbenchによるER図(鳥足記法)は以下になります。 1つのEntryに対して複数のTagがある、1対多の関係です。同じTagが複数のEntryに関連するため、多対多の関係と見なすこともできそうですが、タグ程度だとあまり意味がないので、これ以上のテーブル分割はやめておきます。 Entryテーブルの主キーがentryIdと冗長な名前をしているのは、自
便利!VIM(GVIM 7.x)でSQLを整形する April 23rd, 2008 Posted in Linux Write comment ということで、VIMにMacroという便利な機能があるので、それを使う。 VIM用のMacroというのはいっぱい既に出回っていて、今回は以下のものを使う。 SQLUtilities http://www.vim.org/scripts/script.php?script_id=492 まずは、上記の場所からMacroをダウンロードしてくる。 ダウンロードしたファイルを解凍し、VIMのHOMEディレクトリ配下の「plugin」 ディレクトリにファイルを配置する。 ※解凍すると、pluginフォルダを含む複数のディレクトリが出来ると思うので、 実際にはHOMEディレクトリ配下の「plugin」ディレクトリの上のディレクトリ に丸ごとコピーすれば良
eBayが、JavaScriptアプリケーションからSQL文のような形式でデータベースへの問い合わせを記述できるDSL(ドメイン固有言語)のql.ioを発表。オープンソースとして公開しました。 現在、多くのWebアプリケーションが、バックエンドとのデータのやりとりにHTTPをベースにしたAPIを用いています。しかし、WebベースのAPIによってデータを取り出すのは、プログラマにとって実は手間のかかることです。 例えば、キーワードを入力すると関連する商品の名前、詳細、購入者の評価をユーザーに表示する、というWebアプリケーションでは、まずキーワードでデータベースを検索して商品IDを取得し、今度はその商品IDをキーにして名前や概要、評価の情報を取得する、といったように、APIを繰り返し呼び出す必要があります。 ql.ioはこうした内容をSQLのように分かりやすい記述で実現するだけでなく、複数の
リレーショナルデータベースはNoSQLを取り込み始めた。NewSQLの登場とNoSQLの終わり、という予想 MySQLの次期バージョンとPostgreSQLの次期バージョンにどのような新機能が追加されるのか、昨日、一昨日の2本の記事で紹介しました。 MySQLの次期バージョンはMemcached APIを備える! MySQL Conference & Expo 2011基調講演 PostgreSQLの現状と次期バージョン9.1の新機能。MySQL Conference & Expo 2011 この2つのデータベースの次期バージョンに共通しているのが、NoSQLの機能を取り込んでいることです。NoSQLに対するリレーショナルデータベースによる反撃が始まっています。 リレーショナルデータベースがNoSQLを取り込み始めた MySQLの次期バージョンであるMySQL 5.6に搭載予定の新機能の1
「A5:SQL Mk-2」は、SQL文の入力支援やER図作成などの機能を備えた高機能なSQL開発環境。Windows 98/2000/XP/Server 2003/Vista/Server 2008/Vista x64に対応する寄付歓迎のフリーソフトで、作者のWebサイトからダウンロードできる。 本ソフトは、SQL文の作成・実行を行える汎用のデータベース開発環境。ADOやODBCドライバーを利用して各種データベースに接続可能で、本ソフトで作成したSQL文を実行し、その結果を表示できる。また、SQLの実行計画を取得したり、実行結果を「Excel」へ出力することも可能。 画面はサイドバーと編集画面の2つに分割されており、サイドバーではデータベースおよび関連するスキーマ・テーブル・ビューといった項目がツリー形式で表示される。編集画面はタブ切り替え式になっており、SQL文やテーブルなどを複数開いて
図10●レコード・クラスタリングの仕組み。ハッシュ値にしたがって,empとemp_histの二つのテーブルで同じenoを持つレコードを一つのテーブルに格納している RDBMSが備えるさまざまな高速化手法 RDBMSは,ここまで説明してきた基本的なデータの格納のしかたや操作方法に加え,高速化のための手法をいろいろ用意しています。Part2の最後に,これらの手法をざっと紹介しておきましょう。 ●ハッシュ・インデックス キャッシュ・バッファのサイズや使われ方にもよりますが,一般にBツリー・インデックスを使って巨大なデータベースにアクセスする際には,ルート・ノードだけがキャッシュ・バッファにあるのが普通です。そのため,レコードにたどりつくまでにブランチ・ノード,リーフ・ノード,データベース・レコードと何回もディスクにアクセスしなければなりません。これを1回のアクセスでレコードを取得できるようにしよ
インデックスで検索を高速にする ここまでの説明でおわかりのように,一般にテーブル内のレコードがディスク上に格納される順序は,レコードを追加する順序やページに空きがあるかどうかなどに左右され,特定のキーの順番に並んでいるわけではありません。そのため例えば,従業員テーブル(emp)から従業員番号(eno)が71であるレコードを抽出するSQL文である SELECT * FROM emp WHERE eno = 71 のような単純な検索処理でも,テーブル内のすべてのレコードを一つずつ調べていかなくてはなりません。これではレコード数が膨大な場合に大変な時間がかかってしまいます。そこで,こうした特定のキーに対する検索を高速化するために用意されている仕組みがインデックス(索引)です。 インデックスの基本的な考え方は,書籍の索引と同じです。例えば,書籍の中から「テーブル」というキーワードを検索する場合,あ
テーブルとレコードの構造を詳しく見てみよう 次に,RDBMSの基本であるテーブルがどのようにディスクに格納されているのか,その構造について見ていくことにしましょう。 テーブルを構成する各ページの構造は,おおよそ(図2[拡大表示])のようになっています*11。図の左上にある「ページ・ヘッダー」は,ページ・アドレスやページ・タイプ(例えば,格納しているのがテーブルであるかインデックスであるか)など,ページについての一般的な情報を格納しています。その右の「テーブル・ディレクトリ」は,ページが格納するテーブル名など,そのテーブルに関する情報を保持します。 その次の「レコード・ディレクトリ」は,いわばページ内に存在するレコードの一覧表です。各レコードのROWID(行識別子)*12と,ページ内での物理的な位置(オフセット)のペアを,レコードの数だけ保持しています。一番下の「レコード・データ」の部分が,
世間では、今Gumblar祭りが勃発中であり、SQLインジェクションがニュースに出てくることは少なくなったが、だからと言ってSQLインジェクションの脅威がなくなったわけではない。SQLインジェクションはGumblarを仕掛ける手段としても利用されることがあり、Webアプリケーションを提供する全ての人にとって、対策を講じなければいけない驚異であることに変わりはない。SQLインジェクションという攻撃手法が認識され、大いに悪用されているにも係わらず、その本質に迫って解説している記事は少ないように思う。従来のWeb屋だけでなく、今やアプリケーション開発の主戦場はWebであると言っても過言ではなく、そういう意味ではSQLインジェクションについて理解することは、全てのプログラマにとっての嗜みであると言えるだろう。 というわけで、今日は改めてSQLインジェクションについて語ってみようと思う。 SQLイン
Fey使ってみた Dave RolskyのSQL生成モジュール、Feyを使ってみた。コードはこんな感じ。 use strict; use DBI; use Fey::Placeholder; use Fey::SQL; use Fey::Schema; use Fey::Table; my $dbh = DBI->connect('dbi:mysql:dbname=mq', 'root', undef); my $schema = Fey::Schema->new(name => 'Q4M'); my $table = Fey::Table->new(name => 'mq'); $table->add_column( Fey::Column->new( name => $_, type => 'text' ) ) for qw(a b c); $schema->add_table($
2008年02月03日04:00 カテゴリ書評/画評/品評Lightweight Languages 書評x3 - SQL本三大対決 404 Blog Not Found:この発想はなかった - 書評 - 逆算式SQL教科書を書いたら、「いや、うちも」とばかりにどっさりSQL本が来た。 まずオライリー・ジャパンの矢野様からは、「STATISTICS HACKS(和訳)」と一緒に「SQLクックブック」と「SQL Hacks 」を、そしてC&R研究所の吉成様からは「SQL実践活用大事典 」を献本いただいた。 これだけ頂くと、まとめないわけには行かないだろうということで、まとめてみた。 まず、「SQLクックブック」。こちらは申し訳ないのだけど、かなり期待はずれ。確かに「逆算式SQL教科書」よりは用例も多かったのだけど、Cookbookを特徴づけていた綿密なDiscussionがスカスカ。他ならと
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く