在尝试多种数据存储之前,选择数据存储的标准

这篇文章是为了「尝试不同数据存储 Advent Calendar 2019」而写的。
文章中所述内容(包括附件和链接)仅限于创建时点,如有变更将不另行通知。
我们尽力包含了一些常见的中间件产品示例,但由于有很多未涉及的领域,本文并不追求完整性,请予以了解。

首先

选择数据存储时应根据其用途和要求进行选择。但是,有时也会出现相反情况,即根据中间件产品或服务选择数据存储的情况。如果根据产品或服务固定选择数据存储,当最适合原本用途的技术与之不符时,可能会产生大量的重复劳动。本文着重于考虑哪些内容来基于需求和特性选择数据存储。由于本文是一篇读物,如果偏离了Advent Calendar的本意,请谅解。

让我们进行要件审查

与选择数据存储有关的要求

需要数据存储系统的要求主要可分为功能需求和非功能需求。具体而言,每个要求如下所示。为了将功能要求应用于用途中,我们需要从适合该用途的数据的角度进行分析和处理。

機能要件具体的な例データ形式どのような種類のデータを格納するのか。構造化データなのか、非構造化データなのか。データサイズどれくらいのデータのサイズなのか。1レコードあたりと全体での容量。スケールと構造どのようにスケールするのか。スケールする場合、書き込みと読み取りのワークロードはどこからどのような種類で発生するのか。整合性モデルデータの整合性モデルをどうするのか。データの特性によって、厳密な整合性モデルが必要な場合とそうでない場合がある。データの可搬性データがどこからきて、ETL/ELTの処理をどこで行うのか。データライフサイクルデータ自身のライフサイクル。全期間のデータを単一のデータストアに保管するのか、アーカイブしていくのか。

在选择数据存储时,功能需求是最优先考虑的因素。它需要根据系统特性和数据特性进行相应的设计。

非機能要件具体的な例パフォーマンスとスケーラビリティどれくらいのパフォーマンス性能が必要とされるのか。リージョンを跨ぐようなスケーラビリティが必要なのかどうか。スケールアップ、アウト、どちらが多いのか。信頼性データストアの信頼性。可用性。バックアップ/リストア要件。運用管理性マネージドサービスを使用するかどうか。保守性。OSSは無償ではないので、保守性をどう考慮するか。コストイニシャルコスト。ランニングコスト。OSSベースで自分で環境構築する場合はその工数や保守性を含めて。セキュリティユーザーとアクセス・管理権限。暗号化要件。データのマスキングやユーザー制御。攻撃を受けた場合の検出など。

非功能性需求虽然不如功能性需求重要,但它是决定选择哪个数据存储系统的判断因素。

根据不同的数据格式选择标准

数据格式有许多不同类型。下面的表格简要总结了每种数据格式的特性,用途以及中间件、产品和服务示例。需要注意的是,对于开源软件项目,根据作者的技术背景列出了项目名称;对于云服务,主要介绍了Microsoft Azure的相关内容。

データ形式特性用途ミドルウェア・製品・サービス例リレーショナルデータベース管理システムACID (原子性、一貫性、独立性、永続性) 特性に基づく、トランザクションの一貫性がある。ERPパッケージなどSQL Server (SQL Server 及び Azure SQL Database ファミリ)Oracle Database, DB2, MySQL, PostgreSQL, MariaDB (Azure Database for シリーズ)などキー/値のストアデータ値を一意のキーに関連付けて分散格納する。CAP定理により一貫性(Consistency),可用性(Availability),分断耐性(Partition-tolerance)を同時にすべて備えることができないことが多い。Web キャッシュデータMemcached, Redis (Azure Cache for Redis), Azure Cosmos DBドキュメント データベースキー/値のデータストアと基本的に特性は似ているが、値が XML、YAML、JSON、BSON などのドキュメントとなる。IoTのログデータ、カタログデータMongoDB, Azure Cosmos DBグラフ データベース関係性を表すデータを表現するのにつかわれています。Node-Edgeの関係で表現します。人物相関図。路線図と所要時間など。Gremlin, Neo4j, Azure Cosmos DB, SQL Server (2017, 2019)列ファミリのデータベースリレーショナルデータベースやドキュメントデータベースによく似た行と列の組み合わせ。キーで分散せず順番に格納されることが多い。列のデータ構成の変更が容易。FacebookのメッセージングサービスなどHBase (HD Insight), Azure Table Storageデータ分析データの取り込み、保存、および分析のための大規模な並列処理が可能。データ分析(データレイク)HDFS, Azure Synapse Analytics, Azure Data Lake, Azure Data Explorer検索エンジンのデータベース外部データ ストアおよびサービスで保持されている情報のインデックス情報を格納。検索システム。ファイルサーバ。Azure Search, Elasticsearchオブジェクト ストレージ大規模な非構造化データのバイナリ(例えば、イメージ、ビデオ、オーディオ ストリーム、仮想マシンイメージ) の格納に向いています。コンテンツ配信システムなどBlob Storage時系列データベース多数のソースからリアルタイムで大量のデータを収集するため、きわめて大量の書き込みに対応。更新はほとんど行われない。IoTのセンサーデータ。パフォーマンスデータなどTime Series Insights共有ファイル上記の特性と異なりフラットなファイルを複数のクライアントからアクセスするのが最適な場合。部門間でやり取りするリストなどMicrosoft Excel、Microsoft Accessなど

– 总结

根据用途的不同,各种要求,例如数据格式等都会确定,并选择相应的数据存储方式。不仅仅依赖于特定的产品或服务,最好根据用途、要求和架构进行选择,以便更轻松地实施系统。

最後,我们提供的参考资料中的一部分(架构中心的文档)是基于实际案例的参考架构(这是大家非常喜欢的案例结构,一些特定企业或组织的信息被省略,稍微进行了标准化)。这些资料非常有参考价值,包含了许多常见内容。希望这篇文章可以成为您阅读官方文档的契机,在有时间的时候也能一同阅读。

请提供参考文献。

    • データ ストアの選択条件

 

    • 適切なデータ ストアの選択

 

    • CAP定理を見直す。“CAPの3つから2つを選ぶ”という説明はミスリーディングだった

 

    • SQL Server

 

    • Azure SQL で適切なデプロイ オプションを選択する

 

    • Azure Database for PostgreSQL のドキュメント

 

    • Azure Database for MySQL のドキュメント

 

    • Azure Database for MariaDB のドキュメント

 

    • Memcached

 

    • Azure Cosmos DB

 

    • Azure Cosmos DB の Cassandra API の概要

 

    • Azure Cache for Redis

 

    • Azure Cosmos DB の概要: Gremlin API

 

    • Azure Cosmos DB の MongoDB 用 API

 

    • Azure Cosmos DB の概要:テーブル API

 

    • Azure Synapse Analytics

 

    • HD Insight

Azure Table Storage
Azure Search
Time Series Insights
Blob Storage

广告
将在 10 秒后关闭
bannerAds