在从MySQL迁移到Citus集群期间,我使用了range分发方法.迁移已完成,但现在我想将分配方法更改为hash.
有没有办法从改变分配方法range,以hash用于在它已经数据现有的表?
我想出了以下程序,但我不确定它是否有效:
minvalue和maxvalue列pg_dist_shardpg_dist_partition从表r到hCOMMIT;Acording到了西特斯文件,很容易使用单一柱分配表:
SELECT master_create_distributed_table('github_events', 'created_at', 'append');
Run Code Online (Sandbox Code Playgroud)
有没有办法使用多列分发表?例如,类似于:
SELECT master_create_distributed_table('github_events', 'user_id,site_id', 'append');
Run Code Online (Sandbox Code Playgroud) Citus上主键的最佳方法是什么?
UUID: 与身份/序列号相反,不需要锁定。但存储成本高昂,最终查询+会导致碎片。
序列 - 身份 在创建实体时导致瓶颈。存储和查询成本更低,速度更快+没有碎片。
如果我们想要规模化的项目,使用 UUID 会更好吗?
对于分片,建议最终使用 UUID。
它在Citus上的表现如何?
我将给出一个架构示例:
User
UserId uuid/bigint?
Device
Device Id uuid/bigint?
UserId (here for the distribution key)
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我们想要根据UserId来分发用户数据,例如他的Devices。主键 id 类型应该是什么?如果 UUID 就是答案,我们是否应该担心节点中的碎片?
我正在尝试将 citus 数据(https://www.citusdata.com/)与 Django 一起使用。
到目前为止,除了尝试save已保存的模型之外,大多数内容都正常:
NotSupportedError: modifying the partition value of rows is not allowed
Run Code Online (Sandbox Code Playgroud)
这是因为 django 始终包含更新 SQL 中的每个字段,即使该字段没有更改。
在 Citus 中,您必须选择一个字段作为分区字段,然后就无法更改它。因此,当我保存对象时,它不喜欢分区键位于更新语句中,即使它没有更改。
我知道你可以将update_fields关键字 arg 传递给该save方法,但我想知道我是否可以以某种方式告诉 django 在更新时永远不要包含字段?
我有一个现有的关系Postgresql数据库.一些表包含非常胖的blob,它们作为NoSQL文档会更好.这将大大减轻我们的关系数据库.
因此,我们考虑将这些blob-table移动到像CosmosDB或MongoDB这样的NoSQL解决方案中.但是,纯关系表存在外键依赖关系,这使得将这些表移出到自己的数据库中变得复杂.
我发现PSQL本身支持存储文档并且可以分发.我到目前为止看到的解决方案是CitusData和Postgres XL.对于那些使用它们的人,他们如何比较?
有没有人遇到过类似的情况?你有没有分成NoSQL数据库?或者有没有人将他们的PSQL分区为关系和NoSQL部分?那是怎么回事?事后你会建议你注意什么?
我正在尝试第一次使用citusdb,并在下载页面中,他们提供了入门指南,所以我正在关注它.
首先,我在本地计算机上尝试此操作,并在此处使用入门指南第三点的示例数据.
在那里,他们提供修改,psql以便您可以使用它citusdb.首先我连接到这个:
/opt/citusdb/2.0/bin/psql -U postgres -h localhost -d postgres
Run Code Online (Sandbox Code Playgroud)
然后,当我尝试创建数据库时,指南说您可以使用保留字DISTRIBUTE,但是当我在指南上尝试命令时:
CREATE TABLE customer_reviews
(
customer_id TEXT not null,
review_date DATE not null,
review_rating INTEGER not null,
review_votes INTEGER,
review_helpful_votes INTEGER,
product_id CHAR(10) not null,
product_title TEXT not null,
product_sales_rank BIGINT,
product_group TEXT,
product_category TEXT,
product_subcategory TEXT,
similar_product_ids CHAR(10)[]
)
DISTRIBUTE BY APPEND (review_date);
Run Code Online (Sandbox Code Playgroud)
似乎psql不接受这个DISTRIBUTE词,因为它显示了一个syntax error at or near DISTRIBUTE
请帮助,如果有人使用过它,并知道问题是什么,也许它太明显了,但这是我第一次使用citusdb.
谢谢.
citus ×7
postgresql ×5
bigint ×1
database ×1
django ×1
mongodb ×1
nosql ×1
primary-key ×1
python ×1
uuid ×1