I'm working on a project that needs to use hstore
on multiple schemas.
The 'public' schema, where the hstore
extension was being installed isn't available everywhere, because my scope doesn't lookup at 'public'. On some tryouts, I've created the extension on a schema called 'hstore' and used the schema on every available scope (search path) used.
Based on this, I've some questions:
Is it ok to create a schema just for the extension? Or is it better to create the extension on every single schema (like, customer_1
, customer_2
, and so on...)?
Does the creation of the extension in a separate schema affect where the data is stored? I'm using multiple schemas to make it easier to backup/restore, and really don't want pg to store all my hstore
data in a hidden table (like pg_large_objects
for blobs) on a single schema.
PostgreSQL supports having multiple schemas in a single database there by letting you namespace different features into different schemas. For example, you can have a database named postgres and have multiple schemas based on your application like ecommerce , auth etc.
hstore is deprecated. Use jsonb . @danger89 Actually, it's not formally deprecated, though I don't think there's any reason to use it in favour of jsonb anymore.
It is not allowed to install extensions multiple times per database. Quoting the manual on CREATE EXTENSION
:
Remember that the extension itself is not considered to be within any schema: extensions have unqualified names that must be unique database-wide. But objects belonging to the extension can be within schemas.
If you don't want to include public
in your search_path
, install "public" extensions into a dedicated schema (example: extensions
). I would use a single schema for all of them, not a separate schema for each extension. There are quite a few of them.
CREATE EXTENSION
offers an option to install to an existing schema of your choice:
CREATE EXTENSION hstore SCHEMA extensions;
And make sure the schema is included in the search_path
of users who might want to make use of it.
Data storage is not affected at all by the schema the extension resides in.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With