タグ

ブックマーク / thinkit.co.jp (11)

  • [Think IT] 第2回:PHPで作ろうConsumer (1/3)

    PHP-OpenIDを使ってみよう 今回は、「Identity Provider(以下、IdP)」の提供するアカウントを利用し、ログイン作業を行う「Consumer」の作成を行いながら、OpenIDの解説を進めていきます。 今回Consumerの作成に使用する言語としてPHPを選びました。実はOpenIDのConsumerやIdPを構築するためのライブラリとして、さまざまな言語向けのものが公開されており、1から構築する必要はありません。 OpenIDの公式サイトである「opdnid.net」にもその一覧 (http://wiki.openid.net/Libraries)が公開されてます。複数あるPHP向けのライブラリから、もっとも一般的な「PHP OpenID Library(JanRain PHP OpenID)」を利用してみることにします。 配布元(http://www.openid

  • [ThinkIT] 第2回:負荷によるベンチマークを試す (1/3)

    max_connectionsとは、「MySQLサーバが許可する、MySQLクライアントの同時接続最大数」です。この値は、MySQLクライアントから無制限にコネクションが張られることによってMySQLサーバの負荷が増大し、最終的にはサービスが停止してしまう…といった事態を防ぐために、同時接続してよいMySQLクライアントの数を制限することが目的です。 さらにもう少しパフォーマンスに注目していい換えれば、MySQLサーバがもっとも良い効率で稼動できる範囲にMySQLクライアントの接続数を制限する、ということになります。 あなたの環境ではいくつに設定されているでしょうか。パラメータ設定一覧を取得するコマンドは「第1回:定量的な情報収集のススメ」で説明した通りですので、以下のように実行してみましょう。 特に意識して設定を変更していなければ、上記のようにデフォルト値である100が表示されるはずです

    pateo
    pateo 2007/07/09
  • [ThinkIT] 第1回:認証の一元化を進めるOpenLDAPの今 (1/3)

    BDB OpenLDAPで標準的に使用されるバックエンドデータベースであり、Berkeley DBを使ってデータを管理しています。BDBは内部的にBerkeley DBのトランザクション機能を使用しており、データの安全性が向上しています。また、データの復旧をはじめ、データを管理するにあたっては、Berkeley DBのユーティリティが利用されています。 HDB BDBを改良したバックエンドデータベースで、ディレクトリツリーの階層構造についての情報をデータベース内に持つことで、更新性能が向上しています。 LDBM OpenLDAPのバージョン2.0までの間、標準として使用されていたバックエンドデータベースです。LDBMはBerkeley DBまたはgdbmを利用してデータを管理しています。BDBのように、内部的なトランザクション機能を持っていないため、BDB、HDBと比較してデータの安全性は

    pateo
    pateo 2007/06/25
  • [ThinkIT] 第3回:MemoryとArchive (1/3)

    今回は、「Memory」と「Archive」の2つのストレージエンジンを取り上げます。Memoryエンジンは比較的古いMySQLのバージョンから提供されており、以前はHeapと呼ばれていたストレージエンジンです。もう一方のArchiveエンジンは、MySQL 4.1から提供されている比較的新しいエンジンです。 それでは、それぞれの特長やテーブルファイルの構成について解説します。 Memoryエンジンは、その名前の通りテーブルデータすべてをメモリ上にのみ格納します。これは、変更結果をディスク上に書き出さないことを意味します。変更データもメモリ上に存在しているため、アプリケーションからの問い合わせは、このメモリ上のデータに対して処理を行なって結果を返します。 ただし、MySQLサーバが終了するとテーブルデータが消滅してしまいますので、当然変更結果も消滅します。ここでいうMySQLサーバの終了と

    pateo
    pateo 2006/08/29
  • [ThinkIT] 第4回:データベースレプリケーション (1/4)

    第2回と第3回に渡り、サーバクラスタを使ってデータを分散配置し、全体として大きなデータベースを構築する方法について解説しました。今回は、サーバクラスタを使ってデータベースの二重化、三重化を行う方法について解説します。 データベース全体のコピーを作ったり、そのコピーのことをレプリケーションと呼びます。 データベースのテーブル設計をする上で「データの正規化」が重要だと聞いたことがある人は多いと思います。「データの正規化」で重要なことの1つに「同じデータは複数テーブルで重複させない」という考えがあります。 図1に示すように、「住所」を「顧客テーブル」と「注文テーブル」の2ヶ所に重複させておくと、お客様の住所を変更するアプリケーションは「すべて」「例外なく」この2つのテーブルの情報を「同じ」に保っておかなければならなくなります。

  • [ThinkIT] 第2回:データベースのスケールアウト(前半) (1/4)

    前回はシステム部品としてのデータベースの特徴、データベースの性能がどのようにして決まるか、なぜデータベースを単純に並べただけではスケールアウトできないのかを説明しました。今回は、データベースをスケールアウトさせるにはどうすればよいのかを解説します。 スケールアウトとは、何台もサーバを並べて全体で処理能力を上げる方法です。WebサーバやJavaのアプリケーションサーバの場合には、共有データが必要ない場合が多いので、単純にサーバを増やして、負荷分散装置(あるいはサーバと不可分散ソフトウェア)を使えばスケールアウトが可能でした。 一方データベースは質的に共有データを扱うソフトウェアなので、そうは簡単にはいきませんが、図1に示すように、2つの方法のスケールアウトが考えられます。

  • [ThinkIT] 第3回:データベースのスケールアウト(後半) (1/3)

    さてデータを分割すると、特定のサーバで膨大なデータを一手に読み書きする必要はなくなります。 一方、図1に示すように、このままではSQLの処理を行う際には、すべてのデータをいったんSQLの処理をするサーバに送らなければならなくなります。 これは通常、LAN(ローカルエリアネットワーク)を介して行われますが、この時の速度はサーバ内の磁気ディスクのデータ転送速度よりもかなり遅いのが現状で、単純にデータを蓄積しただけでは、かえって効率が低下する場合もあります。 そこで、SQLの処理の内部構造に着目してみます。この内部構造を非常に単純にモデル化したものを図2に示します。 SQLの処理は、SQLの構文を解釈する部分(パーサ)と、この構造を理解して処理手順を決める部分(プランナ)、そして実際に処理を行う部分(エグゼキュータ)に分けられます。 SQLの結果を受け取るデータはわずかでも、何百万何千万のレコー

  • [ThinkIT] 第1回:Webアプリケーションの多言語対応 (1/2)

    Webアプリケーションを多言語に対応させることはとても大変な仕事です。大抵の場合、この作業は倦厭され、多くのオープンソース・プロジェクトでは多言語化は実現されてきませんでした。しかし、オープンソース・プロジェクトのTODO リストを確認してみましょう。その中に、国際化に関する項目がリストアップされています。 この連載では、ごく少数のPHPファイルと通常のHTMLファイルを使うことで、コードを簡単に国際化する方法を紹介します。この方法を利用することで、素早く簡単にメンテナンスを行い、できる限りプラットフォームに依存せずにコードを実行することができるようになります。 実際に、国際化する方法を紹介する前に、要点を確認する必要があります。これらの要点を読めば、なぜ国際化やグローバル化を行う必要があるのかをより詳しく理解することができるでしょう。 グローバル化(Globalization)とは、g1

    pateo
    pateo 2006/06/21
  • [ThinkIT] 第1回:どっちが速いSeasar2 VS Spring (1/4)

    Seasar2が登場して2年が経ち、今では実際の開発でDIxAOPコンテナを使用することは珍しいことではなくなりました。 DIxAOPコンテナを導入するにあたって、他のDIxAOPコンテナとの速度比較やDIxAOPコンテナが行う処理の中でどこに時間がかかっているかについて評価されていることと思いますが、なかなかそのすべてを把握されていないのではないでしょうか。 そこで連載では、DIxAOPコンテナの生成やコンポーネント取得といったベーシックな機能についてパフォーマンスを測定して、以下にあげた点について明らかにしていきます。 DIxAOPコンテナ(Seasar2、Spring)の実装によって、どれくらいパフォーマンスが異なるのか DIxAOPコンテナが行う処理の中で、どこに時間がかかるのか また結果として速度が遅くなった箇所については、その原因を考察して実案件で役立てていただけましたらと思

    pateo
    pateo 2006/06/12
  • [ThinkIT] 第9回:PostgreSQL vs MySQL2つのDBMSを検証する(前編) (1/3)

    「オープン・ソース・ソフトウェア(OSS)を業務システムで使う」と聞いたときに、すでに、OSSを使ったことのあるユーザであれば、何も違和感を感じないだろう。ところが、今までWindowsしか使ったことのないエンジニアにとっては、まったく未知の世界だ。「無償で使えるソフトウェアを使えるわけがない」とか「製造元の技術支援が受けられないから使いたくない」と思うユーザもいるのではないだろうか(図1)。

    pateo
    pateo 2006/05/25
  • [ThinkIT] 第14回:LifeKeeperの管理 - ログの確認方法とSNMPの設定 (1/4)

  • 1