タグ

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

  • 非同期レプリケーション!

    Slony-Iとは 「第3回:レプリケーション&負荷分散!(http://www.thinkit.co.jp/article/98/3/)」は、pgpool-IIのレプリケーションと負荷分散の機能について紹介しました。今回は、非同期レプリケーションソフトのSlony-Iとpgpool-IIを組み合わせて使う方法を紹介します。 Slony-I(http://slony.info)とは、PostgreSQLのコアメンバの1人でもあるJan Wieck氏が開発したPostgreSQL用の非同期レプリケーションソフトです。 Slony-Iのレプリケーション方式は、シングルマスター/マルチスレーブと呼ばれ、1台のマスタノードと複数のスレーブノードで構成されます。 あらかじめレプリケーション対象のテーブルにトリガを設定しておき、マスタ上のテーブルに対して更新が行われた時、トリガにより更新されたデータの

  • pgpool-IIのインストール方法

    pgpoolとは pgpoolとはPostgreSQL専用のコネクションプーリングサーバーです。2004年にファーストバージョンがリリースされ、2006年にはパラレルクエリなどの新機能を実装したpgpool-IIが登場し、その後もオンラインリカバリーなどの新しい機能を次々と実装しながら進化を続けています。 最近では、非同期レプリケーションシステムとして人気の高いSlony-Iとの組み合わせや、PostgreSQL 8.2からの新機能であるwarm standbyとの組み合わせといった新しい活用方法も注目されています。 連載では、多様なpgpool-IIの活用方法の中から最もよく使われているコネクションプーリングとレプリケーションを中心に活用方法を解説します。 第1回はpgpool-IIの機能の簡単な紹介とインストール方法について解説します。 多機能ミドルウエアpgpool-II pgpo

  • コネクションプールで接続負荷を軽減!

    コネクションプールとは 「第1回:pgpool-IIのインストール方法(http://www.thinkit.co.jp/article/98/1/)」では、pgpool-IIとWebベースの管理ツールであるpgpoolAdminのインストール方法について解説しました。今回は、pgpool-IIの「コネクションプール」機能について解説します。 コネクションプールとは、クライアントからpgpool-IIへの接続が切断した時、pgpool-IIからPostgreSQL間の接続を保持し、後で新たにクライアントからの接続要求を受けた時に再利用することで、接続によるオーバーヘッドを軽減する機能です。 特にWebアプリケーションのようにデータベースに対する接続、切断を頻繁に繰り返すシステムにおいて、全体的にスループットを向上させることができます。 pgpool-IIのコネクションプールの特徴 コネクシ

  • レプリケーション&負荷分散!

    pgpool-IIのレプリケーション 「第2回:コネクションプールで接続負荷を軽減!(http://www.thinkit.co.jp/article/98/2/)」は、pgpool-IIのコネクションプール機能を使って、接続のオーバーヘッドを減らし、性能を向上させる方法について紹介しました。 今回は、レプリケーションと負荷分散について説明します。レプリケーションは可用性を、負荷分散は性能を向上させる機能です。もちろんこれらの機能は前回紹介したコネクションプール機能と組み合わせて使うことができます。 レプリケーションとは、文字通りデータの複製(レプリカ)を複数のPostgreSQL上に作成する機能です。いずれかのサーバーに障害が発生しても、複製したデータを使って直ちに別のサーバーでサービスを継続することができるため、可用性が向上します。 pgpool-IIのレプリケーションは、クライアント

  • [ThinkIT] 第4回:関数の拡張と配列操作メソッド一覧 (1/2)

    前回解説したオブジェクト指向はこのくらいにして、次は少し不思議な、関数オブジェクトを拡張する関数を紹介します。 bindメソッドは関数オブジェクトのメソッドです。このメソッドを使うとどのようなことができるのでしょうか。 JavaScriptでは非同期処理の結果をコールバックするために、関数オブジェクトを使うことが多々あります。しかし、関数オブジェクトは、実行するときにオブジェクトに格納された状態でなければthisを解決できません(「第2回:JavaScriptの復習」の「関数オブジェクト」の項を参照)。 例えば、リスト12のようにamachang.sayMyNameをsetTimeoutに渡した場合、渡されるのは関数オブジェクトだけで、amachangオブジェクトとは切り離されてしまいます。 リスト12:this.nameがundefinedになる ですので、thisを解決できません。その

    agw
    agw 2008/07/05
    EnumerableとArrayのメソッド一覧(2ページ目).
  • [ThinkIT] 第3回:Prototype.js流のオブジェクト指向を理解する (1/2)

    さあ、ここから題のPrototype.jsです。記事では、Prototype.jsの機能の中でも、代表的な「オブジェクト指向の機能」「関数を拡張する機能」「配列の操作を拡張する機能」「DOMの操作に関する機能」について紹介いたします。 そして、最終的にはひとつの実用的なクラスを作ります。Prototype.jsをより使いこなすということを重視し、あまり使われない機能などは紹介しないこととします。 Prototype.jsのもっとも重要な機能は、オブジェクト指向に関連する機能です。「はじめに」でも述べたように、統一された方法でオブジェクト指向を書けるということが、オブジェクトの保守性を非常に良くしてくれるのです。 Prototype.jsでは、オブジェクト指向の代表的な機能として「クラス」と「継承」を提供しています。

    agw
    agw 2008/07/04
    Object.extendによるオプションの初期化例。
  • [ThinkIT] 第5回:ベンチマーク試験による処理性能比較 (1/4)

    今回は、PostgreSQLMySQLを使用して比較的小規模なベンチマーク試験を行い、その試験内容と結果について解説します。今回試験に使用したバージョンは、PostgreSQL 8.1.3とMySQL 5.0.18です。なおMySQLについては、MyISAMエンジンとInnoDBエンジンそれぞれについて試験を実施しました。

  • [ThinkIT] 第6回:PostgreSQLとMySQLの特長とは (1/3)

    5回に渡って解説してきた連載も今回が最終回です。そこで今回は、今までの内容をもう1度復習してみたいと思います。 また最後に非常に簡単ですが、MySQLの将来バージョンについて紹介します。

  • Gaucheで超高生産性Webアプリ!

    ドライバのインストール さて、前回までで、Gaucheによる簡単なプログラミングについて解説してきました。今回から2回にわたって、GaucheによるWebアプリケーションの作成について解説していきます。 はじめに、前回インストールしたSQLite3用データベースドライバですが、第3回専用のドライバとなっております。今回の記事用に修正を加えた最新ドライバを作成しましたので、再インストールしてください(ダウンロードファイル7441.zip/32.4 KB)。インストール手順は前回と同じとなります。また、今回のソースコードもダウンロードが可能です(7442.zip/816 B)。 今回は、生産性を上げるためのテンプレートを紹介し、テンプレートで使われている関数とマクロについて解説していきます。 テンプレートエンジン さて、前回のWebアプリケーションでは、HTMLをプログラムの中で組み立てていま

    agw
    agw 2008/06/23
    {Scheme][Lisp][Programming]
  • [Think IT] 第3回:簡単Webプログラミング! (1/3)

    SQLite3インストール! Gaucheは、RDB(リレーショナルデータベース)に依存しないデータベースインタフェース(dbi)モジュールを持っています。各RDB用にデータベースドライバ(dbd)モジュールを用意することで、GaucheからRDBを扱えます、現在、MySQL、PostgreSQLSQLite3などのデータベースドライバモジュールがあります。 今回使うSQLite(http://www.sqlite.org/)は組み込み型RDBで、サーバ管理などが不要なため、扱いやすいのが特徴です。 Linuxでは、パッケージ管理ソフト(apt、yum、rpmなど)でインストールするのが良いでしょう。Mac OS/XにはSQLite3がプリインストールされてます。 Windows(cygwin)では、第1回でGaucheをインストールしたcygwinインストーラーを使ってインストールでき

  • [Think IT] 第1回:JSONってなにもの? (1/3)

    JSONとは何か? JSONとはJavaScript Object Notationの略で、XMLなどと同様のテキストベースのデータフォーマットです。 その名前の由来の通りJSONはJavaScriptのオブジェクト表記構文のサブセットとなっており、XMLと比べると簡潔に構造化されたデータを記述することができるため、記述が容易で人間が理解しやすいデータフォーマットと言えます。 なお、JSONは2006年に「RFC 4627(http://www.rfc-editor.org/rfc/rfc4627.txt)」として公開されています。 例としてXMLとJSONで同じデータを記述したものをリスト1とリスト2に示します(図1)。 リスト1のXMLではすべての情報をタグで囲んだテキストノードとして記述していますが、XMLでデータを表現する場合、データの記述方法として属性とテキストノードの使い分けが

  • 超!Gauche入門

    簡単なプログラムを書いてみよう! Gauche(Lisp/Scheme)はとてもシンプルなプログラミング言語です。まずは乱数を使いジャンケンの手(Guu、Choki、Pa)を表示するプログラムを書いてみましょう。リスト1は比較ためにJavaで同じプログラムを書いたものです。リスト2がGaucheのプログラムです。 Gaucheの文法 まずは、Gaucheのプログラムの文法を簡単に説明していきましょう。 数値0.33や文字列"Guu"はJavaと同じくリテラルです。()で括られたものは式で、カッコの中の最初の要素は関数名、それ以外は関数への引数になります。 ( また、;からはじまる行はコメントになります。ではリスト2のプログラムについて上から解説していきましょう。 2行目はsrfi-27という乱数のライブラリを読み込んでいます。4~7行目はguu-choki-paという名前の関数を定義してい

  • Gaucheをはじめてみませんか?

    Gaucheとは 連載では、今注目のプログラミング言語「Gauche」について解説しながら、簡単なWebアプリを作っていきます。Gaucheとは、ハワイ在住の日ハッカー「川合 史朗」さんが作ったLispの一種である、Schemeの処理系です。オープンソースで開発されています。 Gaucheの特徴は、Perlのように気軽に使える軽い処理系でありながら、正規表現、CommonLisp風オブジェクトシステムなど、Scheme標準にはない拡張機能や豊富なライブラリを持ち、実用的なプログラミングが行える点です。 最近「Gauche」に関するも出版され、「第4回:都内大手3書店の3月ベスト3発表!(http://www.thinkit.co.jp/article/49/4/2.html)」でも紹介されているように売れ行きも好評です。それは、なぜでしょうか? 筆者はLisp、特にSchemeの持

  • [ThinkIT] 第2回:Subversionによるバージョン管理(前編) (1/3)

    今回は、Subversionによるバージョン管理方法とウノウでの導入事例について前編と後編にわけて紹介していきます。 Subversionとは、無償で利用できるバージョン管理システムです。現在もオープンソースで活発に開発が進んでおり、執筆時点の最新バージョンは1.4.2となります。バージョン管理システムとは、ソースコードや仕様書などを含むドキュメントなど、時間とともに内容が変化するファイルを管理するシステムの総称です。 Subversionと同じようなバージョン管理システムとしては、CVS(Concurrent Version System)が有名ですが、SubversionではこのCVSで使いにくかった点を改良した次世代バージョン管理システムというコンセプトで開発が続けらています。筆者が実際にどちらも利用してみた結論として、導入をおすすめするバージョン管理システムは、やはり「Subver

  • [ThinkIT] 第3回:リファレンスを狙うVirtual Machine Manager (1/3)

    まず、Virtual Machine Managerの開発Webサイトのトップページにある機能紹介を引用して、Virtual Machine Managerがどのようなものか見てみましょう。なお、翻訳は意訳です。 ——The "Virtual Machine Manager" (virt-manager for short package name) is a desktop application for managing virtual machines. Virtual Machine Managerは仮想マシンを管理するためのデスクトップアプリケーションです(Webアプリケーション型の管理ツールではないということですね)。 It presents a summary view of running domains and their live performance & resou

    agw
    agw 2007/12/05
  • [ThinkIT] 第1回:仮想マシンとサーバ仮想化について (1/3)

    サーバ仮想化は数年前までエンタープライズサーバでしか実現できなかった機能です。近年、IAサーバを使ったサーバ仮想化が注目を浴びています。テクノロジーの進化により安価なサーバでも仮想化が行えるようになったためです。 テクノロジーの進化によりインフラは整いました。しかしながら、サーバ仮想化に対応できる技術者の数は不足しています。仮想サーバを使うだけならば簡単ですが、いざ構築となると仮想化の考え方を理解している必要があります。 そこでまず今回は、仮想マシンとサーバ仮想化について解説します。 まず仮想マシンとは何でしょうか。仮想マシンとは仮想化技術によって物理的なコンピュータを分割し、その中で独立したOSを持って動作する論理的なコンピュータのことをいいます。簡単にいえば1台のコンピュータで2台以上のOSを動かすことです(図1)。

    agw
    agw 2007/12/05
  • [ThinkIT] 第3回:管理OSの構築方法 (1/3)

    これまで連載では、仮想マシンやサーバ仮想化についてXenを例に解説してきました。第3回の今回は実際に自宅で試せる仮想サーバインフラ「Xen」のインストール手順を解説します。 今回はXenの導入から、実際にDomain-0(管理OS)が稼働するまでの手順を説明します。Xenのインストール自体は非常に簡単で、RPMパッケージを1つ導入するだけで完了してしまいます。 なお、作業はすべて特権ユーザ「root」にて行います。 Xen環境には、Xenを管理するためのOS「Domain-0」が1つ必要です。XenではこのDomain-0がシステム全体のディスク管理やネットワーク管理を行います。 Domain-0はホストOSではなく、ドメイン番号0で動作する管理OSです。Domain-0はゲストOSであるDomain-Uと同じレイヤーで動作します。 今回、Domain-0にはFedora Core 4を

    agw
    agw 2007/12/05
  • [ThinkIT] 第2回:Xenでわかる仮想マシンソフトウェア (1/3)

    Xenはハイパーバイザータイプの仮想マシンソフトウェアです。さらに細かくいうとPara-virtualizing Virtual Machine Monitor(日語だと疑似仮想化仮想マシンモニター)という種類に属します。 今、オープンソースソフトウェア業界で多くのベンダーから支持を得ている仮想マシンソフトウェアです。 今回はXenを用いて、ハイパーバイザータイプの仮想マシンソフトウェアの機能を紹介します。 Xenはイギリスケンブリッジ大学の研究プロジェクトから生まれました。Xenのソースコードはアメリカのカリフォルニア州パロアルトにあるXenSource社という企業が管理しています。しかし、開発はオープンソースコミュニティ主導で行われています。

    agw
    agw 2007/12/05
  • [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と比較してデータの安全性は

  • [ThinkIT] 第2回:OpenLDAPでLDAP Syncレプリケーション! (2/4)

    今回はバックエンドデータベースとして、OpenLDAPで標準的に使用されている「BDB」を選択します。BDBバックエンドの設定は「/usr/local/etc/openldap/slapd.conf」で行い、次のように記述します。なお設定項目の詳細については、表2を参照してください。 include   /usr/local/etc/openldap/schema/core.schema include   /usr/local/etc/openldap/schema/cosine.schema include   /usr/local/etc/openldap/schema/inetorgperson.schema pidfile   /usr/local/var/run/slapd.pid argsfile   /usr/local/var/run/slapd.args sizelim