2020/11/05 11:14
はじめまして。
KINTONE超初心者の鈴木と申します。
初歩的なことなのですが、知恵を貸していただけましたら幸いです。
Aアプリにたくさんのレコードがあり、Bアプリには様々な検索条件のみを登録します。その検索条件に基づいてCアプリにデータを出力し、Bアプリの関連連コードとして表示するというプログラムを考えています。
プログラムはJavaScriptを用いてGET、POSTで処理すればよいだろうと想定したのですが、大量のデータを一日に何度も読み書きすると、APIの呼出し制限10000件にひっかかる恐れがあることがわかりました。
具体的には十万件以上あるレコードの中から、毎回異なる条件でデータを抽出してリストを生成するのが目的です。
実際にこのような大量のデータを検索して処理するというのは、KINTONEでは難しものでしょうか。
ミュートしたユーザーの投稿です。
投稿を表示鈴木さん
初めまして、運営事務局のキンスキ松井です。
キンコミを活用いただきありがとうございます!
今後ともどうぞ宜しくお願いします^^
超初心者と書かれつつも、開発にトライされていてスゴイですね!
システムには慣れていて、kintoneには初めて触れられているのかなと想像しました。
今回の内容ですが、サイボウズのパートナーにご相談いただくのも良いと思いました。
投稿を拝見すると、背景を確認しつつアプリ構造から考える必要がある内容に感じました。
開発者向けコミュニティの「cybozu developer network」もありますが、コミュニティでは限界もある内容かもしれません。
サイボウズのパートナーには、お客様自身の構築をサポートする企業もいます。
こちらのフォームからご相談いただくと、ご要望にあったパートナーも紹介できますので是非ご活用ください。
https://cybozu.co.jp/products/partner/consulting/
また、キンコミですが、開発を主としない内容を扱っております。
「大量データを扱うアプリの運用はどうしていますか?」のような、運用ノウハウを他ユーザーさんに聞いてみたい。
このような場合には是非キンコミを活用いただき、皆さんと交流を深めてもらえればと思います^^
ミュートしたユーザーの投稿です。
投稿を表示ミュートしたユーザーの投稿です。
投稿を表示鈴木さん
拝見した仕様は、
・データ量が多い(十万件以上)
・アプリの間の連携(標準機能外)
という点で、kintoneには、難しいといいますか、正直ちょっと向いてないかなと感じます。
仮に件数や連携をクリアしてもkintone内で処理をすると希望のレスポンスが得られないかもしれません。
ただ、「社内のデータ一元化をkintoneで」という事なのですね。
わかります。
散在した色々な情報をひとつに、kintoneに集約したいとの要求なのかなと思います。
ローテクですが、例えば社内イントラの各URLをkintoneアプリのラベルフィールドに入れたり、リンクフィールドに入力するという方法で、一元化と言い張る方法もあります。^^;
リンクフィールドについては、JavaScriptでURLクエリパラメータを加工するなど工夫したら、結構連携っぽくなりますし、それで十分なケースもあります。
たしかに、kintoneをあらゆるシステムのHubとして使う、フロントエンドとして使うという考え方もありますので、そういう意味では、Oracleなどのデーターベースをエンジンに、JSPなどでイントラWebページを作成、Webの検索結果のみを、随時または定期的にkintoneへcsv取り込みする方法もあるかもしれません。
CSV入出力には「cli-kintone」というコマンドラインツールがあります。
https://developer.cybozu.io/hc/ja/articles/202708214-kintone-%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3%E3%83%84%E3%83%BC%E3%83%AB
真正面から取り組むなら、連携サービスの利用が適当かと。
私自身が触ってないサービスもありますので恐縮ですが、関連すると思われるリンクをご紹介します。
鈴木さんの仰る通り、「CData Sync」はいいかもしれませんね。
鈴木さんなら、使い慣れたSQLで作業できるので魅力的な選択肢かも。
Kintone Data Sync
https://www.cdata.com/jp/drivers/kintone/sync/
CData Drivers for kintone
https://kintone-sol.cybozu.co.jp/integrate/cdata001.html
あと、他システムとの連携アダプタとして、「ASTERIA WARP」というのがあります。
ASTERIA WARP Core
https://kintone-sol.cybozu.co.jp/integrate/asteria001.html
また、データ連携としては「DataSpider」というのもあります。
DataSpider Servista kintoneアダプタ
https://kintone-sol.cybozu.co.jp/integrate/appresso001.html
複数アプリ間のデータ集計・計算という観点なら
トヨクモさんの「データコレクト」が利用できるかもしれません。
https://dc.kintoneapp.com/
kintoneアプリのデータ連携なら「krewData」は定番です。
https://krew.grapecity.com/products/krewdata.htm
2020年11月5日発売のリアルタイム実行プランは魅力的
https://krew.grapecity.com/news/newsrelease/20201028.htm
でも、レコード数の上限には気を付けて
https://docs.krew.grapecity.com/krewdata/krewdata_limitations.html
連係サービスでも、APIで大量のデータ更新をすると10,000件の壁に引っかかる場合がありますので注意が必要です。
ただ、上限値(10,000)になった背景は、「安定したサービスを継続的に提供していくため」との事ですので、そこのご理解もあれば嬉しいかと。
みんなで使ってるサービスなので大事にしていきましょう。^^
安定したサービスの継続的な提供に必要な仕様変更を実施
https://kintone.cybozu.co.jp/update/main/2020-07.html#point8
参考になれば幸いです。
ミュートしたユーザーの投稿です。
投稿を表示ミュートしたユーザーの投稿です。
投稿を表示鈴木さん
NSAS平野と申します。
API呼び出し制限1万件の制限ですね。GETでSQL文の条件で絞り込みができれば
対応は可能だと思います。何回もSQL文を1レコードずつ発行するとだめですね。
(案1)
1回のGETで条件設定で500件レコード抽出ができますので、単純計算で
1万回SQL発行したら、500万件レコードの抽出が可能ですね。
弊社お客様で4年間のデータで150万件以上のデータ/1アプリから
期間と拠点名で抽出して5万程度のレコード抽出し、7拠点+本部レポートを出力する処理を
毎月実施しています。
(案2)
レコードが余りに大きくSQlも10000件超えそうな処理が発生しそうな場合は
アプリを分ける方法もあるかと思います。
ある条件のデータをAアプリ、条件以外のデータをBアプリにデータを分けて
アクセスするアプリを分け、SQl1万件/1アプリを回避する。
(案3)
最悪はAPIでなく、kintoneアプリの標準機能でCSV抽出してローカルで処理。
(案3)は前記(案1)の年間レポート作成時に50~60万件のレコード処理してレポート出力しますので
ローカルにCSVをダウンロードして、CSVファイルを読み込んで処理しています。
この方が処理が速いですね。
ご参考になるかどうか。ご検討ください。
ミュートしたユーザーの投稿です。
投稿を表示