https://github.com/citusdata/mongo_fdw
DEPRECATED, moved to
https://github.com/citusdata/mongo_fdw
Last synced: about 1 year ago
JSON representation
DEPRECATED, moved to
- Host: GitHub
- URL: https://github.com/citusdata/mongo_fdw
- Owner: citusdata
- License: lgpl-3.0
- Created: 2012-10-17T06:35:40.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2024-07-11T05:39:43.000Z (almost 2 years ago)
- Last Synced: 2025-03-31T07:06:27.226Z (about 1 year ago)
- Language: C
- Homepage: https://github.com/EnterpriseDB/mongo_fdw
- Size: 185 KB
- Stars: 153
- Watchers: 40
- Forks: 108
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
**Notice:** Please note this repository has moved to https://github.com/EnterpriseDB/mongo_fdw
MongoDB FDW for PostgreSQL
==========================
This PostgreSQL extension implements a Foreign Data Wrapper (FDW) for
[MongoDB][1]. For an example demonstrating this wrapper's use, see [our blog
post][2]. Please also note that this version of `mongo_fdw` only works with
PostgreSQL 9.2 or 9.3.
Installation
------------
The MongoDB FDW includes the official MongoDB C Driver version 0.6. When you
type `make`, the C driver's source code also gets automatically compiled and
linked.
To build on POSIX-compliant systems (like Linux and OS X), you need to ensure
the `pg_config` executable is in your path when you run `make`. This executable
is typically in your PostgreSQL installation's `bin` directory. For example:
```sh
PATH=/usr/local/pgsql/bin/:$PATH make
sudo PATH=/usr/local/pgsql/bin/:$PATH make install
```
Note that we have tested the `mongo_fdw` extension only on Fedora and Ubuntu
systems. If you run into issues on other systems, please [let us know][3].
Usage
-----
The following parameters can be set on a MongoDB foreign server object:
* `address`: the address or hostname of the MongoDB server.
Defaults to `127.0.0.1`
* `port`: the port number of the MongoDB server. Defaults to `27017`
The following parameters can be set on a MongoDB foreign table object:
* `database`: the name of the MongoDB database to query. Defaults to `test`
* `collection`: the name of the MongoDB collection to query. Defaults to
the foreign table name used in the relevant `CREATE` command
As an example, the following commands demonstrate loading the `mongo_fdw`
wrapper, creating a server, and then creating a foreign table associated with
a MongoDB collection. The commands also show specifying option values in the
`OPTIONS` clause. If an option value isn't provided, the wrapper uses the
default value mentioned above.
`mongo_fdw` can collect data distribution statistics will incorporate them when
estimating costs for the query execution plan. To see selected execution plans
for a query, just run `EXPLAIN`.
We also currently use the internal PostgreSQL `NAME` type to represent the BSON
object identifier type (the `_id` field).
```sql
-- load extension first time after install
CREATE EXTENSION mongo_fdw;
-- create server object
CREATE SERVER mongo_server FOREIGN DATA WRAPPER mongo_fdw
OPTIONS (address '127.0.0.1', port '27017');
-- create foreign table
CREATE FOREIGN TABLE customer_reviews
(
_id NAME,
customer_id TEXT,
review_date TIMESTAMP,
review_rating INTEGER,
product_id CHAR(10),
product_title TEXT,
product_group TEXT,
product_category TEXT,
similar_product_ids CHAR(10)[]
)
SERVER mongo_server
OPTIONS (database 'test', collection 'customer_reviews');
-- collect data distribution statistics
ANALYZE customer_reviews;
```
Limitations
-----------
* If the BSON document key contains uppercase letters or occurs within a
nested document, `mongo_fdw` requires the corresponding column names to be
declared in double quotes. For example, a nested field such as `"review": {
"Votes": 19 }` should be declared as `"review.Votes" INTEGER` in the `CREATE
TABLE` statement.
* Note that PostgreSQL limits column names to 63 characters by default. If
you need column names that are longer, you can increase the `NAMEDATALEN`
constant in `src/include/pg_config_manual.h`, compile, and reinstall.
Support
-------
Please note this repository has moved to https://github.com/EnterpriseDB/mongo_fdw
License
-------
Copyright © 2012–2014 Citus Data, Inc.
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the Free
Software Foundation, either version 3 of the License, or (at your option) any
later version.
See the [`LICENSE`][5] file for full details.
[1]: http://www.mongodb.com
[2]: http://www.citusdata.com/blog/51-run-sql-on-mongodb
[3]: https://github.com/citusdata/mongo_fdw/issues/new
[5]: LICENSE