window.pipedriveLeadboosterConfig={です。 ベース:'leadbooster-chat.pipedrive.com'、 companyId:11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2、 } ;(function () { var w = window もし (w.LeadBooster) {なら console.warn('LeadBooster already exists') } else { w.LeadBooster = { {. q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: 関数 (n) { { this.q.push({ t: 'o', n: n, h: h }) this.q.push({ t: 't', n: n }) }, } } })() ソフトウェア・プロジェクトで特定のデータ型にどのDBを選択するか - The Codest
The Codest
  • 会社概要
  • サービス
    • ソフトウェア開発
      • フロントエンド開発
      • バックエンド開発
    • Staff Augmentation
      • フロントエンド開発者
      • バックエンド開発者
      • データエンジニア
      • クラウドエンジニア
      • QAエンジニア
      • その他
    • アドバイザリー
      • 監査&コンサルティング
  • 産業
    • フィンテック&バンキング
    • E-commerce
    • アドテック
    • ヘルステック
    • 製造業
    • 物流
    • 自動車
    • アイオーティー
  • 価値
    • CEO
    • CTO
    • デリバリー・マネージャー
  • チーム
  • Case Studies
  • ノウハウ
    • ブログ
    • ミートアップ
    • ウェビナー
    • リソース
採用情報 連絡先
  • 会社概要
  • サービス
    • ソフトウェア開発
      • フロントエンド開発
      • バックエンド開発
    • Staff Augmentation
      • フロントエンド開発者
      • バックエンド開発者
      • データエンジニア
      • クラウドエンジニア
      • QAエンジニア
      • その他
    • アドバイザリー
      • 監査&コンサルティング
  • 価値
    • CEO
    • CTO
    • デリバリー・マネージャー
  • チーム
  • Case Studies
  • ノウハウ
    • ブログ
    • ミートアップ
    • ウェビナー
    • リソース
採用情報 連絡先
戻る矢印 戻る
2020-12-15
ソフトウェア開発

ソフトウェア・プロジェクトにおける特定のデータ型に対してどのDBを選択するか

アガタ・ヴェルシュラー

新しいプロジェクトの作成には、データを保存するための適切なデータベースの選択が含まれる。私の知る限り、多くの開発者は最初からデフォルトでリレーショナル・データベースを選んでいる。しかし、それは最善の選択なのだろうか?もちろん、それは多くの要因によります。この記事では、他の種類のデータベースを紹介することで、あなたの選択を容易にし、今後の取り組みに役立てたいと思います。

データベースの種類だけが考慮すべきトピックではありません。例えば、アプリケーションには何人のアクティブユーザーがいるのか?どこでも強力な一貫性が必要なのか?場合によっては、最終的な一貫性で十分なのでしょうか?などなど。"ハマればハマるほどややこしくなる "ので、明確な答えのない質問がたくさんあります。ですから、この記事はデータベースの種類だけに焦点を当てていることに注意してください。

コーヒーでも飲みながら、この読書を楽しもう。

一般的なデータベースの分類

最初に、データベースには大きく分けてリレーショナル(SQL)とノンリレーショナル(NoSQL)の2種類があることを知っておくといいだろう。

  • SQLデータベースはリレーショナル方式で構造化されており、データをテーブルに格納し、テーブル間のリレーションを保持する。
  • NoSQL(SQLだけではない)データベースは、リレーショナルデータベースとは異なり、構造化されていないため、より適応性と柔軟性がある。

上記の2種類とは別に、もう1種類、つまりインメモリデータベースがある。これは、データが物理的に保存されている場所に関係するため、リレーショナルにもノンリレーショナルにも分類できない。どのデータベースもディスクに格納されることもあれば、メモリに格納されることもある。

データベースの種類

1.リレーショナル

私見では、最もポピュラーなタイプのデータベースである。レコード間の関係を保持したい構造的なデータに適している。データベースの構造はスキーマに記述される。

主な利点は、トランザクション(データの整合性を保証し、ACIDルールに従うのに役立つ)と、複雑なクエリを大量に処理する能力である。

いつ選ぶべきか?

構造的にあまり変化がなく、永続的に保存する必要があるデータなどを保存するのに便利です:

  • CRM(顧客関係管理)、
  • 注文管理、
  • ERP (エンタープライズ リソース・プランニング)、
  • データウェアハウスや在庫管理、
  • 会計または財務。

例を挙げよう:

Amazon Aurora、Microsoft Azure SQLデータベース、PostgreSQL、MySQL。

リレーショナル・データベースは多くの新しいアプリケーションには不十分であり、複数のデータベースを持つ必要がある。次のパートでは、非リレーショナル・データベースに焦点を当てます。

2.キー・バリュー

各データ値を一意のキーで保存する。つまり、ハッシュマップと同じように、単一のキーでデータにアクセスする。リレーショナル・データベースとは対照的に、スキームもレコード間の関係も強制しない。これらのデータベースのほとんどは、通常、更新操作をサポートしていない。データを変更するには、既存のセットをすべて上書きしなければならない。

いつ選ぶべきか?

高速に読み書きしたい(しかし更新頻度は高くない)データに便利だ:

  • リアルタイム入札、広告配信
  • データ・キャッシング、
  • セッション管理、
  • ショッピングカート
  • 顧客嗜好やプロファイル管理。

例を挙げよう:

Memcached、Amazon DynamoDB、Azure Cosmos DB、Redis。

3.ドキュメント

ドキュメントのコレクションを保存する。各ドキュメントにはデータのフィールドがあり、単純な値であったり、リストや子コレクションのような複雑な要素であったりする。重要なのは、たとえ同じものを表現していたとしても、すべてのドキュメントは異なる構造を持つ可能性があるということです(各ドキュメントはユニークで、時間とともに進化します)。例えば、最初の顧客ドキュメントは2番目の顧客ドキュメントよりも少ない情報しか含んでいません:

{
 "FirstName":"John"、
 "LastName":"Fake"、
 「バイク:" [
  {
    "Model":"BMW"、
    "年":2020
  }
 ]
}
{
 "FirstName":"Alex"、
 "LastName":"Nolastname"、
 年齢15,
 「Address":{
    国":"ポーランド",
    "City":"どこか"
  },
 「バイク:" [
  {
    "Model":"BMW"、
    "年":2020
  }
 ]
}

いつ選ぶべきか?

高速処理のために柔軟なスキーマを必要とするデータに有効である:

  • 製品 カタログ
  • CMS(コンテンツ管理システム)、
  • ユーザープロファイルとパーソナライゼーション。

例を挙げよう:

Amazon DocumentDB、Azure Cosmos DB、MongoDB、Redis。

4.グラフ

グラフ構造を使用し、ノードとエッジという2つの要素で構成される。ノードはテーブルの行やJSONドキュメントに似ている。エッジはノード間の関係であり、ノードと同様に重要である。どちらもプロパティを持つことができる。さらに、エッジは関係の方向を定義することができる。

いつ選ぶべきか?

データがグラフに似ている場合、つまりデータ項目間の関係が動的で時間と共に変化する場合に有効です。さらに、ビジネスや技術的に チーム データ内の関係を理解する必要がある。著名な例としては、以下のようなものがある:

  • 組織図、
  • 不正行為の検知、
  • ソーシャルグラフ/ネットワーキング、
  • 推奨エンジン
  • 知識グラフ。

例を挙げよう:

Amazon Neptune、Neo4j、ArangoDB、Titan。

5.時系列

時間ごとに整理されたデータを保存する。通常、リアルタイムで膨大な量のデータを蓄積する。データの保存に使用されることが多いが、更新されることはほとんどない。一般に、タイムスタンプが主キーやデータの並べ替えに使われる。データベースによっては、データの出所や種類などの追加情報としてタグを定義できるものもある。

いつ選ぶべきか?

例えば、少量のデータを時系列に並べて保存するのに便利である:

  • DevOps、
  • アプリケーションの監視、
  • モニタリングとイベントの遠隔測定、
  • IoT アプリケーション(デバイスセンサーからのデータ収集など)。

例を挙げよう:

Azure Time Series Insights、Amazon Timestream、InfluxDB。

6.元帳

QLDBは、中央機関によって所有される、不変で、透過的で、暗号的に検証可能なトランザクションログを提供する。- アマゾンのQLDBの概要

上の引用にあるすべてのキーワードを簡単に説明しよう:

  • immutable(不変) - このデータベースで作成されたレコードは、削除、変更、上書きができないことを意味します、
  • 透過的 - データの各変更を追跡し、一連の記録を保持します、
  • 暗号学的に検証可能 - このデータベースで作成されたデータは、ブロックチェーンと同様の暗号学的ハッシュ技術によって検証される(SHA-256ハッシュ関数を使用)。

いつ選ぶべきか?

正確な履歴を保存しておくと便利で、例えば、データを変更するたびに、順を追って入力を記録することができる:

  • 財務(デビットまたはクレジット取引の履歴)、
  • 製造業 (部品の調達先を追跡する)、
  • 保険,
  • 人事と給与、
  • 小売
  • サプライチェーン

例を挙げよう:

アマゾンQLDB

結論

この記事のタイトルにある質問に対する単純な答えはない。適切なデータベースを選択する唯一の方法は、あなたのデータについてもっと知ることです。質問に答えてください:「そうすれば、正しい選択ができるようになるでしょう。

さらに、ビジネス要件とアプリケーション・ドメインをよく知る必要がある。データをどのように使用するのか、データベースにどのようなクエリを送信するのか、データを何回保持、読み込み、更新、削除するのかを知っておく必要があります。これらのことはすべて重要ですが、すべての開発者がこれらの領域に十分な注意を払っているわけではありません。

より良いソフトウェアを開発するために、開発するアプリケーションのデータについて考えてください。全体として、私はあなたが自分のデータを十分に理解し、それが幸せになるような場所に保管することを願っています。

続きを読む

JavaScriptアプリケーションを高速化するためのいくつかのトリック

Railsのパフォーマンスを向上させる方法

外部ソフトウェア開発パートナーとの協力に関する事実と神話

関連記事

ソフトウェア開発

将来を見据えたウェブ・アプリケーションの構築:The Codestのエキスパート・チームによる洞察

The Codestが、最先端技術を駆使してスケーラブルでインタラクティブなウェブアプリケーションを作成し、あらゆるプラットフォームでシームレスなユーザー体験を提供することにどのように秀でているかをご覧ください。The Codestの専門知識がどのようにデジタルトランスフォーメーションとビジネス...

ザ・コデスト
ソフトウェア開発

ラトビアを拠点とするソフトウェア開発企業トップ10社

ラトビアのトップソフトウェア開発企業とその革新的なソリューションについて、最新記事でご紹介します。ラトビアの技術リーダーたちがあなたのビジネスをどのように向上させるかをご覧ください。

thecodest
エンタープライズ&スケールアップ・ソリューション

Javaソフトウェア開発の要点:アウトソーシングを成功させるためのガイド

outsourcingのJavaソフトウェア開発を成功させるために不可欠なこのガイドを読んで、The Codestで効率性を高め、専門知識にアクセスし、プロジェクトを成功に導きましょう。

thecodest
ソフトウェア開発

ポーランドにおけるアウトソーシングの究極ガイド

ポーランドのoutsourcingの急増は、経済、教育、技術の進歩がITの成長とビジネス・フレンドリーな環境を促進していることによる。

ザ・コデスト
エンタープライズ&スケールアップ・ソリューション

IT監査ツール&テクニック完全ガイド

IT監査は、安全かつ効率的で、コンプライアンスに準拠したシステムを保証します。その重要性については、記事全文をお読みください。

The Codest
ヤクブ・ヤクボヴィッチ CTO & 共同創設者

ナレッジベースを購読して、IT部門の専門知識を常に最新の状態に保ちましょう。

    会社概要

    The Codest - ポーランドに技術拠点を持つ国際的なソフトウェア開発会社。

    イギリス - 本社

    • オフィス 303B, 182-184 High Street North E6 2JA
      イギリス、ロンドン

    ポーランド - ローカル・テック・ハブ

    • ファブリチュナ・オフィスパーク、アレハ
      ポコジュ18、31-564クラクフ
    • ブレイン・エンバシー, コンストルクトースカ
      11, 02-673 Warsaw, Poland

      The Codest

    • ホーム
    • 会社概要
    • サービス
    • Case Studies
    • ノウハウ
    • 採用情報
    • 辞書

      サービス

    • アドバイザリー
    • ソフトウェア開発
    • バックエンド開発
    • フロントエンド開発
    • Staff Augmentation
    • バックエンド開発者
    • クラウドエンジニア
    • データエンジニア
    • その他
    • QAエンジニア

      リソース

    • 外部ソフトウェア開発パートナーとの協力に関する事実と神話
    • 米国から欧州へ:アメリカの新興企業がヨーロッパへの移転を決断する理由
    • テックオフショア開発ハブの比較:テックオフショア ヨーロッパ(ポーランド)、ASEAN(フィリピン)、ユーラシア(トルコ)
    • CTOとCIOの課題は?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • ウェブサイト利用規約

    著作権 © 2025 by The Codest。無断複写・転載を禁じます。

    jaJapanese
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek jaJapanese