2

背景:私の州政府は、「政府の透明性」という名目で財務データを提供する Web サイトを持っていますが、その表示方法に非常に不満を持っています。これは、API がなく、データをダウンロードする方法がなく、Web サイト自体が集計分析を提供しない、厄介な旧式の Web サイトです。州の公務員の給与と旅費の払い戻しの記録を名前で見つけることができますが、それにはある程度の努力が必要です。そして、「平均的な高校教師の給料はいくらですか?」のような有用な質問への答えを得るための簡単な方法は確かにありません。そのため、最初のステップとして、この情報の大きな塊をスクリーン スクレイピングしました。これは現在、GitHub リポジトリに json 形式で置かれています。

したがって、私の次のステップは、このデータを有用な方法で提示することです。確かに、私は自分でいくつかの分析とグラフィックスを行い、RESTful API を提供し、データ セット全体を含む tarball を提供しようとします。でも、もう一つ欲しいものがありますが、よくわかりません...

質問:このデータをリレーショナル データベースに格納した場合、そのデータベース システムを汎用のパブリック クエリに "安全に" 公開するにはどうすればよいでしょうか? 任意の SQL 選択を実行する Web サービスを単純​​に作成することが良い考えであるとは想像できません。これは、長時間実行されるクエリ (悪意があるかどうかに関係なく) でプロセッサを拘束するためのオープンな招待状であるためです。

クエリ評価の複雑さの上限を保証できる SQL サブセット、またはまったく異なるクエリ言語などはありますか? それとも、これは考えすぎですか? 正しい答えは、DBMS での最大クエリ時間を低く設定するのと同じくらい些細なことでしょうか?

4

1 に答える 1

0

リスク許容度に応じて、オープンなインターネット上でデータベース サーバーを利用できるようにすることもできます。

どのデータベースを利用できますか?

ユーザーの役割によるデータの分離に関する要件は何ですか? 誰でもアクセスできますか? ログインロールを持っている人だけですか? 異なるログイン ロールの異なるデータ?

ロールベースのセキュリティをサポートSELECTし、適切なテーブルへのアクセス許可のみを付与するデータベースが必要です。

root ユーザーが特定のネットワークからのみ接続できること、パスワードが非常に複雑であること、ログインが TLS 経由で行われることを確認してください。fail2ban も検討してください。

workmemPostgreSQL でパラメーターを使用して、クエリのメモリ使用量を制限できます。MySQL は、ユーザー クエリのスロットリングをサポートしています。http://dev.mysql.com/doc/refman/5.7/en/user-resources.html

于 2014-04-15T21:30:28.473 に答える