sql >> データベース >  >> RDS >> Database

スプレッドシートとデータベース:切り替える時が来ましたか?パート1

    スプレッドシート(​​Excel、Googleスプレッドシート、またはその他の名前のシート)は、非常に優れた強力なツールです。しかし、データベースもそうです。いつスプレッドシートに固執する必要がありますか?いつデータベースに移動する必要がありますか?

    同様の目的でスプレッドシートとデータベースを使用できます。データを整理し、レポート作成を容易にすることを考えると、どちらを使用するのが最適かを判断するのが難しい場合があります。それでは、各オプションの長所と短所について話しましょう。

    はじめに…

    ビジネスを始めたばかりの場合は、ほとんどの場合、スプレッドシート(​​または「シート」)が最初の選択肢です。スタートアップがカスタムメイドのデータベースをサポートする予算を持っていることはめったにありません。その上、あなたのビジネスは新しいです。それが小さいままであるのか、巨大な企業に膨れ上がるのか、それとも真ん中のどこかにあるのかはわかりません。

    もう1つの要因は、ビジネスの構造と組織が成長するにつれて変化する可能性があることです。したがって、実際には、最初にデータベースを構築することは一般的なオプションではありません。これは通常、シートが飛び込む場所です。

    シートを使用する最も重要な理由は、シートが利用可能であるということです。数回クリックするだけで、Microsoft Excel、Googleスプレッドシート、またはその他のスプレッドシートプログラムの使用を開始できます。複雑な構造を計画する必要はありません。データを入力し、計算とレポートを作成し、その情報を同僚と共有するだけです。スプレッドシートには多くの優れた機能が組み込まれており、中小企業をかなりの期間にわたって見ることができます。

    つまり、すべてのデータがシートにあるとしましょう。なぜデータベースの構築を検討する必要があるのですか?言い換えれば、すべてが機能しているのに、なぜあなたの人生を複雑にするのですか?

    この時点で、すべてがどれだけうまく機能しているかを自問することをお勧めします。動作が停止するまで、すべてが正常に動作することを忘れないでください。シートの場合、データが多いほど、問題が発生する可能性が高くなります。データベースはこれらの問題を回避するのにどのように役立ちますか?そして、いつ切り替えを検討する必要がありますか?

    スプレッドシートを使用してデータを整理する

    私たちが顧客に電気通信とインターネットサービスを提供する会社を始めたとしましょう。どの顧客が現在どのサービスに加入しているかを追跡する必要があります。顧客は一度に複数のアクティブなサービスを利用でき、サービスは設定された期間の終了時に期限切れになるか、自動的に更新される可能性があります。

    シートを使用するソリューションを見てみましょう。

    持っているすべてのデータのリストを作成しただけです。つまり、1つの場所にデータが混在しています。顧客データ(列AからE)、サービスタイプ(列F)、およびサービスの詳細(列G、H、およびJ)があります。

    一見すると、すべてがかなり良さそうです。複雑なアクションを実行せずにすべてのデータを表示できます。必要なデータをフィルタリングし、レポート用のピボットテーブルまたはグラフを作成できます。これまでのところ、とても良いです。

    しかし、顧客が増えたときにシートを使い続けると、すべてが大きくなりすぎてシートを管理できなくなる可能性があります。そして、これは新しい一連の問題をもたらします。

    スプレッドシートの潜在的な問題

    スプレッドシートと比較すると、データベースは複雑です。しかし、これらの「合併症」は有用な目的を果たします。次の問題を防止するか、少なくとも最小限に抑えます。

    データ品質

    データの品質と一貫性は、大きなシートにとって大きな問題です。データを正しく保存するつもりですが、データ品質の問題 非常に一般的です。人々が間違いを犯したり、予期しない情報を入力したりします。以下のシナリオで問題が発生する可能性があることを考えてみてください。

    1. サービスタイプを指定せずに新しい顧客を追加したい。顧客の詳細を追加し、サービスの詳細を除外する必要がありますか?サービスの詳細を知っている顧客のみを挿入できる場合、それは異常の挿入です。 。
    2. 顧客レコードを作成した後、サービスデータが利用可能になったときに追加するとどうなりますか?
    3. 顧客が複数のサービスに加入している場合はどうなりますか?レコードごとに1つのサービスタイプしか持てないため、サービスごとに新しいレコードを作成する必要がありますか?
    4. 1人の顧客に対して複数のレコードがあり、その顧客の情報を更新する必要がある場合はどうなりますか?関連するすべての行の情報を変更しない限り、データに一貫性がなくなります。同じアカウントに2つの異なるアドレスを設定できます。そのような状況で、どのデータが正しいかをどうやって知ることができますか?
    5. データを削除するとどうなりますか?行全体を削除すると、その顧客のデータはすべて失われます。これは良い考えではありません。サービスデータのみを削除し、顧客データを保持することをお勧めします。しかし、すべてが1つの行にまとめて保存されている場合、どうすればそれを実現できますか?
    6. 1人の顧客だけがサービスに加入し、そのレコードを削除した場合はどうなりますか?その顧客のレコードを削除した場合、そのサービスのすべてのレコードも削除されますか? (これは異常の削除と呼ばれます 。)それは、そのサービスをもう提供しないという意味ですか?それでも提供している場合は、そのサービスに関連するすべてのパラメータが失われています。

    明らかに、あらゆるビジネスのデータを保存することには複雑さが伴います。私たちは皆、データ品質の問題の受信側にいます。注文しなかったサービスの請求書を受け取った、同じものに対して2回請求された、またはパッケージが間違ったアドレスに送信された。これらのことが起こり、小さなデータセットでは、比較的簡単に修正できます。しかし、数千または数百万の行がある場合はどうなりますか?間もなく、これらの問題の修正にほぼすべての時間を費やす予定です。

    パフォーマンスの問題

    パフォーマンスの問題 データセットが大きくなりすぎてシートを効率的に処理できない場合に発生します。データ品質の問題はパフォーマンスの問題よりもはるかに早く発生しますが、それはパフォーマンスの問題が重要でないことを意味するわけではありません。 Au contraire ;パフォーマンスの問題は、データ品質の問題よりもさらに危険な場合があります。

    特定の行を検索し、新しい行を挿入し、既存の行のセル値を更新または削除し、行全体を削除するのが一般的です。これらすべてのアクションには多くのフィルタリングが必要ですが、小さなデータセットでは問題ありません。しかし、シートが非常に大きくなると、簡単な操作でも数分かかる場合があります。フィルターがその仕事をするのを待つためにあなたの仕事の半分を費やすことはほとんど賢明な選択ではありません。

    冗長性の関連する問題もあります。同じデータをディスクに複数回保存します(たとえば、顧客データは複数の行に何度も保存されます)。これはパフォーマンスにも影響を及ぼします。

    まともなハードウェアでは、数千行のシートで問題ありません。しかし、何万もの行に入ると、パフォーマンスの問題が彼らの醜い頭をもたげることがあります。言うまでもなく、数十万行、場合によっては数百万行のシートのパフォーマンスは非常に低くなります。

    一方、データベースはパフォーマンスの問題を解決するためにここにあります。すべてが適切に設定されていれば、何百万もの行を操作しても問題は発生しません。

    履歴データとレポートの管理

    シートに関するもう1つの重要な問題は、時間の経過に伴うデータの変化を追跡することです。シートからデータを削除するだけでは、データは失われます。 (すべての変更をキャプチャし、履歴データを保存するために)毎日のシートを保存することにした場合、すぐに大量のシートに埋もれてしまうことになります。このような構造からレポートを作成するのは非常に時間がかかり、そこから生成されるレポートの品質には非常に疑問があります。

    データでこのような問題が発生しましたか?

    今日の記事では、シートを使用して大量のデータを整理することのいくつかの欠点について説明しました。これらの問題のいずれかを経験したことがありますか?ビジネスを次のレベルに引き上げる準備はできていますか?答えが「はい」の場合、あなたは正しい場所にいます!来週は、データベースがデータをスプレッドシートに保存する際の問題をどのように解決するかを学びます。


    1. C#プログラム内でストアドプロシージャを実行する方法

    2. postgresqlでのROLLBACKイベントトリガー

    3. Addnoderesolv.confの失敗

    4. java.sql.SQLException:使い果たされた結果セット