From 7e581456669ee4e6817c93a278fb1c9a96dee863 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20Coss=C3=ADo?= Date: Thu, 7 Dec 2023 17:01:00 -0300 Subject: [PATCH] add image and make alert description smaller --- .../guides/distributed_deployment.md | 14 +++++++++----- qdrant-landing/static/docs/sharding-per-day.png | Bin 0 -> 18829 bytes 2 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 qdrant-landing/static/docs/sharding-per-day.png diff --git a/qdrant-landing/content/documentation/guides/distributed_deployment.md b/qdrant-landing/content/documentation/guides/distributed_deployment.md index 928cd1627..6431b5318 100644 --- a/qdrant-landing/content/documentation/guides/distributed_deployment.md +++ b/qdrant-landing/content/documentation/guides/distributed_deployment.md @@ -380,15 +380,19 @@ client ``` + +* When using custom sharding, IDs are only enforced to be unique within a shard key. This means that you can have multiple points with the same ID, if they have different shard keys. +This is a limitation of the current implementation, and is an anti-pattern that should be avoided because it can create scenarios of points with the same ID to have different contents. In the future, we plan to add a global ID uniqueness check. + Now you can target the operations to specific shard(s) by specifying the `shard_key` on any operation you do. Operations that do not specify the shard key will be executed on __all__ shards. +Another use-case would be to have shards that track the data chronologically, so that you can do more complex itineraries like uploading live data in one shard and archiving it once a certain age has passed. + +Sharding per day + ### Shard transfer method *Available as of v1.7.0* diff --git a/qdrant-landing/static/docs/sharding-per-day.png b/qdrant-landing/static/docs/sharding-per-day.png new file mode 100644 index 0000000000000000000000000000000000000000..05021c66add1ddc91169753e334664c279034181 GIT binary patch literal 18829 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 XV=A3$w>n!d9pqO^YKnylChz|XX1=9b literal 0 HcmV?d00001