sybaseのjdbc接続設定

Sybase Jconnectionのインストール

サイベースのクライアントをインストールすると
C:\sybaseができて、その配下にjconnect-6.0が生成される。

driverclassの下に2つのjarファイルができるので、これを
CLASSファイルに追加する。

URLには

jdbc:sybase:Tds::

を指定することにより動作する。

TdsのTは大文字にしないとドライバーのロードエラーとなる。

Sybaseなんかとっても変だよね。こんなことだからマイナーになるのかな?

oracle ooherence aggregagte の 考え方に関して

分散集計に関して

恥ずかしながら、勘違いをしていました。集計キーごとにノードを分かれて分散しているとcoherenceは早くなるのではと思っていました。集計キー毎にネームドキャッシュを展開するのであろうと思っていたのですが違いました。
集計キーが各ノードで分散していないといけないのだと、集計単位がどのようになるのか集計を発行して、その結果で検索して、group by, sumなんてことと同じことをするんだなと深く理解しました。

集計は考えないと遅い

集計単位の検索結果の内部ループがその単位での集計検索になります。つまり、集計キーで分散していると一回の検索で有効の働くノードはひとつになります。集計単位と関係ないキーにより分散すると内部ループによる検索が全ノードに分散しますので外部ループが分散が利いて内部ループも分散が利くようになります。でも、当たるも八卦あたざるも八卦の世界になってきますよね。

でももう少し、検討が必要な内部設計のようなきがしますね。実際の使いがってなど他の人がどのように考えるのか、興味があります。

6月に入り、体の調子が最悪になるように思っています。ちょっと体が黴臭いですね。
おやすみなさい。。。。

OTN Virtual Developer Day

3日間のDeveloper Dayが終わろうとしています。

米国東海岸時間で5月27日の朝から始まり、29日の夕刻までmamazoneのAWSの環境でHands onができるようになっていました。こんな機会でもないとAWSを使うことがなかったような気がしますのでいい経験になりました。Oracleクラウド展開がわかっても、実際にインストールして見ることなんか実際にはないですからね。

無料ではなかったのかよ

4月の時点では、無料でAWSが期間中に使えるような発表がありましたが、今回は3日間で35ドルの徴収がありました。29日の夕刻までに環境を削除しないと追加料金が掛かるととの警告が出ています。日本では土曜日の未明まで使えるのですが、寝込んでしまうと追加料金が掛かるので、早めに環境の消去をします。

使用したAWSの環境

Largeと呼ばれている4コア分のCPUで7.5GBのメモリに70GB(EBSが50GB)ディスクの環境が今回のターゲットでした。Oracle World TokyoでのHands onは一コマ一時間で3GBのメモリのノートパソコンで時間的にもきつい状態でしたので今回は非常によかったと感じています。Oracle Database + Weblogic Server + Jdeveloper 11gの組み合わせだと、とてもノートパソコンで快適に動かすことができるのものではないですよね。
ただ、標準的な環境がputtySSHで繋ぎ、vncSSHトンネルでつないで、vncJdevelopereclipseを動作させるようになっていました。確かに Hands onの環境がAmiになっていて、トラブルがないことは十分にわかっていますし。これだとatomの携帯PCでも同じように動くのでいいのかも知れませんが、ちょっとレスポンスが辛いですね。私も始めはトンネルで使っていましたが、直にVNCが繋げる環境に避難してしました。SSHトンネルでSVNを使うのはオンラインでないので余り気にならないのですが、オンラインは結構辛いですね。やっぱり色を極端に落とす必要があるのかも知れませんでしたが、それともやっぱり地球の裏側のデータセンターのマシンに開発ツールを載せて動かすこと自身に問題があるのかも知れませんね。

SIerに与える影響

インフラ系のSIerにとっては、非常な脅威ですね。Iaasの環境へのインストールは、大規模環境だと一ヶ月以上の時間が掛かっていましたし、中規模のECサイトの環境でも数日でできることはなかったですから、実際やってみて、負荷分散+WEBサーバ数台+Appサーバ数台+DBサーバの組み合わせだと本当に数日でお釣りくる感じですね。OracleDBもWeblogicサーバも自律的にチューニングが利くようになってきましたので、標準的なAMIの適用で十分な環境が用意されると判断していいと思います。仮想化サーバの切り売りだけのデータセンターでマシンを借りると今までと同じように本番環境の設定に多額の費用が掛かることから抜け出せないですからね。

来年のoracle world tokyo

来年のdeveloper カンファレンスのhands onは、AWSを使った環境の使用料を含んだ形でしてくれるといいですね。落ち着いてできるのでいい感じですよね。

料金の考察

使用した課金根拠データがXMLCSVで落ちるので果たして35ドルのパックの値段設定が安いのか高いのかを来週になったら計算してみたいと思います。

日本語のMIX

日本語の情報交換の場所がなかったので、どのくらいの日本人が参加したのか不明でちょっと残念です。結局質問事項は英語にならざるを得ないのはわかりますが。。ちょっと疎外感。。。

amazone aws 環境での sybase 開発環境

amazon AWS上での sybase開発環境版のバイナリが用意されている。制限としては、1Cpu限定で25コネクションが最大である制限がある。しかしながら、JDBCを使った場合には、コネクションプールで今トールするので、実際に100人の開発者がいても十分な環境であると言える。

http://www.sybase.com/detail?id=1037407

契約内容では、基本的にサポートはない状態になっているが本番システムでの契約があれば基本的に問題はないが、このバイナリWindows版であるので本番ターゲットがWindowsでない場合には、Windowsに依存した障害が発生した場合には、何かしら逃げてを考える必要がありそう。
それで、AWS EC2の料金体系は次のようになっている

http://aws.amazon.com/ec2/#pricing

安いと言えば安い、そうなんだな。でもSLAが99.95%なんで少し不安であることは確かですね。
インスタンスは使うときにしか上げないのでいいのですが、サーバイメージファイルは、残るので1GB単位に課金がされてしますのがちょっと、年間契約でsmallを借りて、サーバイメージをそのサーバに入れるができればお得な状態になりますよね。

Google App Engine for JAVAのアップロードの続き(3)

Googleへのアップロードは、やはり時間の問題でした。昨日more informationのメールが来ていて、配置をしてみたら動きました。ちょっと時間が掛かりすぎという感じがありますね。

Creating staging directory
Scanning for jsp files.
Scanning files on local disk.
Initiating update.
Cloning 1 static files.
Cloning 13 application files.
Uploading 3 files.
Uploaded 1 files.
Uploaded 2 files.
Uploaded 3 files.
Deploying new version.
Will check again in 1 seconds
Will check again in 2 seconds
Closing update: new version is ready to start serving.
Uploading index definitions.
Deployment completed successfully

Google App Engine for JAVAのアップロードの続き(2)

今朝起きて、昨日のgoogle app engine へのアプリケーションのアップロードの失敗から一夜明けて、eclipseからディプロイボタンを押してみた。やっぱり失敗、googoleからのmore informationメールは届いていないが、googleのページに行くと昨日と同じようにアプリケーション登録は正常ですけど、まだ一度もデプロイされていませんと胸を張って言ってくる。それはその通りです。しかしエラーメッセージが変わった。
今日のメッセージ:

Unable to upload:
java.net.UnknownHostException: www.google.com
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
	at java.net.Socket.connect(Socket.java:519)
	at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:550)
	at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:141)
	at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
	at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:271)
	at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:328)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:172)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:793)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:158)
	at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:896)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:230)
	at com.google.appengine.tools.admin.ServerConnection.connect(ServerConnection.java:324)
	at com.google.appengine.tools.admin.ServerConnection.getAuthToken(ServerConnection.java:244)
	at com.google.appengine.tools.admin.ServerConnection.authenticate(ServerConnection.java:212)
	at com.google.appengine.tools.admin.ServerConnection.send(ServerConnection.java:142)
	at com.google.appengine.tools.admin.ServerConnection.post(ServerConnection.java:78)
	at com.google.appengine.tools.admin.AppVersionUpload.send(AppVersionUpload.java:345)
	at com.google.appengine.tools.admin.AppVersionUpload.beginTransaction(AppVersionUpload.java:159)
	at com.google.appengine.tools.admin.AppVersionUpload.doUpload(AppVersionUpload.java:68)
	at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:49)
	at com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy(AppEngineBridgeImpl.java:271)
	at com.google.appengine.eclipse.core.deploy.DeployProjectJob.runInWorkspace(DeployProjectJob.java:148)
	at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

昨日のメッセージ:

Unable to upload:
java.io.IOException: Error posting to URL: http://appengine.google.com/api/appversion/create?app_id=gaejapp&version=1&
400 Bad Request
Invalid runtime or the current user is not authorized to use it.

	at com.google.appengine.tools.admin.ServerConnection.send(ServerConnection.java:140)
	at com.google.appengine.tools.admin.ServerConnection.post(ServerConnection.java:78)
	at com.google.appengine.tools.admin.AppVersionUpload.send(AppVersionUpload.java:345)
	at com.google.appengine.tools.admin.AppVersionUpload.beginTransaction(AppVersionUpload.java:159)
	at com.google.appengine.tools.admin.AppVersionUpload.doUpload(AppVersionUpload.java:68)
	at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:49)
	at com.google.appengine.tools.admin.AppCfg$UpdateAction.execute(AppCfg.java:549)
	at com.google.appengine.tools.admin.AppCfg.<init>(AppCfg.java:134)
	at com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:63)
com.google.appengine.tools.admin.AdminException: Unable to upload app: Error posting to URL: http://appengine.google.com/api/appversion/create?app_id=gaejapp&version=1&
400 Bad Request
Invalid runtime or the current user is not authorized to use it.

	at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:55)
	at com.google.appengine.tools.admin.AppCfg$UpdateAction.execute(AppCfg.java:549)
	at com.google.appengine.tools.admin.AppCfg.<init>(AppCfg.java:134)
	at com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:63)
Caused by: java.io.IOException: Error posting to URL: http://appengine.google.com/api/appversion/create?app_id=gaejapp&version=1&
400 Bad Request
Invalid runtime or the current user is not authorized to use it.

	at com.google.appengine.tools.admin.ServerConnection.send(ServerConnection.java:140)
	at com.google.appengine.tools.admin.ServerConnection.post(ServerConnection.java:78)
	at com.google.appengine.tools.admin.AppVersionUpload.send(AppVersionUpload.java:345)
	at com.google.appengine.tools.admin.AppVersionUpload.beginTransaction(AppVersionUpload.java:159)
	at com.google.appengine.tools.admin.AppVersionUpload.doUpload(AppVersionUpload.java:68)
	at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:49)
	... 3 more

状態が改善したかなと見てみると、googleにコネクションに行ってそこで、BADリクエストが返ってきているのが昨日で、今日はコネクションで、java.net.UnknownHostException: www.google.comが返ってきていて昨日より後退て感じで朝から頭が痛い。

Eclipseのプラグのバージョンが2009/5/13版で、新しいにだなんて思っちゃったりしているですが、でも動作不良の99%は使い方が悪いことはわかっているので何とも言えないなという感じ。

com.google.appengine.eclipse.sdkbundle_1.2.1.v200905131143

エラーの内容が、googleのアプリケーションエンジンまで、たどり着いていないエラーメッセージなので、今日は、これに時間を掛けるのはやめよう、これが改善しても昨日と同じエラーにハマルと一日台無しだ。。。。

google app engine application

今朝から、google application engine for JAVAを使い始めている。

結構は始めは調子がよかったが、アプリケーションのUploadで行きづまってしまった。

次のエラーが出て、どうにもならない。

400 Bad Request
Invalid runtime or the current user is not authorized to use it.

検索すると

Invalid runtime specified

と似通ったエラーになっている人が数多くあるし、google faqにも載っているが、Signupはされており、アプリケーションの登録はうまくいって、gmail.comのメールアドレスがアプリケーションに対してACTIVEになっている。なぜに!、実際にUploadできるようになるまでに時間が掛かるのかな?とも思える不思議な状態なんです。サインアップに行くと次のように表示されてサインアップが完了になっているし。。。。

Sign up to try Google App Engine for Java.
Thanks for signing up. Once your account is activated, you will receive an email with more information.
<< Back
Java is a registered trademark of Sun Microsystems, Inc.

more informationは、まだ来ていないので、これが来ないとUploadできないのかな?とも。午後は悪あがきで、サンプルアプリケーションをコマンドベースでUploadしようと試みて

c:\google\demo> ..\bin\appcfg -e xxxx.yyyy@gmail.com --passin guestbook\war

なんてやってみても、結局同じメッセージで閉塞感で一杯の状態。。午後はプールに行こうと思っていたのに変なものに火がついてしまったみたいです。折角Pluginを入れたのに全く手感じで悶々。でも、おかげで久しぶりにjasper君の出力にお会いできて、それがlintに通らないメッセージまで拝見できました。jspを全てコンパイルしておかないとUploadできないとは結構手抜きのような気がしてならないのは私だけだろうか?Je22が使えないとFAQに書いてあるがFACESが使えないということ?

とりあえず、gmail.comにメールが来るのを待つことにしよう。