Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 文档路径是否与Firestore自动生成的随机ID有关?_Java_Google App Engine_Google Cloud Firestore_Id Generation - Fatal编程技术网

Java 文档路径是否与Firestore自动生成的随机ID有关?

Java 文档路径是否与Firestore自动生成的随机ID有关?,java,google-app-engine,google-cloud-firestore,id-generation,Java,Google App Engine,Google Cloud Firestore,Id Generation,如果我想在将文档保存到Firestore(无需编写自定义代码)之前知道文档的(随机)ID,我可以执行以下操作: String id = db.collection("collection-name").document().getId(); 如果我在上面的代码中给出“集合名称”,但使用该id将文档保存到集合“其他集合”,会有区别吗 换句话说,集合名称(或者更一般地说,文档的路径)是否与Firestore生成的随机ID有任何关系 Firestore ID的生成是否与中所述类似 以下代码对于自动生

如果我想在将文档保存到Firestore(无需编写自定义代码)之前知道文档的(随机)ID,我可以执行以下操作:

String id = db.collection("collection-name").document().getId();
如果我在上面的代码中给出
“集合名称”
,但使用该
id
将文档保存到集合
“其他集合”
,会有区别吗

换句话说,集合名称(或者更一般地说,文档的路径)是否与Firestore生成的随机ID有任何关系

Firestore ID的生成是否与中所述类似

以下代码对于自动生成Firestore文档的已知ID有多好:

private static SecureRandom RANDOMIZER = new SecureRandom();
.
.
.
byte[] randomId = new byte[120];
RANDOMIZER.nextBytes(randomId);
// Base64-encode randomId

Cloud Firestore生成的文档ID是客户端生成的,完全随机的,不依赖于您在其中生成它们的集合

如果您深入研究一下(开源)SDK,您可以自己看到这一点。例如,在Android SDK中,以下是:

因此,将ID生成留给:

哪些代表:

private static final int AUTO_ID_LENGTH=20;
私有静态最终字符串自动识别字母表=
“ABCDEFGHIJKLMNOPQRSTUVWXYZABCDFGHIJKLMNOPQRSTUVXYZ0123456789”;
私有静态最终随机兰德=新随机();
公共静态字符串autoId(){
StringBuilder=新的StringBuilder();
int maxRandom=AUTO_ID_ALPHABET.length();
对于(int i=0;i

如上所述:纯客户端随机性,具有足够的熵以确保全局唯一性。

云Firestore生成的文档ID是客户端生成的,完全随机,不依赖于您在其中生成它们的集合

如果您深入研究一下(开源)SDK,您可以自己看到这一点。例如,在Android SDK中,以下是:

因此,将ID生成留给:

哪些代表:

private static final int AUTO_ID_LENGTH=20;
私有静态最终字符串自动识别字母表=
“ABCDEFGHIJKLMNOPQRSTUVWXYZABCDFGHIJKLMNOPQRSTUVXYZ0123456789”;
私有静态最终随机兰德=新随机();
公共静态字符串autoId(){
StringBuilder=新的StringBuilder();
int maxRandom=AUTO_ID_ALPHABET.length();
对于(int i=0;i

如前所述:纯客户端随机性,具有足够的熵以确保全局唯一性。

此实现在统计上确保项目中不会发生ID冲突?熵从何而来?AFA我可以看到,只是
java.util.Random
的实现提供了熵。这个实现在统计上是确定的,以确保项目中没有ID冲突?熵从何而来?AFA我可以看到,正是
java.util.Random
的实现提供了熵。
final DocumentReference ref = document();
return ref.set(data)
public DocumentReference document() {
  return document(Util.autoId());
}
private static final int AUTO_ID_LENGTH = 20;

private static final String AUTO_ID_ALPHABET =
  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

private static final Random rand = new Random();

public static String autoId() {
  StringBuilder builder = new StringBuilder();
  int maxRandom = AUTO_ID_ALPHABET.length();
  for (int i = 0; i < AUTO_ID_LENGTH; i++) {
    builder.append(AUTO_ID_ALPHABET.charAt(rand.nextInt(maxRandom)));
  }
  return builder.toString();
}