Семантика значений фрагментов "t" и "i" в команде mongo db.printShardingStatus - PullRequest
3 голосов
/ 19 декабря 2011

Команда MongoDB db.printShardingStatus, при запуске из процесса mongos, печатает некоторые json, соответствующие текущему состоянию доступных многораздельных баз данных.

Например,

--- Sharding Status --- 
  sharding version: { "_id" : 1, "version" : 3 }

  shards:
{  "_id" : "rs_a",  "host" : "rs_a/host1:27018,host2:27018" }
{  "_id" : "rs_b",  "host" : "rs_b/host3:27018,host4:27018" }
  databases:
{  "_id" : "admin",  "partitioned" : false,  "primary" : "config" }
{  "_id" : "test",  "partitioned" : false,  "primary" : "rs_a" }
{  "_id" : "users",  "partitioned" : true,  "primary" : "rs_a" }
        database.Coll chunks:
                        rs_b    4
                        rs_a    6
                    { "scope" : { $minKey : 1 } } -->> { "scope" : "0014669e-d4b0-45e8-b4ee-0f5de07f86d5" } on : rs_b { "t" : 2000, "i" : 0 }
                    { "scope" : "0014669e-d4b0-45e8-b4ee-0f5de07f86d5" } -->> { "scope" : "02726c5a-5f2c-4d6e-b124-b258aabcd3a0" } on : rs_b { "t" : 3000, "i" : 0 }
                    { "scope" : "02726c5a-5f2c-4d6e-b124-b258aabcd3a0" } -->> { "scope" : "0275fb19-7cec-4dfc-9150-97ceab4f23b5" } on : rs_b { "t" : 4000, "i" : 0 }
                    { "scope" : "0275fb19-7cec-4dfc-9150-97ceab4f23b5" } -->> { "scope" : "0847aae5-c41b-4470-8a9f-de90f2cb2c1e" } on : rs_b { "t" : 5000, "i" : 0 }
                    { "scope" : "0847aae5-c41b-4470-8a9f-de90f2cb2c1e" } -->> { "scope" : "084e756f-c4b0-4569-bb1e-37d7220b30c9" } on : rs_a { "t" : 5000, "i" : 1 }
                    { "scope" : "084e756f-c4b0-4569-bb1e-37d7220b30c9" } -->> { "scope" : "0894dd26-6b6f-4382-bdbd-d05199e913b9" } on : rs_a { "t" : 1000, "i" : 13 }
                    { "scope" : "0894dd26-6b6f-4382-bdbd-d05199e913b9" } -->> { "scope" : "08d0ffcb-c273-4bb7-8951-5f19e95b2fe4" } on : rs_a { "t" : 5000, "i" : 2 }
                    { "scope" : "08d0ffcb-c273-4bb7-8951-5f19e95b2fe4" } -->> { "scope" : "102282f1-9049-4a47-ac06-07d62399dd60" } on : rs_a { "t" : 5000, "i" : 4 }
                    { "scope" : "102282f1-9049-4a47-ac06-07d62399dd60" } -->> { "scope" : "ffe9ada1-367d-4358-ac98-d21a7194ee5f" } on : rs_a { "t" : 5000, "i" : 5 }
                    { "scope" : "ffe9ada1-367d-4358-ac98-d21a7194ee5f" } -->> { "scope" : { $maxKey : 1 } } on : rs_a { "t" : 1000, "i" : 4 }

Мне особенно любопытноо том, что значения { "t" : 5000, "i" : 4 } означают для каждого куска.Я не могу найти официальную документацию.

Ответы [ 2 ]

2 голосов
/ 20 декабря 2011

Значения «t» и «i» являются основной и вспомогательной версией фрагмента. «t» увеличивается, если кусок перемещается вручную или балансировщиком. В этот момент «я» будет сброшен на «0». «i» будет увеличено, если фрагмент будет разделен.

Тот факт, что ваше "t" является значением, подобным метке времени, вероятно, MongoDB пытается присвоить ему значение, которое, как он знает, является функционально правильным (макс. Для кластера). Я никогда не видел такого значения для «т» в производственных средах. (РЕДАКТИРОВАТЬ <- предположение) </p>

По популярному запросу соответствующие биты кода на сервере и полное объяснение того, почему он выглядит так:

https://github.com/mongodb/mongo/blob/master/s/util.h (ShardChunkVersion) https://github.com/mongodb/mongo/blob/master/s/d_split.cpp (строка 709 и далее) https://github.com/mongodb/mongo/blob/master/s/d_migrate.cpp (строка 963 и далее)

Старшие и младшие версии являются целыми числами. "t" выглядит так, как будто оно преобразовано в / вставлено как метка времени на выходе, следовательно, умножение на 1000 (https://github.com/mongodb/mongo/blob/master/bson/bsonelement.h строка 357)

1 голос
/ 19 декабря 2011

Это отметка времени bson , код типа \x11.

Он состоит из отметки времени эпохи t и приращения i. По сути, отметка времени является отметкой времени Unix, и приращение используется, если в течение одной секунды происходит несколько операций. Документы mongodb содержат некоторые подробные сведения об этом, включая специальную семантику null для них.

...