symfonyでデータベースを利用する際、config/databases.ymlに以下のように接続設定を記述します。 all: # 環境 doctrine: # 設定名 class: sfDoctrineDatabase # 接続クラス param: # パラメータ dsn: mysql:host=localhost;dbname=hoge username: root password: 今回は、この設定がsymfony内部でどのようなオブジェクトに保持されているのかと、その利用方法について簡単にまとめてみます。(symfony1.4のソースコードを基にしています) はじめに このエントリで取り上げる主なクラスは以下の二つです database/sfDatabase データベースの接続設定の保持と、接続/切断の機能を提供する基底クラス database/sfDatabaseManage
こんにちはアシアルの岡本です。 暖かい日が多くなりましたが、桜はもう散り際ですね。 週末は車や電車の窓から桜をみながら、 秩父へ1泊二日の小旅行へ行ってまいりました。 たまにはパソコンから離れて自然に囲まれることも必要です、 常に鞄の中にはノートパソコンと通信カードが入っているのですが… 今日はHTMLフォームのチェックボックスを扱うテクニックの紹介をしたいと思います。 大量のチェックボックスの情報をGETリクエストで引き回したり、 データベースに格納するのは一苦労ですがbit演算の考え方を応用すると上手く解決する場合があります。 各チェックボックスをbit演算に見立て桁を割り当てることで、 32ビットなら最大32個、64ビットなら最大64個の情報を一つの数値型に格納することができます。 数に上限があるため用途は限られますが、 例えば、ネットショップで商品毎に色を持たせたい場合に使ったこと
江島健太郎氏によるブログ記事です。昨今におけるNoSQLの人気急上昇ぶりと、対するRDBMSの評価が下がっていることについて冷静に考察しています。 OracleやMySQLなどRDBMSはすでに成熟した段階にある一方、柔軟性やスケール性において弱点を抱えています。その点、NoSQLはRDBMSが抱えている問題を解消しているだけでなく永続性もある程度サポートしていることから持てはやされ、「SQLデータベースは死んだ」という極論まで出るようになってしまいました。そしてMongoDBのように「書き込み時にはディスクに同期しない」という、永続性においてはある意味致命的な問題をトレードオフとして認識せず、ただ賞賛する界隈に対して、皮肉の意味を込めた動画やサービスが作られ話題となりました。 江島氏は「NoSQLはSQLを極めてこそ真価を発揮する」と主張しています。そして原点に立ちかえり、そもそもWe
今回は「第29回 SQLインジェクションの復習」で紹介したSQLインジェクションツールのsqlmapを紹介します。開発者や運用管理者のセキュリティ意識が向上しない原因の一つは、脆弱性がどのようなリスクを持っているのか理解していないことが原因であることも少なくありません。今回はSQLインジェクションのリスクの一部である自動化された攻撃ツールを紹介します。 sqlmapとは? sqlmapとはブラインドSQLインジェクション攻撃を実行するツールです。オープンソースで開発され執筆時点の最新版は2010年3月14日にリリースされたバージョン0.8です。 http://sqlmap.sourceforge.net/ 筆者は偶然、最初のリリースからこのツールを知っていたのですが、このツールの進歩には目を見張る物があります。 sqlmapの概要 記述言語:Python MySQL, Oracle, Po
NoSQL(Not Only SQL)とは、SQLを使わないKVS(Key Value Store)などを指しますが、最近流行のキーワードです。今日はNoSQLについて。 SQLは英語であり仕様書である SQLは英語であり仕様書である。と書いてきました。 SQLは、プログラム(アルゴリズム)を組むことができない文系の事務員が、英語的記述で書けば結果が得られるというものです。SQL文中にアルゴリズムは存在しません。 例えば、次のようなテーブルをご用意ください。 TEST_TABLE ID NUMBER 主キー NAME VARCHAR(20) IDに1から1,000,000 NAME 名前のテストデータ この100万件のデータが入ったこのテーブルを 1) SELECT * FROM TEST_TABLE WHERE ID = 1 2) SELECT * FROM TEST_TABLE WHE
もうタイトルのまんまですが、データの更新時に自動でデータの差分を取得して履歴テーブルに突っ込むbehaviorを作りました。 自分で作っているアプリケーションで、データ更新時の変更履歴を表示させたいと思ったのだが、対象テーブルが沢山あっていちいち似たような実装をあちこちに作るのは気が狂いそうなので汎用化しちゃえ、というのが作った動機 概要 AutoLoggerBehavior http://github.com/ryuzee/auto_logger_behavior から入手可能 ライセンスはMITライセンス 使い方 入手したauto_logger.phpをapp/models/behaviors/に配置 履歴テーブルの作成 CREATE TABLE `change_logs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `mode` varchar(6
昨日箱崎の IBM 本社で開かれた勉強会 Club DB2 第103回で、ゲスト講師として話してきました。DB2 の勉強会なのにデータベースと SQL の一般論をぶってしまって大丈夫かな、と思ったのですが「たまにはそういう話もいいものです」という主催者側の寛大なおはからいにより、好きなこと喋らせてもらいました。 Ustream で中継流したり、Twitter で質疑を受け付けたり、新しい形のコミュニケーションが体験できて面白かった。こんなとき、インターネットというのは本当に良いものだと実感。 当初は50人ぐらいだろうと予想していたら、蓋を開けてみたら100人部屋が満杯になってびっくり。人生で一番名刺交換とサインをした日になりました。飲み会でも色んな人と話ができて楽しかった。本の著者にとって、なかなか読んでくれた人の生の声を聞ける機会は少ないので、「この本のおかげで助かった」という人にお会い
@marqsさんと@muranetさんと一緒にhbstudy#11で発表させていただきました。 これを機にとか言うとでかすぎる気がしますがCassandraが国内でも盛り上がるといいなーと思います。 懇親会でも結構使おうとしている方がいたりしてうちもうかうかしてられないですねw 資料をあげましたのでこちらよろしかったらどうぞ! インフラエンジニアのためのcassandra入門 View more presentations from Akihiro Kuwano. これだけはかかないと! 素晴らしい会を開いて下さっているハートビーツの方々や、スピーカーの方々、来ていただいた方々に感謝しております 非常に楽しかったです! ただいま二日酔いですw
Working with hugedomains.com was a quick and easy process. We got to speak to multiple real people located in Colorado without having to wait on hold! Our only complaint was we felt we had to overpay more than this particular domain was worth, and we weren't able to negotiate it down to a level that we felt was fair. However, payment and delivery were seamless, and within a few hours we had all of
はじめに 前回では、入れ子集合モデルという、リレーショナルデータベースで木構造を扱うための新しい方法論を紹介しました。このモデルは、RDB、SQLと親和性の高い優れたものではあるのですが、挿入など更新時に、無関係のノードまで変更対象としなければならないのが大きな難点でした。 そこで今回は、上記の欠点を解消する進化版のモデルを紹介します。この方法を理解していく過程で、私たちはRDBと集合論の結び付きの深さを再確認することになります。 ふだんこの連載は、1回完結の読み切り形式なのですが、今回に限り、前号の内容を前提としています。未読の方は、前号を先に読むと理解が増すでしょう。 稼働環境 すべてのリレーショナルデータベース もしも無限の資源があったなら 座標に整数のみを使う場合の限界 入れ子集合モデルの大きな欠点は、ノードを挿入(追加)するときに、自分より「右側」にある無関係なノードをもっと右へ
SQLアタマアカデミー 第7回性能改善の鍵、インデックスの特性を知る~B-treeとハッシュ (1)B-tree はじめに データベースを扱う仕事をしていると、パフォーマンスの問題に悩まされることは日常茶飯事です。とくに最近は、データベースに格納されるデータ量が飛躍的に増え、サーバのCPUやメモリといったハード面の増強だけでは追いつかないことも多くあります。 そのようなケースに対応するため、DBMSは性能改善のための手段を多く用意しています。その中で最もコストパフォーマンスの良い方法が、インデックス(索引)です。アプリケーションにもハード構成にも影響を与えずに実行でき、うまくいかなければすぐに削除できるという手軽さが大きな魅力で、効果はしばしば絶大です。 インデックスにはいろいろな種類があり、またDBMSによってもサポートする種類に差がありますが、本稿では最も重要な2つを取り上げます。それ
Linux-DB システム構築/運用入門 (DB Magazine SELECTION) 作者: 松信嘉範出版社/メーカー: 翔泳社発売日: 2009/09/17メディア: 単行本(ソフトカバー)購入: 55人 クリック: 3,402回この商品を含むブログ (32件) を見る読み始めた瞬間からこれは良い本だと思って一気に読んだ技術書はEffective Java 第2版 (The Java Series)以来かもしれない。Effective Javaを読んだときは既にJavaが本業ではなくなっていたけれど、このLinux-DB本は今自分がもっとも知るべき内容だったことも大きいかもしれない。 自分が是非購入しようと思ったきっかけは奥さんの「Linux-DBシステム構築/運用入門」がすごい - あなたのシステム、ガラパゴス化していませんか?というエントリ。特に次の文に興味を持った。 なぜそうな
Webシステム開発において性能試験を行う場合、hp LoadRunnerやApache JMeterといったウェブブラウザをエミュレーションしてくれる負荷テストツールを用いるのが定番だと思います。そんななか、たまにデータベース単体での性能を測ってほしいと頼まれることがあるので、そうした便利なツールはあるのかなと思って調べてみました。 データベースに対する負荷テストツールは探すとたくさん出てくるのですが、案件で使用しているRDBMSに対応していなかったり、トランザクション仕様が希望と異なっていたり、微妙に作りが悪かったりと、ニーズに合致したツールはすぐには見つかりません。そんなときにこのエントリがツール探しの参考になればと思います。 pgbench 対応RDBMS:PostgreSQL 対応OS:Linuxなど 言語:C 作者:石井達夫氏 ライセンス:独自(BSDライセンスに近い) トランザ
開発しているシャーディングミドルウェアである Incline と Pacific については YAPC::Asia 2009 を始めいろいろな所で話をする機会をいただいてきたので、今回は、なぜ RDBMS ベースのアプローチを採用したのかという背景を中心に説明させていただきました。概念的な話が多くて分かりにくかったと思います(すみません)が、細かな点についてはパフォーマンスとスケーラビリティのためのデータベースアーキテクチャ (BPStudy#25発表資料)を参照いただければと思います。 また、中で出てきた「実体化ビュー」については、Materialized view - Wikipedia, the free encyclopediaが良くまとまっているかと思います。Incline は一言でいうと、RDBで構成されるshard群の上で read-only かつ eventually co
ビジネスでもっともよく使われるソフトウェアと言えば「Microsoft Office」だろう。さらにその中でもよく使われるのがExcelやAccessだ。Excelは簡易的なデータベース機能を備えているが、さらに細かくデータを集積したり、スクリプトを使ってデータを加工したいと思った時にはAccessを使うべきだろう。システム開発を行う部署に頼らずともユーザ自身でデータベースアプリケーションが作れるとあって、企業によっては多くのAccessアプリケーションによって業務が運用されているところも少なくない。だが、そうやって作られたアプリケーションは管理が煩雑になりがちで、新しいシステムへの移行を阻害する要因になりやすい。 「Zoho Creator」のトップページ。利用にはZohoアカウントが必要(またはGoogleアカウントも利用できる) 今のシステム化の流れとして、Webブラウザベースで動作
Linux-DB システム構築/運用入門の8章「インデックスのチューニング(前編)」を読んだので、インデックスの基本について実際に手を動かしながら勉強してみようと思います。 内容としては、クエリを実行する際に、「インデックスだけにアクセスした場合」と、「データにもアクセスする場合」のI/O 回数の違いが、パフォーマンスにどれだけ影響を与えるか調べてみるというものです。 環境 MySQL Ver 14.7 Distrib 4.1.22, for pc-linux-gnu (i686) using readline 4.3 ストレージエンジン MyISAM 今回は、インデックスだけにアクセスした場合と、データにもアクセスする場合のパフォーマンスの違いについて調べたいので、インデックスの構造が「キーの値, データの位置」となっているMyISAM の方が調査環境に向いていると判断しました。 テスト
件数の多い一覧にはページングが必要になるのだけど、ずっと前からこのページングのリンク(前へ | 次へ、とか)を表示するためだけに、レコードの総件数をカウントするのが無駄だなぁと思っていた。一般的なRDBを使っている場合には、一覧取得のSQLと同じWHERE句のCOUNT問い合わせを行わなければならず、コーディング上も面倒だし、DBに対するクエリが増えるのもいただけない。総件数を表示するのであれば仕方がないけれども、そうでない場合にはなんとかしたい。 いつも不満に思っていたおかげで、最近やっと「前へ | 次へ」のような単純なページングの場合にはCOUNT問い合わせをしなくてもよいことに気がついた。とても今更すぎるけれども。 例えば、20件ずつの一覧であればLIMITを21にして取得したレコードが21件あれば「次へ」を表示するだけでよかった。「前へ」はオフセットが0でなければ表示すればよいので
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く