Manifold provides extensive capabilities for connecting to and storing data in databases. Using built-in drivers, or built-in generic facilities such as ODBC, or drivers easily installed for specific databases, Manifold can connect to thousands of different types of databases, including Manifold's own Manifold Server database system.
Manifold uses the word database generically, meaning databases stored within an enterprise-class Database Management System (DBMS) such as Oracle, SQL Server, PostgreSQL, or similar, and also within file-based databases such as Manifold .map files, GPKG files, Microsoft Access .mdb files, ESRI .gdb files, or the many other formats in which databases are stored. See the Big List of Formats and Data Sources topic.
An elite group within the many thousands of different databases to which Manifold can connect are those enterprise-class DBMS packages which are especially closely supported by Manifold: IBM DB2, Microsoft SQL Server, MySQL, Oracle, and PostgreSQL. Manifold includes special, built-in features customized to each which provide exceptionally close integration with Manifold features and capabilities, such as automatic adaptation to native geospatial data types used by these databases.
Manifold also, of course, closely supports many others, such as SQLite and ESRI GDB, but the above enterprise-class DBMS products stand out with exceptionally large capacity, performance, and extensive feature set. When connecting to popular databases like Oracle or SQL Server, if there is an ESRI SDE installation in there, Manifold will automatically be able to use that as well. If we download and install the optional SQLite drivers for ESRI, we can even connect to ESRI ST_GEOMETRY within SQLite databases.
See topics for individual databases and database file formats for software that must be installed. In general, we need to install client software or a .dll file on the machine that is running Manifold to connect to databases. See the Product Downloads page for optional downloads.
The Databases section of Manifold documentation provides topics that help make better use of databases closely supported by Manifold, as well as notes on DBMS use overall.
The very fastest database Manifold supports is Manifold Server, to which Manifold as a client connects using multiple parallel threads with extensive server side computation and rendering preprocessing for high performance. Manifold Server is a high performance, parallel, read-only, spatial database server. It allows many Manifold users to share data that is published through Server. Using Server on multiple machines can distribute parallel processing to those multiple machines for executing queries and other computations that can dramatically speed up display and results when using Manifold as a client to Server. Installing Manifold Release 9 Universal edition automatically installs Manifold Server.
There is no requirement to install or use any other DBMS or database software to work with Manifold, or to do spatial SQL. Manifold includes as built-in capabilities, including a phenomenally powerful internal DBMS and full-featured spatial SQL, everything you need to do Manifold, with no need to install or use an external DBMS package.
So why install or use a DBMS or other database? Manifold users often take advantage of an external DBMS for many good reasons:
Access to data - Organizations often use enterprise-class DBMS packages to store data. Being able to reach into organizational data provides tremendous access to data that can be combined with geospatial data in Manifold or in other systems, or to simply get access to a seemingly infinite range of data of all kinds in tables. Topics showing how to connect to a given database teach us how to access that data so we can use it.
Capabilities not in Manifold - While Manifold generally provides far broader geospatial capabilities than any DBMS, big DBMS packages have very many capabilities evolved over many years, including capabilities not found in Manifold. By running server-side queries we can take advantage of those capabilities.
Handing very large data - In data sizes typical of desktop GIS work (in the many tens of GB for vector data and in the hundreds of GB for raster data), storing GIS data within Manifold .map project files will be faster, and will deliver higher performance with greater ease of use and more capabilities than storing GIS data within a DBMS. However, working with vector data in many hundreds of GB or raster data in the many terabyte range may go faster when storing the data in a distributed, fast DBMS. It all depends on what is being done and the data involved. For example, Manifold .map project files are often faster for very large rasters than, say, PostgreSQL/PostGIS. There is also a fairly broad range of data sizes where the speed of .map files for either raster or vectors will be about the same as the speed of enterprise DBMS, but with the convenience of running locally with no need to load up a DBMS. It is still nice to have a DBMS alternative.
Alternative data storage - Whatever storage infrastructure has been invented, there is a database that uses it. Connecting to different DBMS packages allows Manifold users to store their data in whatever data technology they like, such as cloud storage, massively distributed storage, and memory resident storage.
Interchange with other applications - There are many other applications which can interact with data stored within various databases. Using a DBMS as a common data store allows easy interchange of data between those applications.
Multiuser, simultaneous use of GIS data - Manifold .map files at the present time do not allow simultaneous access by multiple Manifold sessions. If a .map file is open in one Manifold session it cannot be opened in another. If we require simultaneous access to data by multiple Manifold sessions, such as might be run by different people on different machines, we can store the data in a DBMS, such as Postgres, Oracle, MySQL, SQL Server, DB2, or other DBMS.
Disclaimer: Topics in the Database section were accurate when written, using the versions of installation software indicated. Third party packages can and do change, so topics may be out-of-date. They are provided as examples of how different databases can be approached.
A quick guide to installing and using Manifold Server. |
|
When connecting to a DBMS data source, Manifold automatically generates virtual components, such as folders, to provide a consistent user interface that matches the Manifold .map portion of the project. When uploading data into the database, some real components, such as tables, can be created while other components, such as drawings, that appear to have been uploaded into the database are virtual components that are generated on the fly by Manifold based on metadata information. This topic explores examples. |
|
Issues to consider when connecting from Microsoft Access to Manifold ODBC. |
|
Technical notes on using DBMS packages such as Oracle, PostgreSQL, SQL Server, DB2 or other DBMS packages. |
|
MySQL |
|
|
|
|
|
|
|
Microsoft SQL Server |
|
|
|
|
|
|
|
|
|
|
|
PostgreSQL / PostGIS |
|
|
|
|
|
|
|
|
|
|
|
Oracle |
|
|
|
|
|
|
|
|
|
Db2 |
|
|
|
|
|
|
|
|
|
|
'Database' vs 'data source' - In Manifold documentation and build notes, these two terms are frequently more or less the same thing. Data source is a collective name for files, databases, or web servers which provide data. When we start Manifold and create a new .map file, we set that .map file to be an unnamed root data source, 'root' because it is a root of a potential data source tree. When we link a SHP file, we do so by creating a new data source component, that is, a new data source. That data source behaves like a database in that it exposes data through tables, and it has system tables with reserved names which describe its contents. The object representing an opened data source for a script is usually called Database, and in other ways data sources are treated as databases within Manifold.
File - Create - New Data Source
Microsoft Access and Manifold ODBC
Big List of Formats and Data Sources
Example: Switching between Manifold and Native Query Engines
GDB, ESRI File Geodatabase, Old Format