atpedia.jp 2024 著作権. 不許複製 プライバシーポリシー
はじめに 私は最近、いつもの共有ディレクトリメカニズムを使ってファイル共有を実装することに嫌気がさしてきました。管理者レベルで定義するアクセス権が多すぎるだけでなく、異なるオペレーティングシステム間でファイルを共有するためのあらゆる処理が必要になります。その上、インターネット接続しか使用できないとしたらどうでしょう。もちろん、EメールやFTPを使うことはできますが、必ずしもスマートな解決策ではありません。 そこで、ようやくPHPを使う気になったのです。次のことをすべて実行するPHPファイル共有プログラムを作成しました。ブラウザでファイルをアップロード/ダウンロードする これらのファイルをメタデータと一緒にリレーショナルデータベース管理システム(Relational Database Management System:RDBMS)に格納する 可能な場合はファイルを暗号化して圧縮する ファイ
« MySQL のクエリ最適化における、もうひとつの検証方法 | メイン | MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話 » 2008年06月09日 フレンド・タイムライン処理の原理と実践 MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話に続きます。 Twitter が注目されるようになって久しい今日この頃ですが、友人の投稿を時系列に並べて表示する、というのは、Twitter に限らず Mixi の「マイミクシィ最新日記」やはてなブックマークの「お気に入り」等、ソーシャルなウェブサービスにおいては一般的な手法です。ですが、この処理 (以下「フレンド・タイムライン」と呼ぶ) は、一見簡単そうに見えて、実装には様々な困難が伴います。本記事では、「フレンド・タイムライン」を実現する、プッシュ型とプル型の二種類の手法について、その原
当記事はSQLインジェクションのまとめ | Think Twiceに移転しました。
autoPrepare() および autoExecute() は、うんざりするような INSERT、UPDATE、DELETE や SELECT 文を書く手間を軽減します。 これらの SQL 文を使用していると、例えばテーブルにフィールドを追加した場合などの メンテナンスが大変ですよね? autoPrepare() および autoExecute() を使用するには、 Extended モジュールを 使用する必要があります。 'user' テーブルに次の 3 つのフィールド (id, name そして country) があるとしましょう。 きっと、こんな SQL クエリを書くことになるでしょう。 INSERT INTO table (id, name, country) VALUES (?, ?, ?) UPDATE table SET id=?, name=?, country=?
PHPでページ処理 純log WEBでページ処理するの結構面倒ですよね色々調べて 簡単な方法を見つけました。使えるかどうかは別として、 言語、環境はPHP+MySqlです。 pearのpagerそのままだとmysqlのLimitを使ってないので一回データを全部取得しているように見える。 Pager_Wrapperってのを使用するとその辺をちゃんとやってくれるっぽい。 ソースの中に入ってるのはDB,MDB,MDB2,DBDO,Eclipse用みたい とりあえずデータベース接続はMDB2を使って作成してみます ただ単にそれだけじゃ面白くないのでsmatryも使います。 phpソース[testpager.php] <?php //環境に合わせて読み込み先を変更 require_once "MDB2.php"; require_once "Pa
「データベースはブラックボックス。どんなSQL文を投げたらどんな結果が返ってくるかさえ知っていればよい」---そう思っている人も多いかもしれません。 しかし,本物のソフトウエア・エンジニアを目指すのであれば,データベースが動く仕組みを学ぶことは避けて通れません。パフォーマンスなどに問題が生じたときどこから手を付けていいのか皆目見当がつかない,といった事態に陥りかねません。 市販のRDBMSの内部はかなり複雑ですが,基本的な部分を理解するのはそれほど難しくありません。この特集でデータベースの動く仕組みを理解してください。 イントロ ●ブラックボックスのままでいいの? 基礎から理解するデータベースのしくみ(1) Part1 ●SQL文はどのように実行されるのか 基礎から理解するデータベースのしくみ(2) 基礎から理解するデータベースのしくみ(3) 基礎から理解するデータベースのしくみ(4) 基
miyakeです。皆さんドキュメントはしっかり書いていますか? 近頃のWeb界隈では、詳細仕様書的なものは作らずにスピーディーに開発を進めるケースも多いかも知れません。ドキュメント作成のコストは小さくありませんし、内容を最新に保つのも一苦労です。とは言え、複数の人間が関わるプロジェクトにはER図はあると嬉しいなと個人的には思います。 今日はそんなER図をブラウザ上で作成するアプリケーション「WWW SQL Designer」をご紹介します。 以下のスクリーンショットは、このアプリを実際に触って試せるlive DEMOのものです。 WWW SQL Designer posted by (C)フォト蔵 上部のメニューからテーブルやカラムを作ったり消したりして、テーブルをドラッグアンドドロップで配置、リレーションを同じくドラッグアンドドロップで設定、というのがおおまかな作業の流れになります。まず
※ 画像は公式サイトデモより。 DBを使ったWebアプリケーションが当たり前になり、その重要性は増す一方だ。万一、データが消失するような事態になったら、ビジネスに与える影響は計り知れない。 SQLインジェクションはDBに対する攻撃の一つだ。システムにバグがなければ良いが、それは起こってみてからしか分からない。予防措置をしいておこう。 今回紹介するオープンソース・ソフトウェアはGreenSQL、SQLインジェクションを防ぐDB用ファイアウォールだ。 GreenSQLはDBとWebサーバとのプロキシとして動作する。そして、その間で行われるSQL文を監視し、問題があるSQLを予め弾いてくれる。 対応しているDBはMySQLのみになる。ただ防ぐだけではなく、危ないものに対してはウォーニングログを残しておいてくれる。ログをチェックする事で、Webアプリケーションの強化も実施できる。 セキュリティ対策
今回はレプリケーションを取り上げます。まずレプリケーションとはどのようなものかを解説し、次にPostgreSQLとMySQLそれぞれが持つレプリケーションの基本構造を解説します。 RDBMSでいうプリケーションとは、ある1つのデータベースをまったく同じ内容で複製し、複製したデータベース(レプリカ)をネットワーク上に複数配置する機能です。レプリケーションにて作成した複製のデータベースは、様々な目的に活用できます。次にその使用例を紹介します。 目的の1つには、バックアップデータとしての活用があります。テープ装置などの外部記憶装置にバックアップデータを作成するかわりに、他のサーバ上のディスク内にデータベースを複製し、それをバックアップデータとします。 障害発生時には、バックアップデータとして作成した複製データベースを本番データベースとして使用し、障害復旧のための時間を短縮する効果があります。 そ
あくまで憶測で仮説でしかないんですが。 MySQL のストレージエンジンのうち代表的な二つ、MyISAM と InnoDB はよく MyISAM: Read は速いけどテーブルロックのため並行性が低い。運用が簡単。 InnoDB: MyISAM より Read は遅いけど並行性が高い 。行レベルロックなので。あとトランザクションや外部キー制約。運用が MyISAM よりちょっとめんどくさい。 という区別がされます。ここから転じて、 MyISAM は参照系クエリが大部分を占める場合に適用すると良い。例えば blog アプリケーションとか。 InnoDB は更新系クエリが多い場合に適用すると良い。 と言わたりします。実践ハイパフォーマンスMySQL でも第2章 ストレージエンジン(テーブル型) P.30 に アプリケーションでトランザクションを使用する必要がなく、主に SELECT または I
ポイント ・高度なインデックスやジョインを利用し,最短経路でデータにアクセス ・メモリー不足を自律的に解消し,キャッシュのヒット率を高める ・インメモリーDBは全データをメモリーで処理し,高速化を図る 目的地に早く到着したいなら,最短の経路を最速で行けばよい。これはデータベース(DB)でも同様だ(図1)。インデックスなどを使ってデータへの最短経路を見つけ,メモリー・アクセスを増やして,最速でたどり着く。DBにはそんな技術が詰まっている。 図1●データベース高速化技術のポイント ビットマップ・インデックスなどを使い、データにたどり着く最短の道を選ぶ。また、できるだけメモリーにデータをキャッシュさせておくことで、アクセスのスピードを上げる、という二つのポイントがある [画像のクリックで拡大表示] 以下では,(1)データにたどり着く最短の道を選ぶ仕組みと,(2)アクセスのスピードを上げる仕組みの
日記だけで4億件のデータ ミクシィが運営するSNS「mixi」は、2007年7月末段階でユーザー数が1110万人。人が12人集まれば、1人はmixiユーザーというわけだ。ユーザーのアクティブ率(ログイン間隔が3日以内)は約62%と高く、2007年4月から6月の月間平均ページビューは117.5億に達した。日記だけでも4億件以上に上るなど、蓄積するデータ量も莫大。2004年3月のサービス開始から、わずか3年半で現在の巨大コミュニティーへと発展したのだ。 ミクシィは、「LAMP(OSのLinux、WebサーバのApache、DBMSのMySQL、開発言語のPerl、PHP、Python)」と呼ばれるWebシステム向けの標準的なオープンソースソフトウェア(以下、OSS)でシステムを自社開発し、安価なPCサーバを1000台以上連ねる超分散構成でmixiのサービスを支えている(広告配信など周辺機能では
Javascriptについて質問です。 JavascriptでMySQLのデータベースにアクセスし、データを取り出し、結果を出力する事って可能なのでしょうか? 例えば、Ajax方式でCSVやXMLのファイルを読み込んで出力するのは出来ます。住所検索とか。 しかし、住所録のような大きいデータをCSVで読み込むと処理が若干重く感じ、操作性も良くありません。なので、データベースを使えればなっと思っていました。 私が試したのは、Javascriptで受け取ったクエリをlocationで同じページに再送信することです。 function selectArea() { area = document.form1.addr.value; url = "form.php?addr=" + encodeURI(area); location.href = url; } そして、URLにパラメーターがついてい
フロントエンド(frontend.html、frontend.js)の処理 フロントエンドのfrontend.htmlの5行目で、外部のJavaScriptファイルfrontend.jsを読み込みます。JavaScriptを外部ファイル化することで、HTMLファイルのヘッダー部(<HEAD>〜</HEAD>)を簡素化できます。 入力フォーム(16〜38行目)では、name属性でform1を指定しておきます(16行目)。同様に各テキストボックスやテキストエリアにもname属性で固有の識別子を割り当てておきます(21、27、32行目)。固有の識別子を割り当てることで、テキストエリアに入力された値の操作などを、容易にJavaScriptから行えるようになります。 郵便番号テキストボックスではキー入力(具体的には、押下したキーが解放された瞬間)をトリガーに、JavaScriptで定義したsetZi
Name Last modified Size Description Parent Directory - Connector-J/ 06-Mar-2008 02:25 - Connector-MXJ/ 22-Feb-2008 02:14 - Connector-Net/ 21-Aug-2008 03:39 - Connector-ODBC/ 02-Oct-2007 00:53 - Connector-PHP-mysqlnd/ 03-Apr-2007 19:32 - Connector-PHP/ 31-Mar-2008 23:00 - Contrib/ 04-Nov-2006 11:35 - FreeBSD/ 31-Mar-2008 01:21 - Linux/ 31-Mar-2008 01:30 - Manual/ 04-Nov-2006 12:47 - MaxD
MySQLとAjaxによる星型評価ボタンの設置方法*ホームページを作る人のネタ帳に、流行りのスターレイティングを表示するプログラムの設置方法が載っていました。 内容は、YvoSchaap.com - CSS: Star Rater Ajax Versionの日本語訳になっています。 このプログラムで気になった点、危険な点を挙げておきます。 3)PHPを作るに載っていたPHPのソースコードはかなり危険です。 if($_GET[’rating’] && $_GET[’imgId’]){ $dbh=mysql_connect ("localhost", “#######”, “"#######", “) or die (’I cannot connect to the database because: ‘ . mysql_error()); mysql_select_db (""#######
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く