Skip to main content
Announcements
Global Transformation Awards! Applications are now open. Submit Entry
cancel
Showing results for 
Search instead for 
Did you mean: 
Tamako_Suzuki
Former Employee
Former Employee

A Historical Odyssey: QlikView 6 and Multi-threading(日本語訳)

オリジナルの英文ブログへのリンク


http://community.qlik.com/blogs/qlikviewdesignblog/2013/01/09/a-historical-odyssey-qlikview-6


Henric Cronströmの経歴について詳しく知りたい方はこちらのリンクをご参照ください。

http://community.qlik.com/people/hic


----------------------------------------------------------------------------------------------------------------------------------------------------------------


QlikView5は、安定した製品で、多くの機能が実装されたよいバージョンでしたが、新しいハードウェアのテクノロジーに対して、充分な対応はできていませんでした。すでに、私たちは64bitItanium プロセッサに対応したエディションをリリースしていましたが、まだ改善の余地あることを感じていたのです。私たちは、大容量でのデータ・ボリュームでのデータのリロードやレスポンスタイムに関するテストを実施し、大量のデータの処理は可能ですが、処理スピードについては、より高速化する必要があると考えていました。プロセッサのパワーに関する点は別として、すでに、メモリのサイズの制約は、なくなったので、改善の余地があったからです。


HistoricalOdeesay6_1.png


当時、Intel社は、最初のデュアルコアプロセッサを発表したばかりでした。すでにマルチプロセッサのマザーボードは存在していましたが、デュアルコアプロセッサは、低価格で、かつキャッシュの共有が可能な製品でした。デュアルコアプロセッサのアーキテクチャーに対応し、QlikView側で最適に平行処理(parallel processing)を行う仕組みを構築するかが、私たちの課題となりました。

それは、マルチスレッディングに対応するために、製品のソースコードを書き直すということを意味します。

QlikView5でもすでにいくつかの初歩的なマルチスレッディング対応<1>を行っていましたが、個々のセッションは個別のスレッドで評価される仕様でした。そこで、私たちは、より多くのステップでマルチスレッディングに対応することで、クリックするたびにより高速な動作を実現する必要があると考えました。

マルチスレッディング対応は、単純なものではありません。ソフトウエアの処理ロジックの観点から説明すると、単一のスレッドから複数のスレッドへの処理の分割や、複数のスレッドで分割されている処理の統合のメカニズムを定義する必要がありました。スレッドは非同期であり、個別のスレッドを待機・停止させて処理を行うなどの工夫がいりました。これは、上手に処理ロジックを制御しておかないと複数のプロセスがお互いにリソースの解放を待ってしまい、結果的にどちらの処理も止まってしまうといったデッドロック<2>による処理停止を引き起こす可能性もあり、慎重な仕様変更が求められていました。

私たちは多くのソースコードを変更し、2003年の春には、マルチスレッドに対応したQlikView6をリリースしました。

QlikView6では、下記に図示したような論理推論(logical inference)をもとに、ロジックの分岐と統合を行い、最終的な計算結果をユーザーに提供する処理フローを取っています。 ユーザーによる値の選択のアクションが実行されると、最初に論理推論が評価され、その後シートオブジェクトごとの計算が実行されます。この計算は個々に割り振られたスレッドで実行され、その後、全てのデータモデルが動的に変更(Subscribe)されます。ここで言う変更(Subscribeは、ユーザーによって選択条件が変更される毎ごとに、その条件を基にして、QlikViewは動的に計算処理を行い、その計算結果を反映したデータに基づく分析を実施するということを意味しています。それに加えて、チャートエンジンは、大量のレコード件数のテーブルに保持されているデータの集計を異なるスレッドを利用して並行処理するマルチスレッディング処理を実装しました。


HistoricalOdeesay6_2.png


QlikView6では、LEFファイルの考え方も追加しました。LEFファイルとは、Client Access Licenses CALs)を有効化するための情報をまとめたファイルです。

また、qvp プロトコル(QlikView protocol IEプラグインにクライアント、OCXやテーブルビューアーの機能、オブジェクトのコピー&ペーストやレイアウトのテーマ機能、透過性(semi transparency )の調整やカラー関数、チャート内のレイアウト定義での変数の利用、チャートの枠線、ゲージチャート、レーダーチャート、スライダーオブジェクトや、言語のdllファイルの機能を追加しました。

それから、ライセンス体系に関しても、スタンドアローン・クライアントについて、エンタープライズ、プロフェッショナル、アナライザーという考え方を定めて、細分化しました。これは、利用ユーザーを開発者・パワーユーザー・標準的なユーザーの3つの役割に分割するという考え方をもとにしたものです。

QlikView6は、今日でも私たちが利用しているマルチスレッディングの技術を確立したという意味で、忘れられないバージョンとなりました。これは、現在のマルチコア・ハードウエアの環境にも適応したQlikViewの根幹をなす重要な特徴といえるものです。

HIC

-------------------------------------------------------------------------------------------------------------------------------


<1>マルチスレッディング【multi-threading

1つのアプリケーションソフトがスレッドと呼ばれる処理単位を複数生成し、並行して複数の処理を行うこと。いわばアプリケーションソフト内でのマルチタスク処理。 E-Wordsより引用。

http://e-words.jp/w/E3839EE383ABE38381E382B9E383ACE38383E38389.html

<2> デッドロック deadlock 】 

複数のプロセスが互いに相手の占有している資源の解放を待ってしまい、処理が停止してしまうこと。データベースの排他制御の不備などが原因で起こる。E-Wordsより引用。

http://e-words.jp/w/E38387E38383E38389E383ADE38383E382AF.html

0 Replies