見出し画像

TWSNMPのデータベース

データをどう保存するか?

TWSNMPでは次のようなデータを保存する必要があります。

・動作に関する各種設定
・マップ表示するノードやラインの情報
・監視するためのポーリングの設定
・ログやポーリング結果

オリジナルのTWSNMPでは、すべて、テキストファイル(独自の形式)で保存していました。一番簡単ですが、データ量が増えると検索できないなどの問題がありました。普通のソフトウェアはMySQL,PosgreSQL,sqllite3などのリレーショナルデータベースにデータを保存するのが一般的です。私もいくつか、これらを使って開発したことがあります。でも、古っぽい開発方法なので、TWSNMPの開発には使いたくありません。何年か前に、NonSQLのデータベース、

を使ってログサーバーを開発しました。これは、とっても使い勝手がよく、高速で、気に入っていますが、TWSNMPで使うには、ちょっと大規模すぎるのと、ライセンスのゴタゴタがあるので、やめておくことにしました。せっかくGO言語で開発するので、他のソフトウェアのインストールが必要ない、コンパクトなパッケージで高速なものを探すことにしました。またまた、世界にはよいもであるもので、いくつか評価した結果

bbolt

を使うことにしました。キーと値のペアーを保存するタイプのデータベースで、テキスト形式で保存するよりはるかに柔軟に検索でき、データサイズが大きくなっても使えるものです。今は、このソフトを気に入っています。

bboltのその後

最初に選定してから半年実際に使ってみて、サイズ100GB超えても問題なくつかえています。かなりパフォーマンスがよくヘビーなログの検索にも耐えています。

つづく


開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。