색인을 만듭니다.
이 코드 샘플이 포함된 문서 페이지
컨텍스트에서 사용된 코드 샘플을 보려면 다음 문서를 참조하세요.
- C#에서 Cloud Spanner 시작하기
- C#에서 Cloud Spanner 시작하기
- Go에서 Cloud Spanner 시작하기
- 자바에서 Cloud Spanner 시작하기
- Node.js에서 Cloud Spanner 시작하기
- PHP에서 Cloud Spanner 시작하기
- Python에서 Cloud Spanner 시작하기
- Ruby에서 Cloud Spanner 시작하기
코드 샘플
C#
using Google.Cloud.Spanner.Data;
using System;
using System.Threading.Tasks;
public class AddIndexAsyncSample
{
public async Task AddIndexAsync(string projectId, string instanceId, string databaseId)
{
string connectionString = $"Data Source=projects/{projectId}/instances/{instanceId}/databases/{databaseId}";
string createStatement = "CREATE INDEX AlbumsByAlbumTitle ON Albums(AlbumTitle)";
using var connection = new SpannerConnection(connectionString);
using var createCmd = connection.CreateDdlCommand(createStatement);
await createCmd.ExecuteNonQueryAsync();
Console.WriteLine("Added the AlbumsByAlbumTitle index.");
}
}
C++
void AddIndex(google::cloud::spanner::DatabaseAdminClient client,
std::string const& project_id, std::string const& instance_id,
std::string const& database_id) {
google::cloud::spanner::Database database(project_id, instance_id,
database_id);
auto metadata =
client
.UpdateDatabase(
database,
{"CREATE INDEX AlbumsByAlbumTitle ON Albums(AlbumTitle)"})
.get();
if (!metadata) throw std::runtime_error(metadata.status().message());
std::cout << "`AlbumsByAlbumTitle` Index successfully added, new DDL:\n"
<< metadata->DebugString() << "\n";
}
Go
import (
"context"
"fmt"
"io"
database "cloud.google.com/go/spanner/admin/database/apiv1"
adminpb "google.golang.org/genproto/googleapis/spanner/admin/database/v1"
)
func addIndex(w io.Writer, db string) error {
ctx := context.Background()
adminClient, err := database.NewDatabaseAdminClient(ctx)
if err != nil {
return err
}
defer adminClient.Close()
op, err := adminClient.UpdateDatabaseDdl(ctx, &adminpb.UpdateDatabaseDdlRequest{
Database: db,
Statements: []string{
"CREATE INDEX AlbumsByAlbumTitle ON Albums(AlbumTitle)",
},
})
if err != nil {
return err
}
if err := op.Wait(ctx); err != nil {
return err
}
fmt.Fprintf(w, "Added index\n")
return nil
}
자바
static void addIndex(DatabaseAdminClient adminClient, DatabaseId dbId) {
OperationFuture<Void, UpdateDatabaseDdlMetadata> op =
adminClient.updateDatabaseDdl(
dbId.getInstanceId().getInstance(),
dbId.getDatabase(),
Arrays.asList("CREATE INDEX AlbumsByAlbumTitle ON Albums(AlbumTitle)"),
null);
try {
// Initiate the request which returns an OperationFuture.
op.get();
System.out.println("Added AlbumsByAlbumTitle index");
} catch (ExecutionException e) {
// If the operation failed during execution, expose the cause.
throw (SpannerException) e.getCause();
} catch (InterruptedException e) {
// Throw when a thread is waiting, sleeping, or otherwise occupied,
// and the thread is interrupted, either before or during the activity.
throw SpannerExceptionFactory.propagateInterrupt(e);
}
}
Node.js
// Imports the Google Cloud client library
const {Spanner} = require('@google-cloud/spanner');
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// const projectId = 'my-project-id';
// const instanceId = 'my-instance';
// const databaseId = 'my-database';
// Creates a client
const spanner = new Spanner({
projectId: projectId,
});
// Gets a reference to a Cloud Spanner instance and database
const instance = spanner.instance(instanceId);
const database = instance.database(databaseId);
const request = ['CREATE INDEX AlbumsByAlbumTitle ON Albums(AlbumTitle)'];
// Creates a new index in the database
try {
const [operation] = await database.updateSchema(request);
console.log('Waiting for operation to complete...');
await operation.promise();
console.log('Added the AlbumsByAlbumTitle index.');
} catch (err) {
console.error('ERROR:', err);
} finally {
// Close the database when finished.
database.close();
}
PHP
use Google\Cloud\Spanner\SpannerClient;
/**
* Adds a simple index to the example database.
* Example:
* ```
* create_index($instanceId, $databaseId);
* ```
*
* @param string $instanceId The Spanner instance ID.
* @param string $databaseId The Spanner database ID.
*/
function create_index($instanceId, $databaseId)
{
$spanner = new SpannerClient();
$instance = $spanner->instance($instanceId);
$database = $instance->database($databaseId);
$operation = $database->updateDdl(
'CREATE INDEX AlbumsByAlbumTitle ON Albums(AlbumTitle)'
);
print('Waiting for operation to complete...' . PHP_EOL);
$operation->pollUntilComplete();
printf('Added the AlbumsByAlbumTitle index.' . PHP_EOL);
}
Python
def add_index(instance_id, database_id):
"""Adds a simple index to the example database."""
spanner_client = spanner.Client()
instance = spanner_client.instance(instance_id)
database = instance.database(database_id)
operation = database.update_ddl(
["CREATE INDEX AlbumsByAlbumTitle ON Albums(AlbumTitle)"]
)
print("Waiting for operation to complete...")
operation.result(120)
print("Added the AlbumsByAlbumTitle index.")
Ruby
# project_id = "Your Google Cloud project ID"
# instance_id = "Your Spanner instance ID"
# database_id = "Your Spanner database ID"
require "google/cloud/spanner"
spanner = Google::Cloud::Spanner.new project: project_id
instance = spanner.instance instance_id
database = instance.database database_id
job = database.update statements: [
"CREATE INDEX AlbumsByAlbumTitle ON Albums(AlbumTitle)"
]
puts "Waiting for database update to complete"
job.wait_until_done!
puts "Added the AlbumsByAlbumTitle index"