Updated DB_Helper by adding firebase methods.
This commit is contained in:
parent
485cc3bbba
commit
c82121d036
1810 changed files with 537281 additions and 1 deletions
167
venv/Lib/site-packages/gcloud/bigtable/happybase/__init__.py
Normal file
167
venv/Lib/site-packages/gcloud/bigtable/happybase/__init__.py
Normal file
|
@ -0,0 +1,167 @@
|
|||
# Copyright 2016 Google Inc. All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
"""Google Cloud Bigtable HappyBase package.
|
||||
|
||||
This package is intended to emulate the HappyBase library using
|
||||
Google Cloud Bigtable as the backing store.
|
||||
|
||||
Differences in Public API
|
||||
-------------------------
|
||||
|
||||
Some concepts from HBase/Thrift do not map directly to the Cloud
|
||||
Bigtable API. As a result, the following instance methods and functions
|
||||
could not be implemented:
|
||||
|
||||
* :meth:`Connection.enable_table() \
|
||||
<gcloud.bigtable.happybase.connection.Connection.enable_table>` - no
|
||||
concept of enabled/disabled
|
||||
* :meth:`Connection.disable_table() \
|
||||
<gcloud.bigtable.happybase.connection.Connection.disable_table>` - no
|
||||
concept of enabled/disabled
|
||||
* :meth:`Connection.is_table_enabled() \
|
||||
<gcloud.bigtable.happybase.connection.Connection.is_table_enabled>`
|
||||
- no concept of enabled/disabled
|
||||
* :meth:`Connection.compact_table() \
|
||||
<gcloud.bigtable.happybase.connection.Connection.compact_table>` -
|
||||
table storage is opaque to user
|
||||
* :meth:`Table.regions() <gcloud.bigtable.happybase.table.Table.regions>`
|
||||
- tables in Cloud Bigtable do not expose internal storage details
|
||||
* :meth:`Table.counter_set() \
|
||||
<gcloud.bigtable.happybase.table.Table.counter_set>` - method can't
|
||||
be atomic, so we disable it
|
||||
* The ``__version__`` value for the HappyBase package is :data:`None`.
|
||||
However, it's worth nothing this implementation was based off HappyBase
|
||||
0.9.
|
||||
|
||||
In addition, many of the constants from
|
||||
:mod:`connection <gcloud.bigtable.happybase.connection>`
|
||||
are specific to HBase and are defined as :data:`None` in our module:
|
||||
|
||||
* ``COMPAT_MODES``
|
||||
* ``THRIFT_TRANSPORTS``
|
||||
* ``THRIFT_PROTOCOLS``
|
||||
* ``DEFAULT_HOST``
|
||||
* ``DEFAULT_PORT``
|
||||
* ``DEFAULT_TRANSPORT``
|
||||
* ``DEFAULT_COMPAT``
|
||||
* ``DEFAULT_PROTOCOL``
|
||||
|
||||
Two of these ``DEFAULT_HOST`` and ``DEFAULT_PORT``, are even imported in
|
||||
the main :mod:`happybase <gcloud.bigtable.happybase>` package.
|
||||
|
||||
Finally, we do not provide the ``util`` module. Though it is public in the
|
||||
HappyBase library, it provides no core functionality.
|
||||
|
||||
API Behavior Changes
|
||||
--------------------
|
||||
|
||||
* Since there is no concept of an enabled / disabled table, calling
|
||||
:meth:`Connection.delete_table() \
|
||||
<gcloud.bigtable.happybase.connection.Connection.delete_table>`
|
||||
with ``disable=True`` can't be supported.
|
||||
Using that argument will result in a warning.
|
||||
* The :class:`Connection <gcloud.bigtable.happybase.connection.Connection>`
|
||||
constructor **disables** the use of several
|
||||
arguments and will print a warning if any of them are passed in as keyword
|
||||
arguments. The arguments are:
|
||||
|
||||
* ``host``
|
||||
* ``port``
|
||||
* ``compat``
|
||||
* ``transport``
|
||||
* ``protocol``
|
||||
* In order to make
|
||||
:class:`Connection <gcloud.bigtable.happybase.connection.Connection>`
|
||||
compatible with Cloud Bigtable, we add a ``instance`` keyword argument to
|
||||
allow users to pass in their own
|
||||
:class:`Instance <gcloud.bigtable.instance.Instance>` (which they can
|
||||
construct beforehand).
|
||||
|
||||
For example:
|
||||
|
||||
.. code:: python
|
||||
|
||||
from gcloud.bigtable.client import Client
|
||||
client = Client(project=PROJECT_ID, admin=True)
|
||||
instance = client.instance(instance_id, location_id)
|
||||
instance.reload()
|
||||
|
||||
from gcloud.bigtable.happybase import Connection
|
||||
connection = Connection(instance=instance)
|
||||
|
||||
* Any uses of the ``wal`` (Write Ahead Log) argument will result in a
|
||||
warning as well. This includes uses in:
|
||||
|
||||
* :class:`Batch <gcloud.bigtable.happybase.batch.Batch>`
|
||||
* :meth:`Batch.put() <gcloud.bigtable.happybase.batch.Batch.put>`
|
||||
* :meth:`Batch.delete() <gcloud.bigtable.happybase.batch.Batch.delete>`
|
||||
* :meth:`Table.put() <gcloud.bigtable.happybase.table.Table.put>`
|
||||
* :meth:`Table.delete() <gcloud.bigtable.happybase.table.Table.delete>`
|
||||
* :meth:`Table.batch() <gcloud.bigtable.happybase.table.Table.batch>` factory
|
||||
* When calling
|
||||
:meth:`Connection.create_table() \
|
||||
<gcloud.bigtable.happybase.connection.Connection.create_table>`, the
|
||||
majority of HBase column family options cannot be used. Among
|
||||
|
||||
* ``max_versions``
|
||||
* ``compression``
|
||||
* ``in_memory``
|
||||
* ``bloom_filter_type``
|
||||
* ``bloom_filter_vector_size``
|
||||
* ``bloom_filter_nb_hashes``
|
||||
* ``block_cache_enabled``
|
||||
* ``time_to_live``
|
||||
|
||||
Only ``max_versions`` and ``time_to_live`` are availabe in Cloud Bigtable
|
||||
(as
|
||||
:class:`MaxVersionsGCRule <gcloud.bigtable.column_family.MaxVersionsGCRule>`
|
||||
and
|
||||
:class:`MaxAgeGCRule <gcloud.bigtable.column_family.MaxAgeGCRule>`).
|
||||
|
||||
In addition to using a dictionary for specifying column family options,
|
||||
we also accept instances of :class:`.GarbageCollectionRule` or subclasses.
|
||||
* :meth:`Table.scan() <gcloud.bigtable.happybase.table.Table.scan>` no longer
|
||||
accepts the following arguments (which will result in a warning):
|
||||
|
||||
* ``batch_size``
|
||||
* ``scan_batching``
|
||||
* ``sorted_columns``
|
||||
|
||||
* Using a HBase filter string in
|
||||
:meth:`Table.scan() <gcloud.bigtable.happybase.table.Table.scan>` is
|
||||
not possible with Cloud Bigtable and will result in a
|
||||
:class:`TypeError <exceptions.TypeError>`. However, the method now accepts
|
||||
instances of :class:`.RowFilter` and subclasses.
|
||||
* :meth:`Batch.delete() <gcloud.bigtable.happybase.batch.Batch.delete>` (and
|
||||
hence
|
||||
:meth:`Table.delete() <gcloud.bigtable.happybase.table.Table.delete>`)
|
||||
will fail with a :class:`ValueError <exceptions.ValueError>` when either a
|
||||
row or column family delete is attempted with a ``timestamp``. This is
|
||||
because the Cloud Bigtable API uses the ``DeleteFromFamily`` and
|
||||
``DeleteFromRow`` mutations for these deletes, and neither of these
|
||||
mutations support a timestamp.
|
||||
"""
|
||||
|
||||
from gcloud.bigtable.happybase.batch import Batch
|
||||
from gcloud.bigtable.happybase.connection import Connection
|
||||
from gcloud.bigtable.happybase.connection import DEFAULT_HOST
|
||||
from gcloud.bigtable.happybase.connection import DEFAULT_PORT
|
||||
from gcloud.bigtable.happybase.pool import ConnectionPool
|
||||
from gcloud.bigtable.happybase.pool import NoConnectionsAvailable
|
||||
from gcloud.bigtable.happybase.table import Table
|
||||
|
||||
|
||||
# Values from HappyBase that we don't reproduce / are not relevant.
|
||||
__version__ = None
|
Loading…
Add table
Add a link
Reference in a new issue