Выбор сканирования диапазона по сравнению со сканированием по вашим c запросам действительно зависит от того, что вы запланировали для этих данных. Если вы выполните сканирование диапазона, то любые другие данные в этом префиксе «h1-r *» будут включены и не будут такими же производительными. Но если ЕДИНСТВЕННЫЕ строки, начинающиеся с "h1-r", являются теми, которые указаны c строк, то он будет работать аналогичным образом, и я бы рекомендовал использовать сканирование префиксов для упрощения вашего кода.
Вот код фрагменты для каждого способа, и в настоящее время мы работаем над их интеграцией в нашу документацию, но вы можете проверить больше на GitHub .
Сканирование префиксов:
try (BigtableDataClient dataClient = BigtableDataClient.create(projectId, instanceId)) {
Query query = Query.create(tableId).prefix("h1-r");
ServerStream<Row> rows = dataClient.readRows(query);
for (Row row : rows) {
// do something
}
} catch (IOException e) {
System.out.println(
"Unable to initialize service client, as a network error occurred: \n" + e.toString());
}
Добавление отдельных строк:
try (BigtableDataClient dataClient = BigtableDataClient.create(projectId, instanceId)) {
Query query = Query.create(tableId)
.rowKey("h1-r1-en")
.rowKey("h1-r1-es")
.rowKey("h1-r1-fr"); // Continue adding all your rows this way.
ServerStream<Row> rows = dataClient.readRows(query);
for (Row row : rows) {
// do something
}
} catch (IOException e) {
System.out.println(
"Unable to initialize service client, as a network error occurred: \n" + e.toString());
}