多租户应用程序
在本教程中,我们将使用示例广告分析数据集来演示如何使用 Citus
来支持您的多租户应用程序。
注意
本教程假设您已经安装并运行了
Citus
。 如果您没有运行Citus
,则可以使用单节点Citus
中的选项之一在本地设置Citus
。https://docs.citusdata.com/en/v10.2/installation/single_node.html#development
数据模型和示例数据
我们将演示为广告分析应用程序构建数据库,公司可以使用该应用程序来查看、更改、分析和管理他们的广告和活动(请参阅示例应用程序)。这样的应用程序具有典型的多租户系统的良好特性。 来自不同租户的数据存储在一个中央数据库中,每个租户都有自己数据的独立视图。
我们将使用三个 Postgres 表来表示这些数据。 要开始使用,您需要下载这些表的示例数据:
curl https://examples.citusdata.com/tutorial/companies.csv > companies.csv
curl https://examples.citusdata.com/tutorial/campaigns.csv > campaigns.csv
curl https://examples.citusdata.com/tutorial/ads.csv > ads.csv
如果您使用 Docker,则应使用 docker cp
命令将文件复制到 Docker
容器中。
docker cp companies.csv citus:.
docker cp campaigns.csv citus:.
docker cp ads.csv citus:.
创建表
首先,您可以先使用 psql
连接到 Citus coordinator
。
如果您使用原生 Postgres
,如我们的单节点 Citus
指南中安装的那样,coordinator
节点将在端口 9700
上运行。
psql -p 9700
如果您使用 Docker,您可以通过使用 docker exec
命令运行 psql
进行连接:
docker exec -it citus_master psql -U postgres
然后,您可以使用标准 PostgreSQL CREATE TABLE
命令创建表。
CREATE TABLE companies (
id bigint NOT NULL,
name text NOT NULL,
image_url text,
created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL
);
CREATE TABLE campaigns (
id bigint NOT NULL,
company_id bigint NOT NULL,
name text NOT NULL,
cost_model text NOT NULL,
state text NOT NULL,
monthly_budget bigint,
blacklisted_site_urls text[],
created_at timestamp without time z