March 2024  |  01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Raspbery Pi3 でpgbench、mysqlbench との比較

JUGEMテーマ:コンピュータ

 

今日は、体育の日ということで、今年5月のGW頃やってみたRaspberryPi3でのpostgresqlとmysqlのベンチマークを思い出した。

 

Raspberry Pi3でpostgresql のベンチマークをしてみると、Pi2とは全く違う結果が出てきたので、MySQLと比較してみた。

Raspberry Pi2までのベンチマークで、うまく説明ができないような結果の違いに釈然としないものを感じたままだった。

普段使っているIntel系アーキテクチャでのベンチマーク結果ではそんなに違わないのになぜRaspberry Piでは大きく違うのだろうか。メモリーサイズなのか、アーキテクチャなのかと。今回のベンチマークの結果、デフォルトのエンジンの特性が違っていたようだ。


 

» read more

CentOS6にCINT(ROOT)のインストール

JUGEMテーマ:コンピュータ

昨日のメモの続き、実のところこちらが本来の目的で、昨日のはその準備とういうところ。
自宅のファンレスのしょぼいサーバのCPUでは、2日にわけてコンパイルしてちょうど良い感じでもある。
ちなみに、インストールをしたサーバマシンはShuttle DS47、CPUはCeleron 847
アプリ開発の作業には十分な性能だと信じてる。なにより、デュアルポートの低消費電力サーバとしてはありがたいマシンである。

さておき、ROOTのインストールをやってみた。ROOTのソーツリーはgitリポジトリからコピーできる。
$ git clone http://root.cern.ch/git/root.git
あとは、そのソースディレクトリで、メイクするだけ。
$ cd root/
$ make
としたいところだが、コンパイラは昨日インストールしたGCC11を使うので、インストールしたディレクトリのパス( /usr/local 下)の設定をする。
$  echo $PATH
で、/usr/local/bin が含まれることを確認し、
$  which gcc
/usr/local/bin/gcc
がコンパイルに使われることを確認する。また、昨日のメモのインストールの結果、コンパイラのライブラリのパスが/usr/local/lib64にインストールされているのでそこへのパスがLD_LIBRARY_PATH環境変数に含まれることを確認しなければ、設定する。
$ export LD_LIBRARY_PATH=/usr/local/lib64:/usr/local/lib
$ echo $LD_LIBRARY_PATH 
さて、準備が整ったらメイクをする。
$ make
が、途中オブジェクトがないと言われるわけで、その都度、オブジェクトを指定してメイクして、また、メイク。
$ make
$ make core/metautils/src/RConversionRuleParser.o
$ make
$ make core/metautils/src/TClassEdit.o
$ make
        ...
そして、また、一休みして戻ると、うれしいメッセージが現れた。
   ============================================================
   ===                ROOT BUILD SUCCESSFUL.                ===
   === Run 'source bin/thisroot.[c]sh' before starting ROOT ===
   ============================================================
最後に、CINTを実行してみるには、その場所で、次のスクリプトを実行する。
$ . bin/thisroot.sh
あとは、好きに試してみる。
$ ./bin/root
*** DISPLAY not set, setting it to 192.168.1.27:0.0
PopupLogo, XOpenDisplay failed
  *******************************************
  *                                         *
  *        W E L C O M E  to  R O O T       *
  *                                         *
  *   Version   5.99/06      3 April 2014   *
  *                                         *
  *  You are welcome to visit our web site  *
  *          http://root.cern.ch            *
  *                                         *
  * !!! THIS IS A PREPRODUCTION VERSION !!! *
  * Please use 5.34 for any real work until *
  * ROOT 6 is released.                     *
  *                                         *
  *******************************************

ROOT 5.99/06 (heads/master@v5-99-06-340-gbd503dc,  5¥u6708 07 2014, 20:33:48 on linuxx8664gcc)
cling C/C++ Interpreter: type .? for help.
root [0] 

 

CentOS6にC11(GCC)のインストール

JUGEMテーマ:コンピュータ

数年ぶりに、ある知り合いからメールが来た。
C言語の判定文の内容(式)をスクリプト言語のようにリアルタイムで変られないかというような内容だった。
大抵のスクリプト言語を使うと eval()関数を使うことでアドホックな判定分を実装することができるのだけど、
コンパイル言語では、コンパイルとダイナミックロードというのが、一般的なソリューションとなる。
結局そこまでする気はないということだったので、その話はそれでおしまい。

後日談になるけど、CINTというC++言語のインタープリターをご記憶の方もいると思う。CERN(セルン:ヨーロッパ合同原子核研究機関)で開発されていた
調べてみると、CINTはROOTというシステムのインタープリタとして現在もCERNで開発が続いていた。
http://root.cern.ch/drupal/content/cint
※個人的にはDrupalをCMSに使っていたことにも驚いた。

少し古いけど日本語のドキュメントも見つかった。
http://www.dw-sapporo.co.jp/technology/root_cint_dw_documents/root_cint_dw_documents

では、ダウンロードしてインストールしようと思ったのだが。OSはCentOS 6.x。 しかし、C11 準拠の
コンパイラが必要ということでコンパイルできなかった。そこで、C11なるコンパイラをインストール
しなくてはというわけで、C11準拠らしい GCC 4.9 をインストールすることにした。GCC 4.9 をインストール
するには、SVNリポジトリからソースツリーをコピーする必要があるし、そのほか、ライブラリがいくつか
(GMPとMPFRとMPC)と、flex(lex)およびbison(yacc)というツールがエラーメッセージ出たので、
したがってインストールした。
 
# yum install subversion
# yum install gmp-devel
# yum install mpfr-devel
# yum install libmpc
# yum install libmpc-devel
# yum install bison
# yum install flex

そうして、GCC 4.9 をsvnリポジトリからチェックアウトしてインストールする手順は次のとおり。
 
# svn co svn://gcc.gnu.org/svn/gcc/tags/gcc_4_9_0_release gcc
# cd gcc
# ./configure --disable-multilib
# make distclean
# make -i
# make -i install

ここでは、gcc, g++が正しくできることが目的なので、maikeがドキュメント生成のあたりで止まるのを -i オプションを加えて強制的にインストールをした。

注)上記の作業はいずれも、rootアカウントにて作業することを前提で書いている。

とりあえず、ここで一休み。
 

CentOS6にPostgreSQL Studioを入れてみた

JUGEMテーマ:コンピュータ
JUGEMテーマ:インターネット
PostgreSQL Studio は、オープンソースソフトウェアとして公開されていて、Webサービスとして利用可能なDBオブジェクトブラウザ。
http://www.postgresqlstudio.org/

機能としては、以下のバージョンのPostgreSQLに対応していて、
  • PostgreSQL 9.2.x
  • PostgreSQL 9.3.x
  • Postgres-XC 1.0.x
  • Postgres-XC 1.1.x
  • vFabric Postgres 9.2.4
Javaアプリケーションサーバがインストールされていれば、以下のO/Sで稼働する。
  • Windows
  • Linux
  • Mac
  • Unix
対応しているアプリケーションサーバは次のとおり。
  • Tomcat
  • Jetty
  • JBoss
  • GlassFish
  • など…
特徴としては、WebブラウザからHTTP/S接続ができて、5432ポートをブロックするファイアウォールの内側のPostgreSQLに、外部から安全にアクセスすることが可能。
そして、スキーマの表示や定義、問い合わせの実行などができる。。。詳しくはPostgreSQL Studioのサイトをご覧あれ。

さて、インストールの仕方だけど、CentOS6に Tomcat6を入れて、WARファイルをデプロイ(アップロードするだけ)してみた。
JDK 1.6 あるいは、JDK 1.7に対応しているそうなので、まずは、OpenJDK 1.7を入れてみた。
 
======================================
1. JDK 1.7 と Tomcat6のインストール
======================================
参照: http://kajuhome.com/tomcat6.shtml

(1.) Java 1.7 OpenJDKのインストール
# yum -y install java-1.7.0-openjdk
(2.) Tomcat6 とWebAppsのインストール
# yum -y install tomcat6 tomcat6-webapps tomcat6-admin-webapps
(3.) Tomcat6の起動設定
# chkconfig tomcat6 on
# chkconfig tomcat6 --list
tomcat6         0:off   1:off   2:on    3:on    4:on    5:on    6:off
# /etc/init.d/tomcat6 restart

======================================
2. PostgreSQL Studioのデプロイ
======================================
(1.) PgStudioの warファイルをダウンロード 

pgstudio_1.0.tar.bz2 を次のサイトからダウンロードする:
http://www.postgresqlstudio.org/download/
そして、展開する。
# tar xvfj pgstudio_1.0.tar.bz2 
pgstudio.war
# ls -l pgstudio.war 
-rw-r--r-- 1 root root 21198588  9月 27 04:50 2013 pgstudio.war

(2.) pgstudio.warをデプロイする

デプロイといっても、アップロードするだけで終わり。
Tomcat managerにアクセスして:
http://ドメイン名:8080/manager/html

i) "WAR file to deploy" の部分までスクロールして、
ii) ファイルチューザで"pgadmin.war" ファイルを選択し、
iii) [Deploy it]ボタンを押す。

(3.) pgstudioにアクセスしてみる。
アプリケーションリストからリンクをクリックしてもよし。直接入力する場合は、次のURLになる。
http://ドメイン名:8080/pgstudio/


(4.) 日本語化

ログイン画面のラベルは次のように変更できた。
# cd /var/lib/tomcat6/webapps/pgstudio
# cp -p PgStudio.jsp PgStudio.jsp.bak
# cp  PgStudio.jsp.bak PgStudio.jsp
# vi  PgStudio.jsp
# diff PgStudio.jsp.bak  PgStudio.jsp
42c42
<       <h3>Connect</h3>
---
>       <h3>接続</h3>
51c51
<         <div class="msg-error">Error: <%= err_msg %></div>
---
>         <div class="msg-error">エラー: <%= err_msg %></div>
59c59
<                     <label class="connectlabel " for="id_db_host">Database Host</label>
---
>                     <label class="connectlabel " for="id_db_host">DBホスト</label>
66c66
<                     <label class="connectlabel" for="id_db_port">Database Port</label>
---
>                     <label class="connectlabel" for="id_db_port">DBポート</label>
73c73
<                     <label class="connectlabel" for="id_db_name">Database Name</label>
---
>                     <label class="connectlabel" for="id_db_name">データベース名</label>
80c80
<                     <label class="connectlabel" for="id_user_name">Username</label>
---
>                     <label class="connectlabel" for="id_user_name">ユーザ名</label>
87c87
<                     <label class="connectlabel" for="id_password">Password</label>
---
>                     <label class="connectlabel" for="id_password">パスワード</label>
145c145
<           <span id="loadingMsg">Loading styles and images...</span><br/>
---
>           <span id="loadingMsg">スタイルとイメージを読み込み中...</span><br/>
# pwd
/var/lib/tomcat6/webapps/pgstudio
アプリ自体のラベルの日本語化はソースコードを変更する必要がありそう。たとえば、"Foreign Tables" というラベルがソースコードの MenuStackPanel.java にあるが、次のようにハードコードされている。

> ./src/com/openscg/pgstudio/client/panels/navigation/MenuStackPanel.java:                panel.add(ftables, TextFormat.getHeaderString("Foreign Tables", Images.foreignTables()), true);

ま、ラベルを日本語にしなくても、使えるので大丈夫。
pgstudio login

スキーマ名、テーブル名、カラム名などを日本語にしても大丈夫。

※難点として、IEを使ってると表示がずれる。


SunによるMySQLの買収

JUGEMテーマ:インターネット


http://www.sun.com/aboutsun/pr/2008-01/sunflash.20080116.1.xml

Sun Microsystems, Inc.によるMySQL A.B.の買収が発表された。キャッシュで8億ドル、2008年の第三、四四半期までに完了の予定で、総額で10億ドルを見込んでいる。

MySQLというと世界で最も人気のあるオープンソースデータベースとして有名で、MySQL商用ライセンスの商用版とGPLによるコミュニティ版のデュアルライセンスで、オープンソース開発モデルの成功例でもある。また、SQLのサーバとデータベースエンジンを切り離し、オープンソースの簡易DB以外に、買収によってMyISAMやNDBなど名だたる商用のDBMSをバックエンドのデータベースエンジンにアレンジしてきたことでも有名である。
MySQLはWebサービスプラットホームのバックエンドDB(いわゆるLAMPのM)としてシェアを伸ばしてきたが、トランザクションをサポートするInnoDBにより業務系での利用も期待されつつあった。
しかし、一昨年に主要DBエンジンとしていたInnoDBの開発元のInnobase, Inc.がOracle, Inc. により買収され、Falconという新しいDBエンジンの開発という選択を余儀なくされた。昨年は、MySQLの配布を商用のエンタープライズ版とオープンソースのコミュニティ版とに明確にわけ、差別化をはかったところであった。もしかすると、オープンソース版を利用していた企業ユーザに客離れがあったのであろうか。

Oracleはオープンソースでは絶対的なシェアを持つ組み込み型のBerkeleyDBの開発元(Sleepycat, Inc)も買収し、Linuxディストリビューションを含め、オープンソースインフラ開発の支援活動も行っている。
http://www.oracle.com/lang/jp/technologies/open-source/index.html


昨年、2回ほど日本で開かれたMySQLのカンファレンスに参加したが、国内の大手企業がMySQLを含めた業務系のシステムあるいはそのサポートを商品化していたのに対し、MySQL A.B.の開発者は、innodb の開発ではあくまでも高速で高機能を目指し、業務系では絶対的なシェアを誇るOracleとの互換には興味はないということだった。勢いにのるベンダーと息切れを感じる開発元のようなちぐはぐな雰囲気を感じていた。

Sun Microsystemsは、ここ数年BSDライセンスという最も柔軟なオープンソースライセンスで開発しているPostgreSQLの支援も、OpenSolaris上で行っていて、Oracle互換の商用DBMSであるEnterpriseDBとの関係も良好に見えたので、まさに驚きであった。しかし、今回の買収により、Falconの開発が加速されるだけでなく、MySQLのライセンスが変更され、PostgreSQLバックエンドをデータベースエンジンとして活用することが可能となったり、オープンソースのDBMSの魅力をさらにMySQLへ加えてくれるのではないかとひそかに期待をしている。

12345>|next>>
pagetop