Platform-agnostic reference shared by all server-connection-* and sdk-patterns-* skills.
Durability controls how many nodes must acknowledge a write before it is considered successful. Higher durability = stronger guarantees, higher latency.
| Level | Guarantee | Latency |
|---|---|---|
None |
Acknowledged by active node memory | Lowest |
Majority |
Acknowledged by majority of replicas in memory | Low |
MajorityAndPersistActive |
Majority in memory + persisted on active node | Medium |
PersistToMajority |
Persisted on majority of nodes | Highest |
from couchbase.durability import DurabilityLevel
from couchbase.options import UpsertOptions
# Majority durability (recommended for most production writes)
collection.upsert(
"order_1001",
{"status": "confirmed"},
UpsertOptions(durability=DurabilityLevel.MAJORITY)
)
# Persist to majority (financial transactions, critical data)
collection.upsert(
"payment_abc",
{"amount": 99.99, "status": "settled"},
UpsertOptions(durability=DurabilityLevel.PERSIST_TO_MAJORITY))
)collection.upsert(
"order_1001",
JsonObject.create().put("status", "confirmed"),
UpsertOptions.upsertOptions()
.durability(DurabilityLevel.MAJORITY)
);await collection.upsert("order_1001", { status: "confirmed" }, {
durability: couchbase.DurabilityLevel.Majority
});_, err = collection.Upsert("order_1001", map[string]interface{}{"status": "confirmed"},
&gocb.UpsertOptions{
DurabilityLevel: gocb.DurabilityLevelMajority,
})await collection.UpsertAsync("order_1001", new { status = "confirmed" },
new UpsertOptions().Durability(DurabilityLevel.Majority));use couchbase::options::kv_options::UpsertOptions;
use couchbase::DurabilityLevel;
collection.upsert(
"order_1001",
serde_json::json!({"status": "confirmed"}),
Some(UpsertOptions::new().durability(DurabilityLevel::Majority)),
).await?;collection.upsert(
"order_1001",
JsonObject.create.put("status", "confirmed"),
UpsertOptions().durability(DurabilityLevel.Majority)
).get$options = new \Couchbase\UpsertOptions();
$options->durabilityLevel(\Couchbase\DurabilityLevel::MAJORITY);
$collection->upsert("order_1001", ["status" => "confirmed"], $options);options = Couchbase::Options::Upsert.new
options.durability_level = :majority
collection.upsert("order_1001", { status: "confirmed" }, options)None— caches, sessions, ephemeral data where loss is acceptableMajority— standard application writes; survives node failureMajorityAndPersistActive— important data where active node disk failure is a concernPersistToMajority— financial transactions, audit logs, data that must survive multi-node failure
Durability and transactions: SDK transactions use Majority durability by default. Override via TransactionConfig.
Three replicas disables durability: setting 3 replicas on a bucket disables sync writes (durable writes). Keep replicas at 1 or 2 for production workloads that require durability.