יצירת מופע

מכונת Bigtable היא מאגר של אשכולות Bigtable. במופע שיש בו יותר מאשכול אחד נעשה שימוש בשכפול. אפשר ליצור אשכולות בעד 8 אזורים, עם מספר אשכולות בכל אזור לפי מספר האזורים.

בדף הזה מוסבר איך ליצור מכונה. לפני שקוראים את הדף הזה, כדאי לעיין בסקירה הכללית של Bigtable. מומלץ גם לקרוא את הסקירה הכללית על מופעים, אשכולות וצמתים.

לפני שמתחילים

מכינים את הסביבה:

  1. נכנסים לחשבון Google.

    אם עדיין אין חשבון, יוצרים חשבון חדש.

  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Bigtable API, Cloud Bigtable Admin API APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. התקינו את ה-CLI של Google Cloud.

  6. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  7. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Cloud Bigtable API, Cloud Bigtable Admin API APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. התקינו את ה-CLI של Google Cloud.

  12. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  13. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  14. מריצים את הפקודה הבאה כדי להתקין את ה-CLI של cbt:
    gcloud components install cbt

תכנון ההגדרה:

  1. אופציונלי: אם אתם מתכננים להפעיל שכפול, מבצעים את הפעולות הבאות:

  2. אופציונלי: אם רוצים להשתמש במפתחות הצפנה בניהול הלקוח (CMEK) במקום בהצפנה שמוגדרת כברירת מחדל בניהול Google, צריך להכין את מזהה מפתח ה-CMEK לפני שיוצרים את המופע החדש. אי אפשר להוסיף הגנה באמצעות CMEK למופע אחרי שהוא נוצר, ואי אפשר לשנות או להחליף את מפתח ה-CMEK אחרי שהמופע נוצר. מידע נוסף מופיע במאמר בנושא שימוש במפתחות הצפנה בניהול הלקוח (CMEK).

יצירת מופע

כדי ליצור מופע Bigtable:

המסוף

  1. נכנסים לדף Create instance במסוף Google Cloud .

    כניסה לדף Create instance

  2. מזינים שם למופע.

    השם הזה מוצג במסוף כדי לזהות את המכונה. Google Cloud

  3. מזינים מזהה מכונה.

    מזהה המופע הוא מזהה קבוע של המופע.

  4. לוחצים על Continue.

  5. בקטע Select your edition (בחירת מהדורה), בוחרים מהדורות Bigtable.

    אם רוצים להשוות בין המפרטים של המהדורות, לוחצים על השוואה בין מהדורות. מידע נוסף זמין במאמר סקירה כללית על מהדורות.

  6. לוחצים על Continue.

  7. בוחרים אם להשתמש בדיסק SSD או HDD עבור האשכולות. ברוב המקרים, עדיף להשתמש ב-SSD. אם רוצים להפעיל את רמת הביניים בזיכרון, בוחרים באפשרות SSD. הבחירה הזו היא סופית.

  8. לוחצים על Continue.

  9. מזינים מזהה אשכול לאשכול הראשון.

    מזהה האשכול הוא מזהה קבוע של האשכול.

  10. בוחרים את האזור והתחום שבהם האשכול הראשון יפעל.

  11. אופציונלי: כדי להגדיר את האשכול כך שתמיד יתבצע שינוי גודל במרווחים של שני צמתים, בוחרים באפשרות הפעלת שינוי גודל של צמתים כפולים. הגדלת הקיבולת של הצמתים פי 2 לא זמינה בכל האזורים. במהדורת Enterprise Plus, ברירת המחדל היא הגדלת מספר הצמתים פי 2. מידע נוסף זמין במאמר בנושא Node scaling factor.

  12. אופציונלי: כדי להשתמש ברמת הזיכרון ברמת האשכול, בוחרים באפשרות הפעלת זיכרון.

  13. בוחרים מצב של שינוי גודל הצומת עבור האשכול. ברוב המקרים, כדאי לבחור באפשרות של שינוי גודל אוטומטי. הנחיות לגבי התאמה לעומס זמינות במאמר התאמה אוטומטית לעומס.

    1. בקטע הקצאת צמתים ידנית, מזינים את מספר צמתי Bigtable עבור האשכול הראשון. אם אתם לא בטוחים בכמה צמתים אתם צריכים, השתמשו בברירת המחדל. אפשר להוסיף עוד צמתים בהמשך.
    2. בקטע Autoscaling (שינוי גודל אוטומטי), מזינים ערכים בשדות הבאים:
      • מספר הצמתים המינימלי
      • מספר הצמתים המקסימלי
      • יעד ניצול המעבד (CPU)
      • יעד ניצול נפח האחסון
  14. אופציונלי: כדי להגן על המופע באמצעות CMEK במקום ההצפנה שמוגדרת כברירת מחדל בניהול Google, מבצעים את הפעולות הבאות:

    1. לוחצים על הצגת אפשרויות ההצפנה.
    2. בוחרים באפשרות מפתח Cloud KMS.
    3. בשדה סוג ניהול המפתחות, בוחרים אחת מהאפשרויות הבאות:
      • אם רוצים להפוך את יצירת המפתחות ב-Cloud KMS לאוטומטית, בוחרים באפשרות Cloud KMS עם Autokey ואז לוחצים על בקשת מפתח. הודעה תציין מתי המפתח נוצר בהצלחה ומוכן לשימוש.
      • אם רוצים להוסיף מפתח באופן ידני, בוחרים באפשרות Cloud KMS. בוחרים או מזינים את שם המשאב של מפתח ה-CMEK שבו רוצים להשתמש עבור האשכול. לא תוכלו להוסיף את המידע הזה מאוחר יותר. אם מוצגת בקשה להעניק הרשאה לחשבון השירות של מפתח ה-CMEK, לוחצים על Grant (הענקה). כדי לבצע את המשימה הזו, צריך להקצות לחשבון המשתמש שלכם את תפקיד האדמין ב-Cloud KMS. לוחצים על Save (שמירה).
  15. אופציונלי: כדי להפעיל את השכפול עכשיו, מבצעים את השלבים הנוספים הבאים:

    1. לוחצים על הצגת אפשרויות מתקדמות.
    2. לוחצים על הוספת אשכול, מזינים את ההגדרות של האשכול ואז לוחצים על הוספה. חוזרים על השלב הזה כדי ליצור עוד אשכולות במופע. אפשר גם להפעיל שכפול מאוחר יותר על ידי הוספת אשכול.

    כל תחום באזור יכול להכיל רק אשכול אחד. אם הלחצן Add cluster מושבת, צריך לשנות את האזור של האשכול הראשון.

    כדי ליצור מכונה עם יותר מ-6 אשכולות, קודם יוצרים מכונה עם 6 אשכולות ואז מוסיפים עוד אשכולות למכונה.

  16. לוחצים על יצירה כדי ליצור את המופע.

  17. בודקים את הגדרות השכפול בפרופיל ברירת המחדל של האפליקציה כדי לראות אם הן מתאימות לתרחיש השימוש בשכפול. יכול להיות שתצטרכו לעדכן את פרופיל אפליקציית ברירת המחדל או ליצור פרופילים מותאמים אישית לאפליקציות.

gcloud

  1. משתמשים בפקודה bigtable instances create כדי ליצור מכונה:

    gcloud bigtable instances create INSTANCE_ID \
        --display-name=DISPLAY_NAME \
        [--edition=EDITION] \
        [--cluster-storage-type=CLUSTER_STORAGE_TYPE] \
        [--cluster-config=id=CLUSTER_ID,zone=CLUSTER_ZONE, \
        nodes=NODES] \
        [--cluster-config=id=CLUSTER_ID,zone=CLUSTER_ZONE, \
        autoscaling-min-nodes=AUTOSCALING_MIN_NODES, \
        autoscaling-max-nodes=AUTOSCALING_MAX_NODES, \
        autoscaling-cpu-target=AUTOSCALING_CPU_TARGET, \
        autoscaling-storage-target=AUTOSCALING_STORAGE_TARGET, \
        kms-key=KMS_KEY], \
        [node-scaling-factor=NODE_SCALING_FACTOR]
    

    מחליפים את מה שכתוב בשדות הבאים:

    • INSTANCE_ID: המזהה הקבוע של המופע.
    • DISPLAY_NAME: שם שקריא לאנשים ומזהה את המופע במסוף Google Cloud .
    • CLUSTER_ID: המזהה הקבוע של האשכול.
    • CLUSTER_ZONE: האזור שבו האשכול פועל.

    צריך להגדיר לפחות אשכול אחד למופע באמצעות הדגל --cluster-config. כדי ליצור מופע עם כמה אשכולות, חוזרים על האפשרות --cluster-config לכל אשכול.

    אם אתם מקצים צמתים באופן ידני, ההגדרה של nodes בסימן --cluster-config היא אופציונלית. אם לא מגדירים ערך, Bigtable מקצה צמתים לאשכול באופן אוטומטי על סמך נפח הנתונים, ומבצע אופטימיזציה לניצול של 50% מהאחסון. להקצאה האוטומטית הזו של צמתים יש השפעה על התמחור. אם רוצים לשלוט במספר הצמתים באשכול, מחליפים את NODES במספר הצמתים שרוצים באשכול. מידע נוסף על צמתים

    ברוב המקרים, כדאי לבחור באפשרות התאמה אוטומטית לעומס במקום בהקצאת צמתים ידנית. כדי להגדיר שינוי גודל אוטומטי, צריך לספק אפשרויות של autoscaling- בדגל --cluster-config (האפשרות autoscaling-storage-target היא אופציונלית) ולא להשתמש באפשרות nodes. במאמר בנושא התאמה אוטומטית לעומס יש הנחיות לבחירת הערכים להגדרות של התאמה אוטומטית לעומס. מחליפים את הערכים הבאים במפתחות האפשרויות cluster-config:

    • AUTOSCALING_MIN_NODES: מספר הצמתים המינימלי באשכול.
    • AUTOSCALING_MAX_NODES: המספר המקסימלי של הצמתים באשכול.
    • AUTOSCALING_CPU_TARGET: אחוז ניצול המעבד (CPU) של האשכול. הערך צריך להיות בין 10 ל-80.
    • AUTOSCALING_STORAGE_TARGET: (אופציונלי) יעד ניצול נפח האחסון ב-GiB ש-Bigtable שומר עליו על ידי הוספה או הסרה של צמתים.
    • KMS_KEY: מפתח ה-CMEK של האשכול.

      הערך KMS_KEY צריך להיות בפורמט הבא:

      projects/PROJECT/locations/LOCATION/keyRings/KEYRING/cryptoKeys/KEY
      

      מחליפים את מה שכתוב בשדות הבאים:

      • PROJECT: המזהה הקבוע של הפרויקט
      • LOCATION: המיקום של האשכול
      • KEYRING: השם של אוסף המפתחות שמכיל את המפתח
      • KEY: השם של המפתח

      לדוגמה:

      projects/examplestore.com:dev/locations/us-east1/keyRings/devt-cmek-2/cryptoKeys/key2

      אם המופע מוגן באמצעות CMEK, כל אשכול חייב להיות באותו אזור כמו מפתח ה-CMEK שלו. אפשר להוסיף אשכולות CMEK רק למופעים שכבר מוגנים באמצעות CMEK.

    הפקודה מקבלת את הדגלים האופציונליים הבאים:

    • --edition=EDITION: המהדורה של המכונה שיוצרים. הערכים הקבילים הם ENTERPRISE ו-ENTERPRISE_PLUS. ערך ברירת המחדל הוא ENTERPRISE.
    • --cluster-storage-type=CLUSTER_STORAGE_TYPE: סוג האחסון שבו רוצים להשתמש עבור המופע. ערך ברירת המחדל הוא SSD. ברוב המקרים, עדיף להשתמש בערך ברירת המחדל. הבחירה הזו היא סופית. מידע נוסף

    • --project=PROJECT: הפרויקט שבו ייצור האשכול, אם הוא שונה מהפרויקט הנוכחי.

    • node-scaling-factor=NODE_SCALING_FACTOR: דגל שמאפשר הגדלת מספר הצמתים פי 2. אפשר להפעיל את התכונה הזו גם בהתאמה ידנית לעומס וגם בהתאמה אוטומטית לעומס. הערכים הקבילים הם node-scaling-factor-2x או node-scaling-factor-1x.

    כדי לראות רשימה של אזורי Bigtable שלא זמינים להגדלת מספר הצמתים פי 2, אפשר לעיין במאמר מגבלות על גורם שינוי הגודל של הצמתים.

  2. בודקים את הגדרות השכפול בפרופיל ברירת המחדל של האפליקציה כדי לראות אם הן מתאימות לתרחיש השימוש בשכפול. יכול להיות שתצטרכו לעדכן את פרופיל אפליקציית ברירת המחדל או ליצור פרופילים מותאמים אישית לאפליקציות.

cbt

.
  1. מתחילים ביצירת מכונה עם אשכול יחיד. משתמשים בפקודה createinstance כדי ליצור מכונה:

    cbt createinstance INSTANCE_ID \
        DISPLAY_NAME \
        CLUSTER_ID \
        CLUSTER_ZONE \
        CLUSTER_NUM_NODES \
        CLUSTER_STORAGE_TYPE
    

    עליך לספק את הפרטים הבאים:

    • INSTANCE_ID: המזהה הקבוע של המופע.
    • DISPLAY_NAME: שם שקריא לאנשים ומזהה את המופע במסוף Google Cloud .
    • CLUSTER_ID: המזהה הקבוע של האשכול.
    • CLUSTER_ZONE: האזור שבו האשכול פועל.
    • CLUSTER_NUM_NODES: השדה הזה הוא אופציונלי. אם לא מגדירים ערך, Bigtable מקצה צמתים באופן אוטומטי על סמך נפח הנתונים, ומבצע אופטימיזציה לניצול של 50% מהאחסון. אם רוצים לשלוט במספר הצמתים באשכול, מעדכנים את הערך של CLUSTER_NUM_NODES. מוודאים שמספר הצמתים מוגדר כערך שונה מאפס. מידע נוסף על צמתים
    • CLUSTER_STORAGE_TYPE: סוג האחסון שבו יש להשתמש באשכול. כל אשכול במופע חייב להשתמש באותו סוג אחסון. אפשר להזין בו את הערכים SSD ו-HDD. ברוב המקרים, האפשרות הטובה ביותר היא SSD. הבחירה הזו היא סופית. מידע נוסף
  2. כדי להפעיל שכפול, משתמשים בפקודה createcluster כדי להוסיף אשכול:

    
    cbt -instance=INSTANCE_ID \
    createcluster CLUSTER_ID \
    ZONE \
    NUM_NODES \
    STORAGE_TYPE
    
    

    עליך לספק את הפרטים הבאים:

    • INSTANCE_ID: המזהה הקבוע של המופע שיצרתם.
    • CLUSTER_ID: המזהה הקבוע של האשכול.
    • ZONE: האזור שבו האשכול פועל.

      כל תחום באזור יכול להכיל רק אשכול אחד. לדוגמה, אם למופע יש אשכול ב-us-east1-b, אפשר להוסיף אשכול באזור אחר באותו אזור, כמו us-east1-c, או באזור באזור נפרד, כמו europe-west2-a.

    • NUM_NODES: השדה הזה הוא אופציונלי. אם לא מגדירים ערך, Bigtable מקצה צמתים באופן אוטומטי על סמך נפח הנתונים, ומבצע אופטימיזציה לניצול של 50% מהאחסון. אם רוצים לשלוט במספר הצמתים באשכול, מעדכנים את הערך NUM_NODES. מוודאים שמספר הצמתים מוגדר כערך שונה מאפס.

      במקרים רבים, לכל אשכול במופע צריך להיות אותו מספר של צמתים, אבל יש יוצאים מן הכלל. מידע על צמתים ורפליקציה

    • STORAGE_TYPE: סוג האחסון שבו יש להשתמש באשכול. כל אשכול במופע חייב להשתמש באותו סוג אחסון. אפשר להזין בו את הערכים SSD ו-HDD.

  3. (אופציונלי) בודקים את הגדרות השכפול בפרופיל ברירת המחדל של האפליקציה כדי לראות אם הן מתאימות לתרחיש השימוש בשכפול. יכול להיות שתצטרכו לעדכן את פרופיל אפליקציית ברירת המחדל או ליצור פרופילים מותאמים אישית לאפליקציות.

C++‎

מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.

כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

namespace cbta = ::google::cloud::bigtable_admin;
using ::google::cloud::future;
using ::google::cloud::Location;
using ::google::cloud::Project;
using ::google::cloud::StatusOr;
[](cbta::BigtableInstanceAdminClient instance_admin,
   std::string const& project_id, std::string const& instance_id,
   std::string const& zone) {
  auto const project = Project(project_id);
  std::string project_name = project.FullName();
  std::string cluster_id = instance_id + "-c1";

  google::bigtable::admin::v2::Instance in;
  in.set_type(google::bigtable::admin::v2::Instance::PRODUCTION);
  in.set_display_name("Put description here");

  google::bigtable::admin::v2::Cluster cluster;
  cluster.set_location(Location(project, zone).FullName());
  cluster.set_serve_nodes(3);
  cluster.set_default_storage_type(google::bigtable::admin::v2::HDD);

  std::map<std::string, google::bigtable::admin::v2::Cluster> cluster_map = {
      {cluster_id, std::move(cluster)}};

  future<StatusOr<google::bigtable::admin::v2::Instance>> instance_future =
      instance_admin.CreateInstance(project_name, instance_id, std::move(in),
                                    std::move(cluster_map));
  // Show how to perform additional work while the long running operation
  // completes. The application could use future.then() instead.
  std::cout << "Waiting for instance creation to complete " << std::flush;
  instance_future.wait_for(std::chrono::seconds(1));
  std::cout << '.' << std::flush;
  auto instance = instance_future.get();
  if (!instance) throw std::move(instance).status();
  std::cout << "DONE, details=" << instance->DebugString() << "\n";
}

C#‎

מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.

כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

// Creates a production instance with "<intanceId>-prod" instance ID,
// with cluster ID "ssd-cluster1", 3 nodes and location us-east1-b.
displayName += " Prod"; // Display name is for display purposes only. It doesn't have to equal instanceId and can be amended after instance is created.
string instanceId = Regex.Replace(displayName, @"[^A-Za-z0-9_\.~]+", "-").ToLower();

// Please refer to the link below for the full list of available locations:
// https://cloud.google.com/bigtable/docs/locations
string zone1 = "us-east1-b";

// The instance to create.
Instance myInstance = new Instance
{
    DisplayName = displayName,
    // You can choose DEVELOPMENT or PRODUCTION type here.
    // If not set, will default to PRODUCTION type.
    // Instance type can be upgraded from DEVELOPMENT to PRODUCTION but cannot be dowgraded after the instance is created.
    Type = Instance.Types.Type.Production,
    Labels = { { "prod-label", "prod-label" } }
};

// The first cluster to be created within the instance.
Cluster myCluster1 = new Cluster
{
    // You can choose SSD or HDD storage type here: StorageType.Ssd or StorageType.Hdd.
    // Cluster storage type can not be changed after the instance is created.
    // If not set will default to SSD type.
    DefaultStorageType = StorageType.Ssd,
    LocationAsLocationName = new LocationName(projectId, zone1),
    // Serve Nodes count can only be set if PRODUCTION type instance is being created.
    // Minimum count of 3 serve nodes must be specified.
    // Serve Nodes count can be increased and decreased after an instance is created.
    ServeNodes = 3
};

// Initialize request argument(s).
CreateInstanceRequest request = new CreateInstanceRequest
{
    ParentAsProjectName = new ProjectName(projectId),
    Instance = myInstance,
    InstanceId = instanceId,
    // Must specify at lease one cluster.
    // Only PRODUCTION type instance can be created with more than one cluster.
    // Currently all clusters must have the same storage type.
    // Clusters must be set to different locations.
    Clusters = { { "ssd-cluster1", myCluster1 } }
};

try
{
    // Make a request.
    Operation<Instance, CreateInstanceMetadata> createInstanceResponse =
        bigtableInstanceAdminClient.CreateInstance(request);
    Console.WriteLine("Waiting for operation to complete...");

    // Poll until the returned long-running operation is complete
    Operation<Instance, CreateInstanceMetadata> completedResponse =
        createInstanceResponse.PollUntilCompleted();
}
catch (Exception ex)
{
    Console.WriteLine($"Exception while creating {displayName} instance");
    Console.WriteLine(ex.Message);
}

Java

מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.

כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

// Creates a Production Instance with the ID "ssd-instance",
// cluster id "ssd-cluster", 3 nodes and location "us-central1-f".
String parent = "projects/" + projectId;
Instance.Builder instanceObjBuilder =
    Instance.newBuilder()
        .setDisplayName(instanceId)
        .setType(Instance.Type.PRODUCTION)
        .putLabels("department", "accounting");

if (createWithTags) {
  System.out.println("Enabling tags for instance creation.");
  // These are placeholders. You must create these in your GCP Organization/Project first.
  String tagKey = "tagKeys/12345";
  String tagValue = "tagValues/6789";
  instanceObjBuilder.putTags(tagKey, tagValue);
}
Instance instanceObj = instanceObjBuilder.build();

Cluster clusterObj =
    Cluster.newBuilder()
        .setLocation("projects/" + projectId + "/locations/us-central1-f")
        .setServeNodes(3)
        .setDefaultStorageType(StorageType.SSD)
        .build();
CreateInstanceRequest request =
    CreateInstanceRequest.newBuilder()
        .setParent(parent)
        .setInstanceId(instanceId)
        .setInstance(instanceObj)
        .putClusters(clusterId, clusterObj)
        .build();
// Creates a production instance with the given request.
try {
  Instance instance = adminClient.createInstanceAsync(request).get();
  System.out.printf("PRODUCTION type instance %s created successfully%n", instance.getName());
} catch (Exception e) {
  System.err.println("Failed to create instance: " + e.getMessage());
  throw new RuntimeException(e);
}

Node.js

מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.

כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

// Creates a Production Instance with the ID "ssd-instance"
// with cluster id "ssd-cluster", 3 nodes and location us-central1-f
const {BigtableInstanceAdminClient} = require('@google-cloud/bigtable').v2;
const instanceAdminClient = new BigtableInstanceAdminClient();
const projectId = await instanceAdminClient.getProjectId();

const instanceOptions = {
  parent: `projects/${projectId}`,
  instanceId: instanceID,
  instance: {
    displayName: instanceID,
    labels: {'prod-label': 'prod-label'},
    type: 'PRODUCTION',
  },
  clusters: {
    [clusterID]: {
      location: `projects/${projectId}/locations/us-central1-f`,
      serveNodes: 3,
      defaultStorageType: 'SSD',
    },
  },
};

// Create production instance with given options
const [prodInstance, operation] =
  await instanceAdminClient.createInstance(instanceOptions);
await operation.promise();
console.log(`Created Instance: ${prodInstance.name}`);

PHP

מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.

כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

use Exception;
use Google\ApiCore\ApiException;
use Google\Cloud\Bigtable\Admin\V2\Client\BigtableInstanceAdminClient;
use Google\Cloud\Bigtable\Admin\V2\Cluster;
use Google\Cloud\Bigtable\Admin\V2\CreateInstanceRequest;
use Google\Cloud\Bigtable\Admin\V2\GetInstanceRequest;
use Google\Cloud\Bigtable\Admin\V2\Instance;
use Google\Cloud\Bigtable\Admin\V2\Instance\Type as InstanceType;
use Google\Cloud\Bigtable\Admin\V2\StorageType;

/**
 * Create a production Bigtable instance
 *
 * @param string $projectId The Google Cloud project ID
 * @param string $instanceId The ID of the Bigtable instance to be generated
 * @param string $clusterId The ID of the cluster to be generated
 * @param string $locationId The Bigtable region ID where you want your instance to reside
 */
function create_production_instance(
    string $projectId,
    string $instanceId,
    string $clusterId,
    string $locationId = 'us-east1-b'
): void {
    $instanceAdminClient = new BigtableInstanceAdminClient();

    $projectName = $instanceAdminClient->projectName($projectId);
    $instanceName = $instanceAdminClient->instanceName($projectId, $instanceId);

    $serveNodes = 3;
    $storageType = StorageType::SSD;
    $production = InstanceType::PRODUCTION;
    $labels = ['prod-label' => 'prod-label'];

    $instance = new Instance();
    $instance->setDisplayName($instanceId);

    $instance->setLabels($labels);
    $instance->setType($production);

    $cluster = new Cluster();
    $cluster->setDefaultStorageType($storageType);
    $locationName = $instanceAdminClient->locationName($projectId, $locationId);
    $cluster->setLocation($locationName);
    $cluster->setServeNodes($serveNodes);
    $clusters = [
        $clusterId => $cluster
    ];
    try {
        $getInstanceRequest = (new GetInstanceRequest())
            ->setName($instanceName);
        $instanceAdminClient->getInstance($getInstanceRequest);
        printf('Instance %s already exists.' . PHP_EOL, $instanceId);
        throw new Exception(sprintf('Instance %s already exists.' . PHP_EOL, $instanceId));
    } catch (ApiException $e) {
        if ($e->getStatus() === 'NOT_FOUND') {
            printf('Creating an Instance: %s' . PHP_EOL, $instanceId);
            $createInstanceRequest = (new CreateInstanceRequest())
                ->setParent($projectName)
                ->setInstanceId($instanceId)
                ->setInstance($instance)
                ->setClusters($clusters);
            $operationResponse = $instanceAdminClient->createInstance($createInstanceRequest);
            $operationResponse->pollUntilComplete();
            if (!$operationResponse->operationSucceeded()) {
                print('Error: ' . $operationResponse->getError()->getMessage());
            } else {
                printf('Instance %s created.', $instanceId);
            }
        } else {
            throw $e;
        }
    }
}

Python

מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.

כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

cluster = instance.cluster(
    cluster_id,
    location_id=location_id,
    serve_nodes=serve_nodes,
    default_storage_type=storage_type,
)
if not instance.exists():
    print("\nCreating an instance")
    # Create instance with given options
    operation = instance.create(clusters=[cluster])
    # Ensure the operation completes.
    operation.result(timeout=480)
    print("\nCreated instance: {}".format(instance_id))

Ruby

מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.

כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.

# instance_id      = "my-instance"
# cluster_id       = "my-cluster"
# cluster_location = "us-east1-b"
puts "Creating a PRODUCTION Instance"
job = bigtable.create_instance(
  instance_id,
  display_name: "Sample production instance",
  labels:       { "env": "production" },
  type:         :PRODUCTION # Optional as default type is :PRODUCTION
) do |clusters|
  clusters.add cluster_id, cluster_location, nodes: 3, storage_type: :SSD
end

job.wait_until_done!
instance = job.instance
puts "Created Instance: #{instance.instance_id}"

המאמרים הבאים