NDB APIの実行環境
NDB APIの実行はSQLノードのmysqldと同じ位置づけとなる。
そのため、mgmサーバのconfig.iniにAPI実行用のノードを登録する必要がある。
ndb_mgmd config.ini
[ndb_mgmd] hostname=localhost datadir=/Users/sugino/my_cluster/ndb_data [ndbd default] datadir=/Users/sugino/my_cluster/ndb_data NoOfReplicas=1 [ndbd] hostname=localhost [mysqld] hostname=localhost [mysqld] hostname=localhost NodeId=10
MySQL Cluster NDB APIのコンパイル環境
mysqlクラスタでは、mysqldを介さず直接ストレージエンジンNDBにアクセス可能なAPIが用意されている。一応、このネイティブインタフェースにより、マイクロミリ秒レベルのレイテンシーを実現とのことなので、本当かどうか調べてみようと思う。
開発言語がC++の場合は、ストレージエンジンNDBへ直接アクセスするNDB API、
およびNDBマネージメントサーバにアクセスするMDB APIを使用する。
開発言語がJavaの場合は、ClusterJ/ClusterJPAが用意されている。
とりあえず、MySQLクラスタのソースツリーに含まれる以下のサンプルソースを使用して、
MAC上でNDB APIのコンパイル環境を作成する。
$MYSQL_SRCHOME/storage/ndb/ndbapi-examples
手順はこのページを参考にした。
Chapter 2. The NDB API
cp -R $MYSQL_SRCHOME/storage/ndb/ndbapi-examples ~/src/mysqlapi cd ~/src/mysqlapi/ndbapi-examples/ndbapi_simple
- acinclude.m4を作成する。
AC_DEFUN([WITH_MYSQL], [ AC_MSG_CHECKING(for mysql_config executable) AC_ARG_WITH(mysql, [ --with-mysql=PATH path to mysql_config binary or mysql prefix dir], [ if test -x $withval -a -f $withval then MYSQL_CONFIG=$withval elif test -x $withval/bin/mysql_config -a -f $withval/bin/mysql_config then MYSQL_CONFIG=$withval/bin/mysql_config fi ], [ if test -x /usr/local/mysql/bin/mysql_config -a -f /usr/local/mysql/bin/mysql_config then MYSQL_CONFIG=/usr/local/mysql/bin/mysql_config elif test -x /usr/bin/mysql_config -a -f /usr/bin/mysql_config then MYSQL_CONFIG=/usr/bin/mysql_config fi ]) if test "x$MYSQL_CONFIG" = "x" then AC_MSG_RESULT(not found) exit 3 else AC_PROG_CC AC_PROG_CXX # add regular MySQL C flags ADDFLAGS=`$MYSQL_CONFIG --cflags` # add NDB API specific C flags IBASE=`$MYSQL_CONFIG --include` ADDFLAGS="$ADDFLAGS $IBASE/storage/ndb" ADDFLAGS="$ADDFLAGS $IBASE/storage/ndb/ndbapi" ADDFLAGS="$ADDFLAGS $IBASE/storage/ndb/mgmapi" CFLAGS="$CFLAGS $ADDFLAGS" CXXFLAGS="$CXXFLAGS $ADDFLAGS" #LDFLAGS="$LDFLAGS "`$MYSQL_CONFIG --libs_r`" -lndbclient -lmystrings -lmysys" #LDFLAGS="$LDFLAGS "`$MYSQL_CONFIG --libs_r`" -lndbclient -lmystrings" LDFLAGS="$LDFLAGS "`$MYSQL_CONFIG --libs_r`" -lndbclient " LDFLAGS="$LDFLAGS "`$MYSQL_CONFIG --libs_r`" -lndbclient " AC_MSG_RESULT($MYSQL_CONFIG) fi ])
- confgure.in
AC_INIT(example, 1.0) AM_INIT_AUTOMAKE(example, 1.0) WITH_MYSQL() AC_OUTPUT(Makefile)
- Makefile.am
bin_PROGRAMS = example example_SOURCES = ndbapi_simple.cpp -
- 以下のコマンドを実行
touch NEWS README AUTHORS ChangeLog aclocal autoconf automake -a -c configure --with-mysql=$MYSQL_HOME
- Makefileが生成され、makeを実行する
make
- 実行する
./exmaple
- エラーが出る。
dyld: Library not loaded: libmysqlclient.18.dylib Referenced from: /Users/sugino/src/mysqlapi/ndbapi-examples/ndbapi_simple/./example Reason: image not found Trace/BPT trap: 5
- .bash_profileのライブラリパスに以下を追加して解決
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/
MySQL Clusterインストール
MacOSにMySQL Clusterをインストールする。
基本的にはLinuxのソースコンパイルによるインストールと同様の手順となる。
- ソースをMySQL :: Download MySQL Clusterよりダウンロードする。Platformは「source code」を選択し、表示される中より「Generic Linux (Architecture Independent), Compressed TAR Archive」をダウンロードする。
- 適当なディレクトリで解凍する。
- コンパイルにはcmakeが必要となる。MacPortよりインストールする。
sudo port install cmake
sudo cmake . sudo make sudo make install
IE9の過去のバージョンの互換モードで動作させるJavaScriptでも挙動が変わるものがある
MSDN Internet Explorer 9 Compatibility Cookbookより参照
IE8のドキュメント互換モードについて
- IE8以降では、HTMLのメタタグを使用して互換モードを任意に指定することが可能。
<meta http-equiv="X-UA-Compatible" content="IE=IE5" >
- IE6のQuirksモードのページはIE5を指定する
- その他、ドキュメント互換モードの判定には様々な要素が絡む。How IE8 Determines Document Mode – IEBlogのフローチャートが役に立つ
Defining document compatibility (Internet Explorer) | Microsoft Docs
2010 – IEBlog
IE6のドキュメント互換モードについて
- デフォルトは"Quirks モード" で、IE6以前のバージョンのと同じように見えていた
- IE6では標準モードも用意されており、 ディレクティブが含まれていれば標準モードで動作した
- 大抵の(IEに特化した)業務アプリ系は、Quirksモードで動作していると思われる。