Apache Kudu unterstützt derzeit keine AUTO_INCREMENT
Spalten. Es gibt eine FAQ entry auf der Kudu-Website, die dies erwähnt.
Kudu ist eine verteilte Speicher-Engine, die sich darauf konzentriert, ein guter analytischer Speicher (OLAP) zu sein und kein guter transaktionaler Speicher (OLTP) zu sein. Dies zeigt sich in den Funktionen, die wir bisher priorisiert haben. Dies ist ein gutes Beispiel dafür.
Da wir nicht versuchen, ein OLTP-Speicher zu sein, implementiert Kudu noch keine Transaktionen mit mehreren Zeilen oder mehreren Knoten. Daher wäre es schwierig, einen einfachen Zähler für Primärschlüssel zu implementieren. zum Beispiel wenn die Tabelle auf dem Primärschlüssel hash-partitioniert ist. Wir benötigen einen zentralen Transaktionskoordinator, der derzeit nicht existiert.
Um Ihre zweite Frage zu beantworten, ist das Abrufen einer Zeilenanzahl in Kudu momentan etwas teuer, da die Indexspalte jedes Tablets gescannt und die Gesamtanzahl addiert wird. Apache Impala/Apache Spark SQL macht dies transparent für Sie, wenn Sie eine SELECT COUNT(*) from kudu_table
tun, aber ich würde derzeit nicht darauf zurückgreifen, um eine neue ID zuzuweisen, da Impala derzeit das Scannen von einem etwas altmodischen Kudu-Replikat erlaubt, das möglicherweise ausgeschaltet ist auf die Anzahl der Zeilen.
Das Beste, was Sie jetzt tun können, ist auf einen externen Mechanismus angewiesen, um Zeilen-IDs zuzuweisen.
Quelle: Ich bin ein PMC-Mitglied auf Apache Kudu.
Welche API sind Sie? –