Data Schema Fundamentals
Author(s): Kyle Vessey, Ohm Devani October 2022
Our data platform is built on top of PostgreSQL. PostgreSQL is a powerful, open source object-relational database system with over 30 years of active development that has earned it a strong reputation for reliability, feature robustness, and performance. Our data schema enforces referential integrity. This affects how records are inserted, the order in which they are inserted and how they are deleted. The RESTful APIs will not accept records which will break a referential constraint (e.g. inserting a daily production record for a well which does not yet exist in the well header table). Read More: Relational Database concepts
The data ingest RESTful APIs use the original source system IDs as key fields. For WellView and OpenWells the data schema documentation provides guidance as to which table/view and which column/value to use as the source system ID. Guidance is provided for the Well Header, the Wellbore and all other Wellbore related data sets
WellView is a registered trademark of Peloton Computer Enterprises Ltd. OpenWells is a registered trademark of Halliburton Landmark.
Below is a high-level conceptual data schema that explains the relationship(s) between the various data entities within our database. For brevity table columns are emitted. Only primary and foreign keys relationships are documented. See the table specific Data Schema documents for detailed column information
A clickable diagram demonstrating the relationship of inputs (blue) to intermediate calculations (yellow) and then to engineering workflows (green). Each white box represents an input table, workflow, or calculation and clicking it leads to the documentation related to that item.
Data must be pushed in the correct order to maintain referential integrity. The API REST based POST commands perform data UPSERTS. Each UPSERT must pass a series of data validation checks to maintain referential integrity. UPSERTS that fail the data integrity check will be rejected. Table specific data integrity check rules are documented at the bottom of each table specification.
If a duplicate record exists, the previous record will be UPSERTED (overwritten) with the new data provided by the conflicting INSERT request. The REST based POST command will UPSERT if a record exists.
CASCADE DELETE functionality is enabled. This means that if a parent record is deleted, all child records will delete also. (e.g. - if a Well Header is deleted, all data related to that well is also deleted). The REST based DELETE command will DELETE data.
Various datasets are available for retrieval. The REST based GET command will return JSON based data sets. These datasets can be used by other applications such as Microsoft Power BI or can be integrated into custom workflows, data warehouses or applications.