[Tencent Cloud TDSQL-C サーバーレス製品エクスペリエンス] TDSQL-C ストレージでクロールされた QQ 音楽プレイリスト データに基づく

[Tencent Cloud TDSQL-C サーバーレス製品エクスペリエンス] TDSQL-C ストレージでクロールされた QQ 音楽プレイリスト データに基づく

ここに画像の説明を挿入

序文

最近、Tencent Cloud が開催する Tencent Cloud 製品体験イベントに参加する機会に恵まれましたTDSQL-Cこのプロセスでは、TDSQL-Cデータベースの製品と実践を理解することで多くの恩恵を受けてきました。データベースは依然としてこのように動作できることがわかりました。また、コスト削減や効率化という言葉の意味がよく分かりました。

WeChatグループでイベントの紹介と説明を見た後、私は一人でノンストップで探索を始めました。まず、グループのアシスタントから送られてきた実験マニュアルに従い、プロダクト全体の業務プロセスを体験しました。

次に、公式の製品ドキュメントを確認しました。ドキュメントは非常に簡潔かつ明確でした。そして、TDSQL-Cこれらの資料に基づいて最初のプログラムを開始し、データベースに基づいてアンケート システムをTDSQL-C構築し、提供される高性能、柔軟で信頼性の高いサービスを個人的に体験しました。 、プロセス全体が非常にスムーズです。VueTDSQL-C

他の学生を助けることを願って、それを整理して私の操作と洞察を共有させてください。

背景

従来のデータベースがクラウド データベースに置き換わるのはなぜですか?

クラウドデータベースの登場についてはTDSQL-C、クラウドデータベースから始める必要があると思いますが、従来のローカルデータベースの導入では、企業がハードウェア機器の購入や保守、データベースソフトウェアの管理を自社で行う必要があり、中小企業にとっては費用がかかり煩雑な作業となる可能性があります。限られたリソースで。同時に、従来のデータベースは、大規模なデータ処理や大量の同時アクセスに直面すると、パフォーマンスのボトルネックや可用性の問題に遭遇する可能性があります。クラウドデータベースの登場により、これらの問題は解決されます。データベースをクラウド プラットフォームに展開し、柔軟なコンピューティング リソースとストレージ リソースを提供することで、ユーザーは実際のニーズに応じてデータベースの容量とパフォーマンスをオンデマンドで拡張できます。クラウド データベースは、高可用性と信頼性も提供し、データ バックアップ、冗長ストレージ、災害復旧メカニズムを通じてデータのセキュリティと回復可能性を保護します。さらに、クラウド データベースは便利な管理および監視ツールも提供し、データベースの運用とメンテナンスのプロセスを簡素化します。

サーバーレス データベースにはどのような利点がありますか?

クラウドServerlessデータベースの登場により、さらに高い柔軟性と経済的メリットが得られます。従来のデータベースでは、事前構成および保守のために一定量のコンピューティング リソースが必要であり、これらのリソースはアイドル状態のときにも料金を支払う必要があります。このデータベースはServerless従量課金制モデルを採用しており、リソースを事前に構成することなく、コンピューティング リソースとストレージ リソースの実際の使用量に応じて料金が請求されます。これにより、ユーザーは実際のニーズに応じてデータベース リソースを動的に拡張および縮小でき、リソースの無駄や追加コストを回避できます。Serverlessデータベースはリソースを自動的に管理および最適化することもできるため、ユーザーは基盤となるインフラストラクチャの管理ではなく、アプリケーション開発のみに集中する必要があります。

TDSQL-CTencent Cloud が自社開発した新世代のクラウドネイティブ リレーショナル データベースです従来のデータベース、クラウド コンピューティング、新しいハードウェア テクノロジーの利点を統合し、100% の互換性があり、MySQLユーザーに極めて高い柔軟性、高性能、高可用性、高い信頼性とセキュリティを備えたデータベース サービスを提供します。100 万を超えるQPS高スループット、PBレベルでの大規模分散インテリジェント ストレージ、Serverless第 2 レベルのスケーリングを実現し、企業のデジタル トランスフォーメーションの完了を加速します。

サーバーレス サービスは、Tencent Cloud が開発した新世代のクラウドネイティブ リレーショナル データベースのTDSQL-C MySQLサーバーレス アーキテクチャ バージョンであり、フルServerlessアーキテクチャのクラウドネイティブ データベースです。Serverlessこのサービスは、コンピューティングおよびストレージ リソースの実際の使用量に基づいて料金を請求することをサポートしており、支払う必要はなく、Tencent Cloud のクラウドネイティブ テクノロジーはユーザーに利益をもたらします。

一般に、クラウド データベースクラウド サーバーレス データベースは、さまざまな規模のユーザーのニーズとデータの保存と処理のニーズを満たし、より柔軟でスケーラブルでコスト効率の高いソリューションを提供するために作成されます。

1. TDSQL-C データベースとは何ですか?

TDSQL-C MySQLこのバージョンはCloud Native、商用データベースの安定性、信頼性、高性能、スケーラビリティの特性を兼ね備えているだけでなく、オープンソース クラウド データベースのシンプルさ、オープン性、効率的な反復という利点も備えた設計コンセプトに基づいています。

この説明を理解してみましょう。Cloud Nativeデザインコンセプトは何ですか?

クラウド ネイティブの設計コンセプトは、クラウド コンピューティング環境でのアプリケーションの開発と展開のための方法論と考え方であり、その目標は、アプリケーションをインフラストラクチャから切り離して、アプリケーションがクラウド環境のダイナミクスと弾力性によりよく適応できるようにすることです。さらに、優れた拡張性、信頼性、管理性を提供します。これにより、開発者はアプリケーションをより迅速かつ効率的に構築して配信できるようになり、ますます複雑になり変化するビジネス ニーズに適切に対応できるようになります。

この設計手法に基づいて、TDSQL-C MySQLSoversion はユーザーに超高柔軟性、高性能、大容量ストレージ、安全で信頼性の高いデータベース サービスを提供し、企業が商品の注文やそれに伴うビジネスの急速な成長などの高頻度のトランザクションに簡単に対応できるようにします。トラフィックのピーク、ゲーム ビジネス、過去の注文、および大量のデータ量と低頻度のクエリを伴うその他のビジネス シナリオ、財務データのセキュリティ関連、開発テスト、コスト重視などによる。

2. TDSQL-Cの特徴

基礎となるコンポーネントを選択するときに注意する必要がある機能がいくつか見つかりました。なぜTDSQL-Cそれらを選択する必要があるのでしょうか?

  1. 完全に互換性のある

TDSQL-C MySQLこのバージョンでは、オープンソース データベースのコンピューティングとストレージが分離されており、ストレージは Tencent Cloud の分散クラウド ストレージ サービス上に構築されており、コンピューティング層はオープンソース データベース エンジンと完全に互換性があり、ビジネスを変更することなくスムーズに移行できますMySQL 5.7、8.0

  1. 超高性能

ノードあたり 100 万ノードQPSの超高性能は、高同時実行性と高パフォーマンスのシナリオに対応し、主要なビジネスの継続性を確保し、さらに読み取りと書き込みの分離と読み取りと書き込みのスケーラビリティを提供します。

  1. マスストレージ

最大 PB レベルの大容量ストレージをサポートしており、大量のデータに直面して頻繁にサブデータベースやサブテーブルを実行する退屈な操作からユーザーを節約します。また、データ圧縮もサポートしており、パフォーマンスにおいて多くの最適化が行われています。大量のデータの取得と書き込み。

  1. 第 2 レベルの障害回復

計算ノードはステートレスであり、第 2 レベルのフェイルオーバーとリカバリをサポートしており、計算ノードが配置されている物理マシンがダウンした場合でも、1 分以内に復元できます。

  1. 信頼性の高いデータ

クラスターはセキュリティ グループとVPCネットワーク分離をサポートします。データの複数のコピーとバックアップを自動的に維持し、99.9999999% の信頼性でデータの安全性と信頼性を確保します。

  1. 弾性膨張

ビジネスニーズに応じてコンピューティングノードを迅速にアップグレードまたはアップグレードでき、容量拡張も数秒で完了でき、エラスティックストレージと組み合わせることで、コンピューティングリソースのコストが最適化されます。

  1. 高速読み取り専用拡張機能

コンピューティング ノードは、ビジネス ニーズに応じて読み取り専用ノードを迅速に追加でき、クラスターは 1 ~ 15 個の読み取り専用ノードを数秒で追加または削除できるため、ビジネスのピークやシナリオの変化に迅速に対応できます。

  1. スナップショットバックアップ

複数のデータ バージョンに基づく第 2 レベルのスナップショット バックアップは、ユーザー データを継続的にバックアップして保護するため、マスター/スレーブ アーキテクチャによってバックアップされたバックアップ データの同期と再配置の必要がなく、最大速度でファイルを並行してバックアップします。ビジネス データの迅速な回復を保証する GB/秒。

  1. サーバーレスアーキテクチャ

ServerlessTDSQL-C MySQLTencent が自社開発したクラウドネイティブデータベースバージョンのサーバーレス アーキテクチャ バージョンで、容量が自動的に拡張および縮小され、実際の使用量に応じてのみ請求されます。

3. TDSQL-Cの適用シナリオ

TDSQL-C MySQLこのバージョンは、複数の業界やアプリケーション シナリオに広く適用でき、次の条件と利点があります。

  1. インターネットモバイルアプリケーション:

    • 商用データベースレベルでの高性能と高信頼性を提供し、スムーズで効率的な業務運営を実現します。
    • これは、弾力性、同期効率、アクティブ/スタンバイ切り替え時間の点で従来のアクティブ/スタンバイ アーキテクチャの問題を解決し、高いシステム可用性とビジネス継続性を保証します。
    • オープンソース データベースと完全な互換性がありMySQL、既存のビジネス アプリケーションを変更せずにアクセスできるためTDSQL-C MySQL、企業のクラウドへのスムーズな移行を支援します。
  2. ゲームアプリケーション:

    • 機敏で柔軟な弾力的な拡張を提供し、ビジネスのピークに対処するためにビジネス ニーズに応じて容量を迅速にアップグレード、アップグレード、拡張します。
    • ハイレベルな大容量ストレージに対応しPB、ストレージ容量に応じた課金や容量の自動拡張を実現することで、リージョンやサーバーを組み合わせる煩雑な作業を軽減し、リソースとコストの最適な配置を実現します。
    • ユーザー データを継続的に保護するための第 2 レベルのスナップショット バックアップと高速ロールバック機能を提供します。
  3. 電子商取引、ライブストリーミング、教育業界:

    • 第 2 レベルのアップグレードをサポートしており、最大15 ノードまで拡張できます。急速に増加できる機能により、QPSストレージ容量とホスト リソースの増加に伴って従来のデータベースのアップグレード時間が増加するという問題が解決されます。
    • 最適化IOPS機能を提供することで、高同時実行状態での優れたデータ書き込み機能を確保し、ピーク時のビジネス ニーズに適応します。
    • 物理レプリケーションを介して読み取り/書き込みノードと読み取り専用ノードを接続すると、読み取り専用ノードと読み取り/書き込みノード間の遅延が大幅に短縮され、電子商取引シナリオにおける買い手と売り手の一貫した読み取り要件が満たされます。
  4. 金融会社および保険会社:

    • マルチアベイラビリティゾーンアーキテクチャを採用し、複数のアベイラビリティゾーンにデータをバックアップし、ディザスタリカバリとバックアップ機能を提供します。
    • ホワイトリストVPCネットワークなどのあらゆる種類のセキュリティ対策を提供して、データベース データのアクセス、保存、管理を保護します。
    • 共有分散ストレージ設計により、マスター/スレーブの非同期レプリケーションによって引き起こされるスタンバイ データベース データの非強力な整合性の問題が完全に解決されます。

これらの条件と利点TDSQL-C MySQLにより、このバージョンは、高頻度のトランザクション、急成長するビジネス、大量のデータを使用する低頻度のクエリ、財務データのセキュリティ、開発テスト、コスト重視のシナリオなど、さまざまなビジネス シナリオに適しています。

4. TDSQL-C に基づいてクロールされた QQ 音楽プレイリスト データを保存する

今回は、TDSQL-C Serverless MySQL を使用してクローラ アプリケーションを迅速に構築し、クラウド ネイティブ データベースTDSQL-Cによってもたらされる利点を体験するために、 Pythonを使用してそれを実装する予定です。

最もプロジェクトのコードは次のとおりです。
ここに画像の説明を挿入

構築を始めましょう!

1. TDSQL-C サーバーレス データベースを作成する

ここに画像の説明を挿入

次回購入後にTDSQL-Cクラスターリストで確認できます

ここに画像の説明を挿入

  • その後のプログラムの開発を容易にするために、まずデータベースへの外部ネットワーク アクセスを開く必要があります。

ここに画像の説明を挿入

2. 必要なデータベースを作成し、DMC を通じてデータベースを管理します

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

  • DMCによるデータテーブルの作成
CREATE TABLE `cate` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT NULL,
  `type` varchar(255) DEFAULT NULL COMMENT 'kg | kw | wyy | qq',
  `cate` varchar(255) DEFAULT NULL COMMENT '分类',
  `primary_key` bigint(255) DEFAULT NULL COMMENT '平台主键',
  `create_date` datetime DEFAULT NULL,
  `update_date` datetime DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `u` (`type`,`primary_key`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

CREATE TABLE `playlist` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT NULL COMMENT '标题',
  `desc` longtext COMMENT '描述',
  `cate` varchar(255) DEFAULT NULL COMMENT '类型',
  `cate_id` varchar(255) DEFAULT NULL,
  `is_own` tinyint(255) DEFAULT '1' COMMENT '1 第三方创建的  2自己创建的',
  `primary_key` varchar(255) DEFAULT NULL COMMENT '第三方歌单主键',
  `key_type` char(10) DEFAULT NULL COMMENT 'qq | kg | wyy | kw ',
  `thumb_img` longtext COMMENT '封面',
  `tag` text COMMENT '标签 ,',
  `tag_id` text COMMENT '标签id ,拆分',
  `author` varchar(255) DEFAULT NULL COMMENT '作者',
  `author_id` bigint(255) DEFAULT NULL COMMENT '作者id',
  `collect_num` bigint(20) DEFAULT '0' COMMENT '收藏数量',
  `share_num` bigint(20) DEFAULT '0' COMMENT '分享数量',
  `comment_num` bigint(255) DEFAULT '0' COMMENT '评论数量',
  `play_num` bigint(20) DEFAULT '0' COMMENT '歌单播放次数',
  `song_num` bigint(20) DEFAULT '0' COMMENT '歌单歌曲数量',
  `platform_create_date` datetime DEFAULT NULL COMMENT '第三方歌单创建时间',
  `create_date` datetime DEFAULT NULL,
  `update_date` datetime DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

ここに画像の説明を挿入

1 つは、曲リストの分類情報を保存し、分類を通じて曲リスト リストを取得するために使用される分類
テーブルであり、もう 1 つは、クロールされた曲リスト データを保存するために使用される曲リスト テーブルです。

3. QQ 音楽プレイリスト クローラーを構築する

3.1 フレームワーク環境の初期化

feapderここではこの軽量フレームワークを使用しました

  • feapderクローラーフレームワークをインストールする
pip3 install feapder[all]
  • クローラープロジェクトを作成する
feapder create -p QQSpider
  • データベースと情報setting.py設定します。TDSQL-Credis
# # MYSQL
MYSQL_IP = "gz-xxxxxx"
MYSQL_PORT = 28671
MYSQL_DB = "questionnaire"
MYSQL_USER_NAME = "root"
MYSQL_USER_PASS = "123456"

# # REDIS
# # ip:port 多个可写为列表或者逗号隔开 如 ip1:port1,ip2:port2 或 ["ip1:port1", "ip2:port2"]
REDISDB_IP_PORTS = "x"
REDISDB_USER_PASS = "x"
REDISDB_DB = 7
  • インストールはrequirements.txtに依存します
feapder~=1.7.7
pycryptodome
Flask~=2.2.2
pillow~=9.2.0
requests-toolbelt
requests~=2.27.1
apscheduler~=3.9.1
js2py~=0.71
urllib3~=1.26.11
pytz~=2022.1
gevent~=21.12.0
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple

便宜上、これをshellプロジェクトのルート ディレクトリに書き込むことができます。

3.2 スパイダーの下に分類クローラーを作成する

  • カテゴリ.py
import feapder
import urllib.parse

from feapder import Request

from items.cateItem import CateItem


class CategorySpider(feapder.Spider):
    commonParams = {
    
    
        'g_tk': 1124214810,
        'loginUin': '0',
        'hostUin': 0,
        'inCharset': 'utf8',
        'outCharset': 'utf-8',
        'notice': 0,
        'platform': 'yqq.json',
        'needNewCode': 0,
    }

    apiHeader = {
    
    
        'referer': 'https://c.y.qq.com/',
        'host': 'c.y.qq.com'
    }

    domain = 'https://c.y.qq.com'

    def start_requests(self):
        url = "/splcloud/fcgi-bin/fcg_get_diss_tag_conf.fcg?" + self.getParams({
    
    
            'format': 'json',
            'outCharset': 'utf-8',
        })
        yield self.request(url, method="GET")

    def request(self, path, **kwargs):
        req = Request(self.domain + path, **kwargs)
        return self.downloadMidware(req)

    def downloadMidware(self, request):
        if request.url.startswith('https://y.qq.com/n/ryqq/playlist'):
            return request
        request.headers = self.apiHeader
        return request
    def getParams(self, params):
        data = params
        data.update(self.commonParams)
        return urllib.parse.urlencode(data)

    def validate(self, request, response):
        jsonData = response.json
        if jsonData['code'] != 0:
            raise Exception(jsonData['message'])
        return True

    def parse(self, request, response):
        jsonData = response.json
        for cate in jsonData['data']['categories']:
            cateName = cate['categoryGroupName']
            for item in cate['items']:
                cateItem = CateItem()
                cateItem.primary_key = item['categoryId']
                cateItem.title = item['categoryName']
                cateItem.type = "qq"
                cateItem.cate = cateName
                yield cateItem



if __name__ == "__main__":
    CategorySpider(redis_key="qq_category:spider").start()

ORMここでは、それを構成し、itmesディレクトリに作成しcateItem、それを使用してデータベース テーブルをマップする必要もあります。これは、ネイティブを作成せずに直接保存するのに便利です。SQL

  • items/cateItem.py
from feapder import Item
from feapder.utils import tools


class CateItem(Item):
    """
    This class was generated by feapder.
    command: feapder create -i spider_data.
    """
    __unique_key__ = ["title", "cate", "type", 'primary_key']  # 指定去重的key为 title、url,最后的指纹为title与url值联合计算的md5

    def __init__(self, *args, **kwargs):
        # self.id = None
        super().__init__(**kwargs)
        self.table_name = "cate"
        self.title = None
        self.cate = None
        self.primary_key = None
        self.type = None
        self.create_date = None
        self.update_date = None

    def pre_to_db(self):
        """
        入库前的处理
        """
        self.create_date = tools.format_time("刚刚")
        self.update_date = tools.format_time("刚刚")

  • テストを実行して分類データをクロールする

ここに画像の説明を挿入
すべてのデータがデータベースに入力されたことがわかります
ここに画像の説明を挿入

3.3 スパイダーの下に曲リスト クローラーを作成する

同様に、まずは曲リストテーブルを作成しましょうORM

  • items/playlistItem.py
from feapder import Item
from feapder.utils import tools


class PlaylistItem(Item):


    def __init__(self, *args, **kwargs):
        # self.id = None
        super().__init__(**kwargs)
        self.table_name = "playlist"
        self.title = None
        self.desc = None
        self.primary_key = None
        self.cate = None
        self.cate_id = None
        self.key_type = None
        self.thumb_img = None
        self.tag = None
        self.tag_id = None
        self.author = None
        self.author_id = None
        self.collect_num = None
        self.share_num = None
        self.comment_num = None
        self.play_num = None
        self.song_num = None
        self.platform_create_date = None
        self.create_date = None
        self.update_date = None

    def pre_to_db(self):
        """
        入库前的处理
        """
        self.create_date = tools.format_time("刚刚")
        self.update_date = tools.format_time("刚刚")

次にクローラーを作成します

  • スパイダー/playlist.py
import urllib.parse


import feapder
from feapder import Request
from feapder.db.mysqldb import MysqlDB

from items.playlistItem import PlaylistItem


class PlayListSpider(feapder.Spider):
    commonParams = {
    
    
        'g_tk': 1124214810,
        'loginUin': '0',
        'hostUin': 0,
        'inCharset': 'utf8',
        'outCharset': 'utf-8',
        'notice': 0,
        'platform': 'yqq.json',
        'needNewCode': 0,
    }

    apiHeader = {
    
    
        'referer': 'https://c.y.qq.com/',
        'host': 'c.y.qq.com'
    }

    domain = 'https://c.y.qq.com'

    def start_requests(self):
        db = MysqlDB()
        cateList = db.find(sql="select * from cate where type = 'qq'", to_json=True)
        for cate in cateList:
            yield self.getPlaylistByCateId(cate['primary_key'], cate['title'])

    def getPlaylistByCateId(self, cateId, cateTitle, page=0, limit=50, sortId=5):
        sin = +page * +limit
        ein = +limit * (+page + 1) - 1
        params = self.getParams({
    
    
            'format': 'json',
            'outCharset': 'utf-8',
            'picmid': 1,
            'categoryId': cateId,
            'sortId': sortId,
            'sin': sin,
            'ein': ein,
        })
        url = "/splcloud/fcgi-bin/fcg_get_diss_by_tag.fcg?" + params
        return self.request(url, method="GET", page=page, limit=limit, cateId=cateId, cateTitle=cateTitle)

    def getParams(self, params):
        data = params
        data.update(self.commonParams)
        return urllib.parse.urlencode(data)
    # 构造请求
    def request(self, path, **kwargs):
        req = Request(self.domain + path, **kwargs)
        return self.downloadMidware(req)

    # 构造请求头
    def downloadMidware(self, request):
        if request.url.startswith('https://y.qq.com/n/ryqq/playlist'):
            return request
        request.headers = self.apiHeader
        return request

    def validate(self, request, response):
        jsonData = response.json
        if jsonData['code'] != 0:
            raise Exception(jsonData['message'])
        return True

    def parse(self, request, response):
        jsonData = response.json

        playlist = jsonData['data']['list']
        for item in playlist:
            playlist = PlaylistItem()
            playlist.title = item.get('dissname')
            playlist.thumb_img = item.get('imgurl')
            playlist.create_date = item.get('createtime')
            playlist.primary_key = item.get('dissid')
            playlist.desc = item.get('introduction')
            playlist.play_num = item.get('listennum')
            playlist.cate = request.cateTitle

            yield playlist

        # 分页处理
        if len(playlist) != 0:
            yield self.getPlaylistByCateId(request.cateId, request.cateTitle, request.page + 1, request.limit)

        # 通过分类id获取歌单列表


if __name__ == "__main__":
    PlayListSpider(redis_key="qq_playlist:spider").start()

クローラーを実行すると、データベースのスループット レートが非常に高く、しばらくすると数千のデータが生成されることがわかります。

ここに画像の説明を挿入

ここに画像の説明を挿入

4. データベースのステータスを観察する

クローリング処理中は、データベースがアプリケーションのボトルネックになるのではないかと常に心配していましたが、予想外に、TDSQL-C の最小構成のパフォーマンスも非常に強力で、その間、内蔵の監視アラームを通じて、第 2 レベルのパフォーマンス変動を観察するのにも非常に便利です

ここに画像の説明を挿入
次に、TDSQL-Cその隣に別のツールがあります数据库智能管家。これは、オンラインの運用とメンテナンスに非常に有益なツールです。現在のインスタンスを確認できます: 例外、パフォーマンス傾向、リアルタイム セッション、低速 SQL 分析、SQL 最適化、監査ログ、など。

ここに画像の説明を挿入
ここに画像の説明を挿入
また、時間間隔に応じてヘルスレポートを作成してくれるので、データベースインスタンスのヘルスステータスを明確に把握できます。重要なプロジェクトについては、定期的なレポートを設定し、レポートの内容を電子メールで受け取ることができるため、コストを削減できます。私たちの運用と保守の負担

ここに画像の説明を挿入

要約する

このケースは主に、誰もがクラウドネイティブ データベースのTDSQL-C Serverless基本を理解することを目的としています。TDSQL-C Serverless通常のSql構文とほぼ同じであることがわかります。基本的に学習コストはなく、すぐに使用でき、すぐに使用できます。すぐに起動し、本当にシームレスで、非常に滑らかです。

この経験を踏まえて、いくつかの利点と私が遭遇したいくつかの問題もまとめましたので、それらを皆さん​​と共有し、技術的な選択に関するいくつかの提案を提供できればと思っています。

  • 利点としては次のようなものがあります。
  1. 高性能大容量ストレージMysql との完全互換スナップショットバックアップTDSQL-Cなどの機能は、まさに説明にあるとおりであり、その名にふさわしいものです。繰り返しません。それは多すぎます。
  2. 従来のデータベースを理解すると、実際、サーバーレスアーキテクチャを使用したデータベースは、中小企業にとってより良い選択肢となります。コストがかかり効率が向上します
  3. TDSQL-Cまた、さまざまな高トラフィックのシナリオに非常に簡単に対処できます。その中には、データベースのトラフィックを負荷分散するための非常にシンプルで使いやすい機能があります。グループ内に読み取り専用インスタンスのセットを設定することでRO、特定のルールに従って読み取り専用インスタンスにデータを送信すると、データベースの読み取り負荷容量が大幅に向上します。
  4. SQL製品としては比較的完成度が高く、非常に精緻に感じられますが、データベースを提供しながら、データベースを視覚的に管理することもでき、データベースのテーブルレベルの操作、リアルタイム監視、インスタンスのセッション管理、ウィンドウなどの操作をダウンロードせずに実現できます。データベース管理クライアント;同時に、インテリジェントな監視や健康管理分析などの補助ツールもあり、私のような怠け者に非常に適しています。
  • いくつかの小さな問題が発生しました。
  1. このプログラムを Tencent Cloud サーバーにデプロイするときに、内部ネットワーク アドレスを使用してTDSQL-C データベースに接続できないことがわかりました。パブリック ネットワークでも問題ありませんが、内部ネットワークの方が効率が高いのではないかと考え、確認してきました。 、そして最後にドキュメントからオリジナルの軽量タイプはイントラネットアドレスを介してアクセスするためにTDSQL-C MySQLバージョンに直接接続することができず、相互通信にはクラウドネットワークが使用されることがインターネットでわかります

ここに画像の説明を挿入

  1. データベースのストレス テスト中に、 が表示されToo many connections、追跡調査により、データベースへのデフォルトの接続数が次のとおりであることが判明しました。80

ここに画像の説明を挿入
後でデフォルト値を変更した後、その値は再び表示されなくなりました。
ここに画像の説明を挿入

参考文献

Tencent Cloud TDSQL-C 公式ドキュメント
feapder フレームワーク

おすすめ

転載: blog.csdn.net/qq_24694139/article/details/132277997