Column Families¶
When creating a
ColumnFamily, it is
possible to set garbage collection rules for expired data.
By setting a rule, cells in the table matching the rule will be deleted during periodic garbage collection (which executes opportunistically in the background).
The types
MaxAgeGCRule,
MaxVersionsGCRule,
GarbageCollectionRuleUnion and
GarbageCollectionRuleIntersection
can all be used as the optional gc_rule argument in the
ColumnFamily
constructor. This value is then used in the
create() and
update() methods.
These rules can be nested arbitrarily, with a
MaxAgeGCRule or
MaxVersionsGCRule
at the lowest level of the nesting:
import datetime
max_age = datetime.timedelta(days=3)
rule1 = MaxAgeGCRule(max_age)
rule2 = MaxVersionsGCRule(1)
# Make a composite that matches anything older than 3 days **AND**
# with more than 1 version.
rule3 = GarbageCollectionIntersection(rules=[rule1, rule2])
# Make another composite that matches our previous intersection
# **OR** anything that has more than 3 versions.
rule4 = GarbageCollectionRule(max_num_versions=3)
rule5 = GarbageCollectionUnion(rules=[rule3, rule4])
User friendly container for Google Cloud Bigtable Column Family.
- class google.cloud.bigtable.column_family.ColumnFamily(column_family_id, table, gc_rule=None)[source]¶
Bases:
objectRepresentation of a Google Cloud Bigtable Column Family.
We can use a
ColumnFamilyto:- Parameters
column_family_id (str) – The ID of the column family. Must be of the form
[_a-zA-Z0-9][-_.a-zA-Z0-9]*.table (
Table) – The table that owns the column family.gc_rule (
GarbageCollectionRule) – (Optional) The garbage collection settings for this column family.
- create()[source]¶
Create this column family.
For example:
from google.cloud.bigtable import Client from google.cloud.bigtable import column_family client = Client(admin=True) instance = client.instance(INSTANCE_ID) table = instance.table(TABLE_ID) column_family_id = "column_family_id1" gc_rule = column_family.MaxVersionsGCRule(2) column_family_obj = table.column_family(column_family_id, gc_rule=gc_rule) column_family_obj.create()
- delete()[source]¶
Delete this column family.
For example:
from google.cloud.bigtable import Client from google.cloud.bigtable import column_family client = Client(admin=True) instance = client.instance(INSTANCE_ID) table = instance.table(TABLE_ID) column_family_id = "column_family_id1" column_family_obj = table.column_family(column_family_id) column_family_obj.delete()
- property name¶
Column family name used in requests.
For example:
from google.cloud.bigtable import Client client = Client(admin=True) instance = client.instance(INSTANCE_ID) table = instance.table(TABLE_ID) column_families = table.list_column_families() column_family_obj = column_families[COLUMN_FAMILY_ID] column_family_name = column_family_obj.name
Note
This property will not change if
column_family_iddoes not, but the return value is not cached.The Column family name is of the form
"projects/../zones/../clusters/../tables/../columnFamilies/.."- Return type
str
- Returns
The column family name.
- to_pb()[source]¶
Converts the column family to a protobuf.
- Return type
table_v2_pb2.ColumnFamily- Returns
The converted current object.
- update()[source]¶
Update this column family.
For example:
from google.cloud.bigtable import Client from google.cloud.bigtable import column_family client = Client(admin=True) instance = client.instance(INSTANCE_ID) table = instance.table(TABLE_ID) # Already existing column family id column_family_id = "column_family_id1" # Define the GC rule to retain data with max age of 5 days max_age_rule = column_family.MaxAgeGCRule(datetime.timedelta(days=5)) column_family_obj = table.column_family(column_family_id, gc_rule=max_age_rule) column_family_obj.update()
Note
Only the GC rule can be updated. By changing the column family ID, you will simply be referring to a different column family.
- class google.cloud.bigtable.column_family.GCRuleIntersection(rules)[source]¶
Bases:
google.cloud.bigtable.column_family.GarbageCollectionRuleIntersection of garbage collection rules.
For example:
from google.cloud.bigtable import Client from google.cloud.bigtable import column_family client = Client(admin=True) instance = client.instance(INSTANCE_ID) table = instance.table(TABLE_ID) max_versions_rule = column_family.MaxVersionsGCRule(2) max_age_rule = column_family.MaxAgeGCRule(datetime.timedelta(days=5)) intersection_rule = column_family.GCRuleIntersection( [max_versions_rule, max_age_rule] ) column_family_obj = table.column_family("cf4", intersection_rule) column_family_obj.create()
- Parameters
rules (list) – List of
GarbageCollectionRule.
- class google.cloud.bigtable.column_family.GCRuleUnion(rules)[source]¶
Bases:
google.cloud.bigtable.column_family.GarbageCollectionRuleUnion of garbage collection rules.
For example:
from google.cloud.bigtable import Client from google.cloud.bigtable import column_family client = Client(admin=True) instance = client.instance(INSTANCE_ID) table = instance.table(TABLE_ID) max_versions_rule = column_family.MaxVersionsGCRule(2) max_age_rule = column_family.MaxAgeGCRule(datetime.timedelta(days=5)) union_rule = column_family.GCRuleUnion([max_versions_rule, max_age_rule]) column_family_obj = table.column_family("cf3", union_rule) column_family_obj.create()
- Parameters
rules (list) – List of
GarbageCollectionRule.
- class google.cloud.bigtable.column_family.GarbageCollectionRule[source]¶
Bases:
objectGarbage collection rule for column families within a table.
Cells in the column family (within a table) fitting the rule will be deleted during garbage collection.
Note
This class is a do-nothing base class for all GC rules.
Note
A string
gc_expressioncan also be used with API requests, but that value would be superceded by agc_rule. As a result, we don’t support that feature and instead support via native classes.
- class google.cloud.bigtable.column_family.MaxAgeGCRule(max_age)[source]¶
Bases:
google.cloud.bigtable.column_family.GarbageCollectionRuleGarbage collection limiting the age of a cell.
For example:
from google.cloud.bigtable import Client from google.cloud.bigtable import column_family client = Client(admin=True) instance = client.instance(INSTANCE_ID) table = instance.table(TABLE_ID) # Define the GC rule to retain data with max age of 5 days max_age_rule = column_family.MaxAgeGCRule(datetime.timedelta(days=5)) column_family_obj = table.column_family("cf1", max_age_rule) column_family_obj.create()
- Parameters
max_age (
datetime.timedelta) – The maximum age allowed for a cell in the table.
- class google.cloud.bigtable.column_family.MaxVersionsGCRule(max_num_versions)[source]¶
Bases:
google.cloud.bigtable.column_family.GarbageCollectionRuleGarbage collection limiting the number of versions of a cell.
For example:
from google.cloud.bigtable import Client from google.cloud.bigtable import column_family client = Client(admin=True) instance = client.instance(INSTANCE_ID) table = instance.table(TABLE_ID) # Define the GC policy to retain only the most recent 2 versions max_versions_rule = column_family.MaxVersionsGCRule(2) column_family_obj = table.column_family("cf2", max_versions_rule) column_family_obj.create()
- Parameters
max_num_versions (int) – The maximum number of versions