{"id":26577,"date":"2026-09-25T14:35:44","date_gmt":"2026-09-25T21:35:44","guid":{"rendered":"https:\/\/www.pingcap.com\/?post_type=article&#038;p=26577"},"modified":"2026-09-25T14:35:45","modified_gmt":"2026-09-25T21:35:45","slug":"optimizing-multi-tenant-data-architecture-with-tidb","status":"publish","type":"article","link":"https:\/\/www.pingcap.com\/ko\/article\/optimizing-multi-tenant-data-architecture-with-tidb\/","title":{"rendered":"Choosing a Multi-Tenant Database Architecture With TiDB"},"content":{"rendered":"<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Key_Takeaways\"><\/span><strong>\ud575\uc2ec \uc694\uc57d<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Two models dominate inside one cluster: schema-per-tenant and shared schema with a tenant ID column. A cluster per tenant is the third, heaviest option.<\/li>\n\n\n\n<li>Schema-per-tenant buys stronger isolation at higher operational cost; shared schema is cheaper but makes every query responsible for tenant filtering.<\/li>\n\n\n\n<li>In TiDB, placement policies isolate a tenant\u2019s storage and resource groups cap its compute, whichever model you choose.<\/li>\n\n\n\n<li>TiDB has no row-level security, so shared-schema isolation lives in application code or tenant-filtered views.<\/li>\n<\/ul>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Picking the wrong tenant isolation model early is expensive to undo later: migrating thousands of live tenants from a shared schema to dedicated ones, or the reverse, means rewriting data access patterns under production load. This guide lays out the decision before you are stuck with it, using <a href=\"https:\/\/www.pingcap.com\/ko\/what-is-tidb\/\">\ud2f0DB<\/a> as the reference architecture.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"What_Are_the_Main_Multi-Tenant_Database_Architecture_Models\"><\/span><strong>What Are the Main Multi-Tenant Database Architecture Models?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Two models cover most multi-tenant systems running in a single cluster. In schema-per-tenant, each tenant gets a dedicated schema. In shared schema, all tenants share one set of tables and every row carries a tenant identifier. Schema-per-tenant gives stronger isolation at higher operational overhead; shared schema costs less to run but makes every query responsible for filtering by tenant.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Two clarifications keep the comparison honest. In TiDB, as in MySQL, a schema and a database are the same object, so schema-per-tenant means database-per-tenant. And a third model sits beyond both: a dedicated cluster per tenant, which gives the strongest isolation and the highest cost, and usually only makes sense for tenants whose contracts demand it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Key_Challenges_of_Multi-Tenant_Environments\"><\/span><strong>Key Challenges of Multi-Tenant Environments<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Building a multi-tenant architecture means balancing data isolation against resource sharing: designing for collective efficiency while keeping tenant data secure and latency low. Scaling to fit uneven tenant workloads without overprovisioning is a second challenge. High availability matters more than in a single-tenant system, since one failure can hit every tenant sharing that infrastructure at once.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Compliance requirements often force the decision more than technical preference does. Some industries and customer contracts require demonstrable data isolation at the infrastructure level, not just the application level, which rules out shared schema regardless of its lower operational cost. Find out which prospective tenants carry that requirement before you build, not after a large customer\u2019s security review fails.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Schema-Per-Tenant_vs_Shared_Schema_at_a_Glance\"><\/span><strong>Schema-Per-Tenant vs Shared Schema at a Glance<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Attribute<\/strong><\/th><th><strong>Schema-Per-Tenant<\/strong><\/th><th><strong>Shared Schema<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Data isolation<\/td><td>Separate database per tenant; privileges granted per database<\/td><td>Tenants share tables; isolation depends on tenant ID filtering<\/td><\/tr><tr><td>Tenant onboarding<\/td><td>Create a database and run the schema<\/td><td>Insert rows under a new tenant ID<\/td><\/tr><tr><td>Schema changes<\/td><td>Every DDL change runs once per tenant database<\/td><td>One DDL change covers every tenant<\/td><\/tr><tr><td>Storage isolation in TiDB<\/td><td>Placement policy per database<\/td><td>Placement policy per partition, if you partition by tenant ID<\/td><\/tr><tr><td>Compute isolation in TiDB<\/td><td>Resource group per tenant user<\/td><td>Resource group per session or statement<\/td><\/tr><tr><td>Compliance fit<\/td><td>Strong: isolation is visible in the schema<\/td><td>Weaker: isolation is enforced in code<\/td><\/tr><tr><td>Operational overhead<\/td><td>Grows with tenant count<\/td><td>Stays roughly flat as tenants grow<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_TiDBs_Architecture_Supports_Both_Isolation_Models\"><\/span><strong>How TiDB&#8217;s Architecture Supports Both Isolation Models<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Neither model requires a different database, only a different configuration of the same architecture. Three TiDB features do the work, and it helps to know which kind of isolation each one provides.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Placement Policies Isolate Storage<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Schema-per-tenant maps naturally onto <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/placement-rules-in-sql\/\">Placement Rules in SQL<\/a>. Label a set of TiKV nodes, define a policy that targets those labels, and attach it to a tenant\u2019s database:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE PLACEMENT POLICY tenant_dedicated CONSTRAINTS = \"&#91;+pool=dedicated]\";\nCREATE DATABASE tenant_acme PLACEMENT POLICY = tenant_dedicated;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Attach the policy when you create the database so its tables inherit it. Attaching a policy to an existing database sets the default for tables created afterward, not for tables already there.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That tenant\u2019s data now lives on its own TiKV nodes, so its disk I\/O stops competing with everyone else\u2019s. What placement does not isolate is the SQL layer: every tenant\u2019s queries still run through the same TiDB servers.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Resource Groups Cap Compute<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">That gap is what <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/tidb-resource-control\/\">resource groups<\/a> close. Each group gets a quota in Request Units, and a tenant that exhausts its quota queues instead of taking capacity from others. Resource groups work under either model: bind a group to a tenant\u2019s database user in schema-per-tenant, or per session or statement when a shared-schema application pools connections under one user. The companion <a href=\"https:\/\/www.pingcap.com\/ko\/article\/mastering-multi-tenancy-in-tidb-for-cloud-applications\/\">monitoring guide<\/a> covers quotas and runaway query rules in depth.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Shared Schema Depends on Application Discipline<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Shared schema has no physical boundary between tenants, and TiDB has no row-level security to draw one. TiDB privileges stop at the database, table, and (from v8.5.6) column level. Tenant isolation therefore lives in two places: every application query filters by tenant ID, and read-only access for a tenant can go through a view filtered to that tenant:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE VIEW app.acme_orders AS SELECT * FROM app.orders WHERE tenant_id = 'acme';\nGRANT SELECT ON app.acme_orders TO 'acme_reporting'@'%';\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Key design matters too. Lead the primary key and composite indexes with tenant_id, so each tenant\u2019s rows sit next to each other in TiKV\u2019s key space. A tenant\u2019s queries then scan a narrow key range instead of touching Regions across the whole table.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Onboarding Speed as a Deciding Test<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.pingcap.com\/ko\/case-study\/kimi-2-6-agent-hosting-platform-tidb-cloud\/\">Kimi<\/a> uses a variation of the schema-per-tenant model at large scale, provisioning isolated databases for millions of AI-generated applications in about a second each. That only works because database creation runs inside Kimi\u2019s automated pipeline, not as a manual step.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That speed requirement is a useful test for any product. If a new tenant needs to exist within seconds, the deployment pipeline has to create databases automatically from day one, not as a later add-on. Shared schema sidesteps the problem, since onboarding a tenant is just inserting rows under a new tenant ID, which is why it remains the more common starting point for products that have not yet proven a need for stricter isolation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"The_Model_You_Choose_Shapes_Everything_After\"><\/span><strong>The Model You Choose Shapes Everything After<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Schema-per-tenant and shared schema both run on the same TiDB architecture; the difference is configuration, not database choice. Once tenants are live, the work shifts to finding and containing noisy neighbors, which the monitoring guide covers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/tidbcloud.com\/free-trial\/\">Start a free TiDB Cloud Starter cluster<\/a> to prototype both models before committing to one.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Multi-Tenant_Database_Architecture_FAQs\"><\/span><strong>Multi-Tenant Database Architecture FAQs<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Schema-Per-Tenant or Shared Schema: Which Should I Choose?<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Choose schema-per-tenant for strict compliance or security requirements.<\/li>\n\n\n\n<li>Choose shared schema for lower operational overhead at high tenant counts.<\/li>\n\n\n\n<li>Schema-per-tenant costs more in infrastructure and schema-change effort.<\/li>\n\n\n\n<li>Shared schema needs disciplined tenant filtering in every query.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Can I Migrate From Shared Schema to Schema-Per-Tenant Later?<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Yes, but each tenant you split out needs its own data migration.<\/li>\n\n\n\n<li>Plan for the possibility even if you start with shared schema.<\/li>\n\n\n\n<li>A hybrid is common: dedicated databases for large tenants only.<\/li>\n\n\n\n<li>You can apply placement policies incrementally as tenants move.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Does TiDB Support Row-Level Security?<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>No. Privileges apply at cluster, database, table, and column level.<\/li>\n\n\n\n<li>Column-level privileges arrived in v8.5.6; rows have no equivalent.<\/li>\n\n\n\n<li>Filter by tenant ID in application queries.<\/li>\n\n\n\n<li>Grant read access through tenant-filtered views where a tenant needs direct access.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Can I Pin a Tenant&#8217;s Data to Dedicated Nodes in TiDB?<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Yes, with Placement Rules in SQL.<\/li>\n\n\n\n<li>Label TiKV nodes, create a policy targeting the label, and attach it to the tenant\u2019s database.<\/li>\n\n\n\n<li>In shared schema, partition by tenant ID and attach policies per partition.<\/li>\n\n\n\n<li>Placement isolates storage; pair it with a resource group to cap compute.<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Explore multi-tenant architectures in cloud computing and how TiDB enhances scalability, security, and cost efficiency.<\/p>","protected":false},"author":218,"featured_media":0,"template":"","class_list":["post-26577","article","type-article","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Multi-Tenant Database Architecture Models: Schemas Compared<\/title>\n<meta name=\"description\" content=\"Compare schema-per-tenant and shared-schema multi-tenant database architecture models, with TiDB\u2019s isolation and scaling tradeoffs for each.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.pingcap.com\/ko\/article\/optimizing-multi-tenant-data-architecture-with-tidb\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Multi-Tenant Database Architecture Models: Schemas Compared\" \/>\n<meta property=\"og:description\" content=\"Compare schema-per-tenant and shared-schema multi-tenant database architecture models, with TiDB\u2019s isolation and scaling tradeoffs for each.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.pingcap.com\/ko\/article\/optimizing-multi-tenant-data-architecture-with-tidb\/\" \/>\n<meta property=\"og:site_name\" content=\"TiDB\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/pingcap2015\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-25T21:35:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/static.pingcap.com\/files\/2024\/09\/11005522\/Homepage-Ad.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1440\" \/>\n\t<meta property=\"og:image:height\" content=\"714\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:label1\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data1\" content=\"6\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.pingcap.com\\\/article\\\/optimizing-multi-tenant-data-architecture-with-tidb\\\/\",\"url\":\"https:\\\/\\\/www.pingcap.com\\\/article\\\/optimizing-multi-tenant-data-architecture-with-tidb\\\/\",\"name\":\"Multi-Tenant Database Architecture Models: Schemas Compared\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.pingcap.com\\\/#website\"},\"datePublished\":\"2026-09-25T21:35:44+00:00\",\"dateModified\":\"2026-09-25T21:35:45+00:00\",\"description\":\"Compare schema-per-tenant and shared-schema multi-tenant database architecture models, with TiDB\u2019s isolation and scaling tradeoffs for each.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.pingcap.com\\\/article\\\/optimizing-multi-tenant-data-architecture-with-tidb\\\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.pingcap.com\\\/article\\\/optimizing-multi-tenant-data-architecture-with-tidb\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.pingcap.com\\\/article\\\/optimizing-multi-tenant-data-architecture-with-tidb\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.pingcap.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Articles\",\"item\":\"https:\\\/\\\/www.pingcap.com\\\/article\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Choosing a Multi-Tenant Database Architecture With TiDB\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.pingcap.com\\\/#website\",\"url\":\"https:\\\/\\\/www.pingcap.com\\\/\",\"name\":\"TiDB\",\"description\":\"TiDB | SQL at Scale\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.pingcap.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.pingcap.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.pingcap.com\\\/#organization\",\"name\":\"PingCAP\",\"url\":\"https:\\\/\\\/www.pingcap.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\\\/\\\/www.pingcap.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/static.pingcap.com\\\/files\\\/2021\\\/11\\\/pingcap-logo.png\",\"contentUrl\":\"https:\\\/\\\/static.pingcap.com\\\/files\\\/2021\\\/11\\\/pingcap-logo.png\",\"width\":811,\"height\":232,\"caption\":\"PingCAP\"},\"image\":{\"@id\":\"https:\\\/\\\/www.pingcap.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/facebook.com\\\/pingcap2015\",\"https:\\\/\\\/x.com\\\/PingCAP\",\"https:\\\/\\\/linkedin.com\\\/company\\\/pingcap\",\"https:\\\/\\\/youtube.com\\\/channel\\\/UCuq4puT32DzHKT5rU1IZpIA\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Multi-Tenant Database Architecture Models: Schemas Compared","description":"Compare schema-per-tenant and shared-schema multi-tenant database architecture models, with TiDB\u2019s isolation and scaling tradeoffs for each.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.pingcap.com\/ko\/article\/optimizing-multi-tenant-data-architecture-with-tidb\/","og_locale":"ko_KR","og_type":"article","og_title":"Multi-Tenant Database Architecture Models: Schemas Compared","og_description":"Compare schema-per-tenant and shared-schema multi-tenant database architecture models, with TiDB\u2019s isolation and scaling tradeoffs for each.","og_url":"https:\/\/www.pingcap.com\/ko\/article\/optimizing-multi-tenant-data-architecture-with-tidb\/","og_site_name":"TiDB","article_publisher":"https:\/\/facebook.com\/pingcap2015","article_modified_time":"2026-09-25T21:35:45+00:00","og_image":[{"width":1440,"height":714,"url":"https:\/\/static.pingcap.com\/files\/2024\/09\/11005522\/Homepage-Ad.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@PingCAP","twitter_misc":{"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"6\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.pingcap.com\/article\/optimizing-multi-tenant-data-architecture-with-tidb\/","url":"https:\/\/www.pingcap.com\/article\/optimizing-multi-tenant-data-architecture-with-tidb\/","name":"Multi-Tenant Database Architecture Models: Schemas Compared","isPartOf":{"@id":"https:\/\/www.pingcap.com\/#website"},"datePublished":"2026-09-25T21:35:44+00:00","dateModified":"2026-09-25T21:35:45+00:00","description":"Compare schema-per-tenant and shared-schema multi-tenant database architecture models, with TiDB\u2019s isolation and scaling tradeoffs for each.","breadcrumb":{"@id":"https:\/\/www.pingcap.com\/article\/optimizing-multi-tenant-data-architecture-with-tidb\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.pingcap.com\/article\/optimizing-multi-tenant-data-architecture-with-tidb\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.pingcap.com\/article\/optimizing-multi-tenant-data-architecture-with-tidb\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.pingcap.com\/"},{"@type":"ListItem","position":2,"name":"Articles","item":"https:\/\/www.pingcap.com\/article\/"},{"@type":"ListItem","position":3,"name":"Choosing a Multi-Tenant Database Architecture With TiDB"}]},{"@type":"WebSite","@id":"https:\/\/www.pingcap.com\/#website","url":"https:\/\/www.pingcap.com\/","name":"\ud2f0DB","description":"TiDB | SQL at Scale","publisher":{"@id":"https:\/\/www.pingcap.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.pingcap.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.pingcap.com\/#organization","name":"PingCAP","url":"https:\/\/www.pingcap.com\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/","url":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","contentUrl":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","width":811,"height":232,"caption":"PingCAP"},"image":{"@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/pingcap2015","https:\/\/x.com\/PingCAP","https:\/\/linkedin.com\/company\/pingcap","https:\/\/youtube.com\/channel\/UCuq4puT32DzHKT5rU1IZpIA"]}]}},"card_markup":"        <a class=\"card-article\" href=\"https:\/\/www.pingcap.com\/ko\/article\/optimizing-multi-tenant-data-architecture-with-tidb\/\">            <h3>Choosing a Multi-Tenant Database Architecture With TiDB<\/h3>            <p>Explore multi-tenant architectures in cloud computing and how TiDB enhances scalability, security, and cost efficiency.<\/p>        <\/a>","_links":{"self":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/article\/26577","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/article"}],"about":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/types\/article"}],"author":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/users\/218"}],"wp:attachment":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/media?parent=26577"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}