近年、ソフトウエア関連のさまざまな国際学会が大変盛り上がっている。研究一辺倒ではなく、より実践的なソフトウエア技術について具体的な論文が多く発表されている。それらの中から、従来の考えをひっくり返すようなソフトウエア技術を二つ挙げよう。

 一つは、データ指向トランザクションだ。処理要求ごとにスレッドを割り当てるのではなく、データ単位に割り当てるアーキテクチャーである。

 これは、多数のクライアントから同時に大きなDBへアクセスするシーンで有用だ。典型的なデータベース管理システム(DBMS)のアーキテクチャーは、クライアントからの処理要求ごとに一つのスレッドを用意し、そのスレッドが複数のデータにアクセスして処理する。これでは、クライアント数が膨大になり、かつサーバー機のコア数が増えてくると問題が生じる。スレッド数が数千規模になったとき、CPU使用率におけるロック処理の占める割合が高くなる。「64コアのマシンで並列処理をすると、CPU使用率の85%超がロック処理に浪費されてしまう」という検証結果もある。

 そこで、処理要求ごとではなく、テーブルなどデータ領域ごとにスレッドを静的に割り当てる方式が考案された。トランザクションは、データにアクセスするたびに複数のスレッドを渡り歩くようにする。逆に、処理量が少なく、多くのテーブルにまたがる処理が中心のシステムには向かないといえる。

 このアーキテクチャーではロック処理時の競合が起きなくなる。その上、スレッドの実行時間もデータ領域ごとにほぼ一定に制御できる。ある検証では、マシンの並列度を上げていってもロック処理に使う時間は数%にとどまり、80%以上を有用な処理に使える、という驚くべきスケーラビリティーを実現した。