
TWSNMPのデータベース
データをどう保存するか?
TWSNMPでは次のようなデータを保存する必要があります。
・動作に関する各種設定
・マップ表示するノードやラインの情報
・監視するためのポーリングの設定
・ログやポーリング結果
オリジナルのTWSNMPでは、すべて、テキストファイル(独自の形式)で保存していました。一番簡単ですが、データ量が増えると検索できないなどの問題がありました。普通のソフトウェアはMySQL,PosgreSQL,sqllite3などのリレーショナルデータベースにデータを保存するのが一般的です。私もいくつか、これらを使って開発したことがあります。でも、古っぽい開発方法なので、TWSNMPの開発には使いたくありません。何年か前に、NonSQLのデータベース、
を使ってログサーバーを開発しました。これは、とっても使い勝手がよく、高速で、気に入っていますが、TWSNMPで使うには、ちょっと大規模すぎるのと、ライセンスのゴタゴタがあるので、やめておくことにしました。せっかくGO言語で開発するので、他のソフトウェアのインストールが必要ない、コンパクトなパッケージで高速なものを探すことにしました。またまた、世界にはよいもであるもので、いくつか評価した結果
bbolt
を使うことにしました。キーと値のペアーを保存するタイプのデータベースで、テキスト形式で保存するよりはるかに柔軟に検索でき、データサイズが大きくなっても使えるものです。今は、このソフトを気に入っています。
bboltのその後
最初に選定してから半年実際に使ってみて、サイズ100GB超えても問題なくつかえています。かなりパフォーマンスがよくヘビーなログの検索にも耐えています。
つづく
いいなと思ったら応援しよう!
