TOP>AJAX

2012年03月09日

プログラミングパラダイムが変わったことによる、半構造化データへの着目

 昨日の話の続き。

 コンピューターは、昔は微細化技術を発展させて、トランジスタを集約させることによって、
処理スピードを上げてきた。ムーアの法則は、この処理スピード向上を、よく物語っているわけ
だが、この方法には限界がある。微細化を進めると、最終的には、電子1個でトランジスタの
動作が出来るか?ということになる。
 これは、不可能である。電子などの量子は、1個とかいう状態になると、値がわからない。
観測した時点で値が確定するんじゃなかったっけ。実際、電子数個という状態になると、
ON/OFF状態に間違いが出るんだそうな(と、なにかでよんだ。雑音がはいると・・・)

 もちろん、これらの問題は、量子コンピューターによって解決されるかもしれない。
 しかし、それまで待つのは、現実的ではない。
 そこで、処理スピード向上の切り札として、並列化、スケールアウトが考えられてきた。

 今後のコンピューター処理は、そこで、並列処理、非同期処理を多用する方向に発展するものと思われる。
 Ajax,JQueryしかり、Hadoopしかり。

 ここで、並列処理プログラミングを考えると、
   ・小さい単位にプログラムを小分けして
   ・それを同時並行で走らせる
 ということになる。

 そうすると、
   ・小分けされた何本ものプログラム1つ1つにおいて、初期化しないといけない
      →共通部分続出
   ・小さなトランザクションがいっぱい出てくる
      →RDBだと大変
 ということになる。

 前者の、共通部分続出に関しては、共通部分の結果をキャッシュに入れておき、それを利用すればよい。
 例えばmemcachedを使うとか。

 こうなった場合、RDBでJOINして、毎回結果を求めるより、
 オブジェクト単位でキャッシュして、データを取ってきたほうが、JOIN時間を短縮できる。
 その際、このオブジェクト構造こそ、半構造データということになる。




 このような、並列処理にプログラミングパラダイムが変わったことによる
 オブジェクトキャッシュとしての半構造化データへの着目という話も
 実務的には、あると思う。

2012年03月08日

ビッグデータと半構造化、非構造化データの話は、わけたほうがいい


第6回 要求シンポジウム その2
http://blog.goo.ne.jp/xmldtp/e/b05b8434e99681ddd9f5cdcf633d26a9


の内容に関して、私の意見と沿わないところがあるので、そこについて、いくつか書いてみる。

まず、ビッグデータの話(この話、何回か続くかもしれない)

BIの延長のビッグデータというのは、同意見。
ただ、ビッグデータによる分析は、BIの延長だけでなく、多変量解析、特に因果関係の話も
出てくると思うけど、それについては、次回以降に書く。

問題は、よく、そこから、Twitterやfacebookを分析し、半構造化、非構造化データから、
有用なデータを取り出し・・・とか行ってしまうこと。

半構造化、非構造化データは、そういう分析よりも、むしろ、違う使い方がある。
Ajaxなどに向いているのだが、それについても・・・今日書きかたっ書けど、時間がないので
次回以降に書く。

また、構造化データによるビッグデータを扱ったほうが、統計的には載りやすい。
なので、ビッグデータと半構造化、非構造化データの話は、わけて考えたほうがいい。

・・・時間がないので、具体的な話がかけなくてごめん。
次回以降、もう少し具体的に説明する。

2012年02月15日

JQuery+AJAXの利用で、トラフィックが増える場合がある

先ほど書いた、

クラウドで設計は簡単になるの?−スケーラビリティとレスポンス
http://blog.goo.ne.jp/xmldtp/e/7a327ed572095c26fa268cbc59248b4c

で、

クラウドだと、レスポンスがよくわからないので、
要望が満たせないとなると・・いろいろ大変かも・・

と書いた。どういうケースでレスポンスが遅くなり、
要望が満たせなくなるか・・・だけど、




サーバー側との通信が多くなり、通信遅延が起こると
レスポンスが満たせなくなる可能性がある。

JQuery+AJAXを使って開発する場合、AJAXは非同期なので、画面の一部分を表示するために通信を行うということもありえる。

 たとえば、画面が

-----------------------
  | B |  C |
A |----------------|
  |   D    |
-----------------------


と構成されていたとする。この画面をいっぺんに書き換える場合、
昔だとサーバーに1回アクセスして、全部書き換え、ないしは
必要な箇所、を書き換えていた。

ところが、AJAXを採用した場合、
A,B,C,Dそれぞれの部分でサーバーにアクセスして、
自分の部分だけを書き換えるということもできる。




さてこのとき、

  BとCの合計値を使ってDを書き込み、
  そのDの結果を受けてAを書き込む

としたら、どうなるだろう

BCは、並行にアクセスできるが、Dはそのあと、
さらにその後Aということになり、
Aが表示されるには、3往復かかる。




もちろん、こんな設計をする必要はなく、
  Bが書き換わったらD,
  Cが書き換わったらD,
  Dが書き換わったらAを再計算する
としておけば、何回も変わるけど、Aをずっと待つ必要はなくなる。

・・・と、今、設計したよね。

つまり、JQuery+AJAXで非同期が入ってくると、いろいろと設計しないと
いけないことが多くなってくるわけで、これはサーバーがクラウドに
なっても、同じ、いやより複雑になるってことだ。

2011年09月28日

Strutsなどで、RESTにして、FlashやAJAXで受ける

 StrutsをREST、つまり、
    POSTないしは、GET型にして、引数で画面設定値を渡し、
    結果をXMLで受ける
 形にすれば、FlashでもAJAX(→HTML)でも、受け渡しできる。
 つまり、サーバー側をワンソースに出来るけど、
 どうやって、改造するのか?




 まず、Strutsは結局、ブラウザをでるときに、

  パス名.do?引数1=値1&・・・

 の形で渡されている(GET型で表現すると)ということに着目する。
 つまり、
  struts-config.xmlで指定した、パス名に.doをつけたURLに対して、
  引数と値を、適当に渡して
 呼び出せばよい。




 そして、strutsだと、結果を、JSPに設定して表示するわけだが、
この結果は、JSPで、HTMLを書いているから、HTMLになるのであって、

 JSPでヘッダーにXMLとして書き出すように送り、
 中身をXMLの形で書き出せば、

XMLで書き出せる。




 つまり、
<<HTML側、Flash側>>
・パス名.doの形で呼び出し、返り値のXMLを受けて処理する


<<Struts側>>
・forward先のJSPを、HTMLを書き出すのではなく、XMLを書き出し、
 XMLの要素として、値を書き出すようにする




 あ、でも、Strutsならforwardで次画面に遷移してくれるけど、
 これだと、次画面に自分で遷移させないといけない。
 その際、受け取ったXMLの値を自分で次画面に渡さないといけないね。
 その方法は、HTML5だとできるんだけど・・・

・・・長いので、また今度書くわ。

2011年02月22日

Java7の話


Developers Summit 2011で聞いてきた、Java7の話をメモメモ

(ちなみに、この講演内容のスライドは、ここに公開されている模様)



■Java7には、関係ないんだけど・・・
・Oracleは、今後も積極的にJavaに投資します
  →ということが、一番言いたかったらしい。

・JAVAはオープン
  OpenJDK : GPL v2でフォーク可能




■予定
・JavaSE7 2011/7/28
・JavaSE8 2012年後半
・Hotspot JVMも、JRockitもどっちも開発していく(当面)




■Java7の変更点
・switch文でcaseに文字列が使える
・バイナリ表記
・_で数字を分けて表記できる(カンマ,が_に変わった感じ)
・複数の例外を1つにまとめられる
・catch( final ・・・)でcatch内の例外捕捉
・new HashMap<>() (newの場合のHashMap<>の<>中に書く型がいらなくなる)
・開発者プレビュー版もうすぐ?もうでた?




■JavaEE6
・今後は本番環境へ
  拡張性
  プロファイルの提供
  仕様の削減
  進化する簡単開発




■そのほか
  サーブレット3.0:非同期の実現
  JSF2.0:テンプレートAJAX
  EJB3.1:warでデプロイ
  Bean Validation 1.0
  JAX-RS1.1
  DI1.0/CDI1.0

ここから始める Java EE 6
http://tinyurl.com/yhs3mvn





■JavaEE7
・クラウド対応、まだ考え始めたばかり
   JPA2.1
   JAX-RS2.0
   JMS2.0
   JSF2.2
   WebTier
   HTML5
   WebSocket
   JASON API


間違ってたらごめん、
ってか、スライドみたほうが、早い(^^;)


【広告】

サイト内検索

メンバー紹介

このサイトに自分のブログを載せたい!
(ブログの登録は無料です。)


アーカイブ

----