kintone APIやCSVファイルで大量にレコードを更新する時の注意点

著者名:サイボウズ 性能検証担当

目次

はじめに

kintone は画面上からレコードを 1 つひとつ手動で更新するだけでなく、API や CSV ファイルを利用してレコードの更新ができます。

kintone の使い方の幅が広がって、とても便利な機能ですよね。

たとえば、kintone 内の他のアプリや外部サービスからデータを取得して「定期的にレコードを一括更新する」ということもできるので、ぜひ API や CSV ファイルを活用したい!という方も多いのではないでしょうか。

そんな方たちにぜひ知っておいていただきたいのが、レコードの変更履歴とディスク使用量の関係性です。

どういうことか見ていきましょう。

レコードの変更履歴について

kintone には、フィールドの変更履歴を確認したり、誤ってレコードを更新してしまった時に、過去の状態に戻したりできる「レコードの変更履歴」というとても便利な機能があります。

デフォルトではレコードの変更履歴は有効になっており、レコードを更新するたびにレコードの変更履歴が保存されます。

cybozu.com 共通管理の「契約状況」に表示されるディスク使用量には、添付ファイル領域、監査ログ保存領域、データベース領域がありますが、レコードの変更履歴は「データベース領域」のデータに含まれます。

そう。つまり、kintone データベース内にはレコードの変更履歴も保存され、ディスク使用量にカウントされる、ということです。

kintone データベース内には、単純に現在のレコード情報だけが保存されるだけだ、と思っている方は要注意です!

契約状況とは | cybozu.com ヘルプ (External link)

レコード更新時のkintoneデータベース内部の動き

では、レコードを変更した時、kintone データベース内部ではどういう動きになるか見てみましょう。

レコード更新時のkintoneデータベース内部の動き

現在のレコード情報だけでなく、前回のレコード情報も kintone データベース内に保存されているんですね。

レコードを更新する度に、kintone データベース内には以前の情報は残ったまま、どんどん新しい情報が追加されていきます。

API実行やCSV読込でレコードを大量更新すると

つまり、API を実行したり CSV ファイルを読み込んで、複数レコードを一括更新すると、kintone データベース内部では以下のような動きになります。

レコード大量更新時のDB内部の動き

いかがでしょうか!?

大量のレコードを一括更新すれば、そのぶんレコードの変更履歴も大量に保存されます。

特に API や CSV ファイルを用いて、レコード一括更新するバッチ処理等をしている場合には注意が必要です。
大量の履歴が作られることで想定外にディスク容量が消費されます。
使用量が契約しているディスク容量を超えてしまう可能性があるため注意してください。

(もちろんコマンドラインツール cli-kintone を利用している場合も同様です)

kintone コマンドラインツール

レコード大量更新時はレコードの変更履歴を無効化しよう!

もし普段の運用でレコードの変更履歴をあまり使用していないアプリがあれば、該当アプリのレコードの変更履歴を無効にすることでディスク容量の節約につながります。

kintone 内部でレコード情報を保存するために必要な処理も減り、結果としてレコード操作が速くなる可能性もあります。

サイボウズでは、APIを用いてレコードを定期的に更新する場合、レコードの変更履歴を無効にすることを推奨しています

レコードの変更履歴を無効にする方法は、以下のヘルプを参照してください。

kintone ヘルプ:レコードの変更履歴の記録機能を無効にする (External link)

まとめ

普段の運用でレコードの変更履歴をあまり使用していない場合、無効にしましょう!

レコードの変更履歴の有効時にレコードを大量更新するとディスク容量圧迫して、契約しているディスク容量を超える場合があります。

参考までに、レコードの変更履歴を無効にする以外にもディスク使用量を減らす方法を知りたい方は、以下のヘルプも参考にしてください。

kintone ヘルプ:ディスク使用量を減らすにはどうすればいいですか? (External link)

information

この Tips は、2019 年 10 月版 kintone で動作を確認しています。