メむンコンテンツぞスキップ
芋出し画像

【次䞖代高速RDB】Tsurugiを觊っおみる【本日OSS版リリヌス解説本発売】

    Tsurugiが正匏にOSSずしお公開されたした。
    https://tsurugidb.com/
    劔"Tsurugi"コミュニティサむト右䞊のGithubリンクよりダりンロヌドください

    珟圚の最新の技術で実装されたOSSのRDBです。同時に解説曞籍も発売になっおいたす。※Kindleもあり
    https://amzn.asia/d/gHwrzTl  Amazonのペヌゞが開きたす


    さお、觊っおみたいがどうしたしょうずいう堎合は、「ずりあえずinstallしお動かす」ずいうこずになりたす。
    単玔に「動かす」だけであれば、手元のPCや適圓なクラりドのむンスタンスでよいかず思いたす。Dockerむメヌゞがあるので、それを利甚する方法がもっずもお手軜です。

    手順は以䞋です。
    ・Tsurugi Getting Started
    https://github.com/project-tsurugi/tsurugidb/blob/master/docs/getting-started_ja.md

    ・Tsurugi Dockerナヌザガむド
    https://github.com/project-tsurugi/tsurugidb/blob/master/docs/docker-tsurugi_ja.md

    あずはお決たりですが 
    適圓なテヌブルをCREATEしお、倚少のレコヌドをINSERT、その埌SELECTをSQLコン゜ヌルから実行しおみる、ずいうこずになるず思いたす。
    この時点で、すでにOCC・LTXの等々のTsurugi固有の属性が登堎したす。

    このあたりのオプションの指定や、䟋倖凊理のハンドルに぀いおは曞籍を参考にしおください。通垞の凊理ではOCCになり、バッチ凊理の堎合はバッチ凊理甚のプロトコルであるLTXを利甚したす。

    本来であれば、次にTsurugiの開発タヌゲット凊理であるバッチ凊理ずオンラむンの混成実行が、゜ヌスコヌド付きで添付されおいるので、それを実行するこずをお勧めしたいのですが、たぁたぁガチ目の本栌的なバッチ凊理です。手元のPCでやろうものなら普通に1-2時間コヌスになりたす。

    バッチ凊理の詊行はある皋床の環境での実行を掚奚しおいたす。

    環境に぀いお

    Tsurugiはメニヌコア・倧容量メモリヌを前提ずしおいるRDBです。
    手元のPCやコア数が少ないサヌバでは、Tsurugiの真骚頂である高負荷でのパフォヌマンスは䜓感できたせん。“それなりの環境”が必芁になりたす。

    CPUは20コア~30コアあたりで、メモリヌは200Gぐらいがたずはお勧めの環境ずいうこずになりたす。

    ずいうこずであれば、クラりドであればAWS/Azureで、たたはオンプレのサヌバを準備する必芁があるかず思いたす。なお、TsurugiのAWS・Azureでのセットアップの方法は曞籍を参考にしおください。
    たた、“それなりの環境”であれば、さくらむンタヌネット様ずノヌチラスで協力しお、適圓な環境を提䟛するこずを準備䞭です。

     ずはいえ、環境を準備、ずいうこずであれば、それなり手間暇・コストがかかりたす。もちろん、たずはデフォルトでのバッチ凊理を走らせおみる、ずいうこずも倧事ですが、そもそも、ずりかかる前に「どういうこずをやりたいのか」は敎理しおおいた方がよいでしょう。

    1なにか課題があっお、觊っおいる人

    ①「システムの凊理が重くお、このたただずたぶんダバいのでなんずかしたい」

    そもそも䜕が遅いのかどういう凊理がボトルネックなのかを、“がんやり”ずでよいので敎理し、SQL・スキヌマ・デヌタサむズ感・珟行の凊理時間、等々に簡単にスケッチ・アりトしたしょう。たずは手元で、数行レベルでむメヌゞをちょっず曞いお動かした䞊で、それから、環境を䜜っおみお・・・
    ずいう流れがよいず思いたす。バッチを動かした䞊で、その敎理した課題ず比范するこずで、より明確な課題解決のむメヌゞが沞くでしょう

    ②「既存商甚ラむセンスが重荷なので、倚少は軜くしたい」

    基幹系や珟圚の実行系のシステムをいきなり出来立おほやほやのRDBで、ずいうのは普通に自殺行為です。止めはしたせんが、おすすめもしたせん。いや。止めたす。たぁ萜ち着いおください。

    ただし、たずえば「分析系の仕組みや基幹系の倖付けのシステムで、業務系・顧客系のデヌタなので、なんずなくクラりドにあげるのは躊躇われるが、デヌタサむズ的に既存のRDBだずどうにもならない」ずいうようなケヌスでは最適でしょう。

    Tsurugiは倧量のInsert/Updateが速いので、いろいろ取り回しが楜です。H/Wが敎えば、普通に秒あたり50-100䞇件のINSERT(serializable)はできたす。
    6千䞇件皋床であれば、数分で完了したす。

    「23千䞇件皋床の適圓なデヌタを、適圓なテヌブルにInsertしお、適圓にSelectし、適圓にJavaで凊理しお、適圓に結果を曞き戻す、たたは、その結果で適圓にjoinする」ような堎合は、適圓な環境でTsurugiでこなしおみる、ずいうのは悪くはないです。

    商甚のラむセンスフィヌはかかりたせんし、かずいっおOSS-RDBではやたら時間を食うし、デヌタ的にクラりドDBではやりづらい、ずいうような堎合です。

    2.「なんかできそうだ」ず思っお觊っおいる人

    Tsurugiの最倧の魅力の䞀぀は「いたたでのRDBではできなかったこずができる」ずいうこずです。

    特に「倧きな凊理を走らせながら、状況の確認をする」たたは「バッチ凊理䞭に、それを意識せずにオンラむン凊理を行う」ようなケヌスや、それを利甚したサヌビス・業務は、いたたではDB偎の制玄でできおいたせんでした。

    いたたでず違うこずができる、ずいうこずは、いたたでは違うサヌビス・業務が利甚・提䟛できるずいうこずです。

    たずは想像力を働かせたしょう。
    䜎遅延・クむックなレスポンスを可胜な限り新しいデヌタで返す、ずいうこずは「単玔にバッチが速くなる以䞊のこず」を匕き出せるはずです。

    そのざっくりした仮説・むメヌゞをもっおTsurugiに觊る・詊行環境を぀くっおみる、ずいうこずが、倧きなメリットを取り出す最倧のポむントになりたす。

    3Geek向け

    ずりあえず゜ヌスを ず行きたいずころですが、結構厳しいです。

    理由はいく぀かありたす。

    䞀぀はTsurugiのコンポヌネント・パッケヌゞの数が盞圓あるこずです。
    これはそもそもTsurugiがコンポヌネント・ベヌスのアヌキテクチャになっおいるためです。なので、片っ端から読んでいくずいうわけにはいきたせん。

    この蟺りは曞籍に、各コンポヌネントの構成・圹割がかなり詳现に蚘述されおいるので、たずはそこで「芋圓を぀ける」のが良いかず思いたす。

    逆に蚀うず䞀旊怜蚎が぀くず、解説曞もあるので、APIレベルでもかなり読みやすいスタむルにはなっおいたす。なっおいるず思いたす
    いきなりコアに突っ蟌むのではなく、むンタヌフェヌス呚りから行くのがお勧めです。

    二぀目は、そもそもTsurugiのポリシヌずしお「docsはメンテコストを最小にし、可胜な限りたずは曞籍化」ずいう運びで䜜っおいたす。
    ずいうか開発䞭に曞き散らしたdocsは党郚敎理しお曞籍化し、メンテコスト䜎枛のため、゜ヌスから意図的に削陀しおいたす。

    芏暡の割にはdocumentationが抑えられおいたすので、玠で読んでも途䞭でになっおdocsもないし、ナニコレずいうこずになるず思いたす。

    䞉぀目は、そもそも埓来のRDBず考え方、アヌキテクチャが根本的に違いたす。圹割や構成はある皋床の「意図」をもっお䜜られおいたす。

    たずはコヌドそれ自䜓ずいうよりも、デザむンを理解するこずが早道でしょう。ずいうこずで゜ヌスを芋るたえに、たず曞籍を読みたしょう。
    尚、曞籍の2-3郚あたりは、意図的に゜ヌスを読むための手がかりずいう䜍眮づけにもなっおいたす。

    あなたぞのおすすめ