Skip to content

Latest commit

 

History

History
50 lines (39 loc) · 1.87 KB

File metadata and controls

50 lines (39 loc) · 1.87 KB

Column Families

When creating a :class:`ColumnFamily <gcloud.bigtable.column_family.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 :class:`MaxAgeGCRule <gcloud.bigtable.column_family.MaxAgeGCRule>`, :class:`MaxVersionsGCRule <gcloud.bigtable.column_family.MaxVersionsGCRule>`, :class:`GarbageCollectionRuleUnion <gcloud.bigtable.column_family.GarbageCollectionRuleUnion>` and :class:`GarbageCollectionRuleIntersection <gcloud.bigtable.column_family.GarbageCollectionRuleIntersection>` can all be used as the optional gc_rule argument in the :class:`ColumnFamily <gcloud.bigtable.column_family.ColumnFamily>` constructor. This value is then used in the :meth:`create() <gcloud.bigtable.column_family.ColumnFamily.create>` and :meth:`update() <gcloud.bigtable.column_family.ColumnFamily.update>` methods.

These rules can be nested arbitrarily, with a :class:`MaxAgeGCRule <gcloud.bigtable.column_family.MaxAgeGCRule>` or :class:`MaxVersionsGCRule <gcloud.bigtable.column_family.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])

.. automodule:: gcloud.bigtable.column_family
  :members:
  :undoc-members:
  :show-inheritance: