From: Sarah Hoffmann Date: Wed, 11 Oct 2023 09:30:42 +0000 (+0200) Subject: streamline SQLAlchemy DB schema X-Git-Tag: v4.4.0~87^2~15 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/d9d0e70e5ba966b8c33ff17a14f1f809fdcb16c9 streamline SQLAlchemy DB schema Remove all information not strictly used by the frontend as well as any index information. This will make it easier to create a SQLite database from the schema. --- diff --git a/nominatim/db/sqlalchemy_schema.py b/nominatim/db/sqlalchemy_schema.py index 2ca518ca..3b769eb3 100644 --- a/nominatim/db/sqlalchemy_schema.py +++ b/nominatim/db/sqlalchemy_schema.py @@ -41,6 +41,9 @@ class SqliteTypes: #pylint: disable=too-many-instance-attributes class SearchTables: """ Data class that holds the tables of the Nominatim database. + + This schema strictly reflects the read-access view of the database. + Any data used for updates only will not be visible. """ def __init__(self, meta: sa.MetaData, engine_name: str) -> None: @@ -63,14 +66,13 @@ class SearchTables: sa.Column('value', sa.Text)) self.placex = sa.Table('placex', meta, - sa.Column('place_id', sa.BigInteger, nullable=False, unique=True), + sa.Column('place_id', sa.BigInteger, nullable=False), sa.Column('parent_place_id', sa.BigInteger), sa.Column('linked_place_id', sa.BigInteger), sa.Column('importance', sa.Float), sa.Column('indexed_date', sa.DateTime), sa.Column('rank_address', sa.SmallInteger), sa.Column('rank_search', sa.SmallInteger), - sa.Column('partition', sa.SmallInteger), sa.Column('indexed_status', sa.SmallInteger), sa.Column('osm_type', sa.String(1), nullable=False), sa.Column('osm_id', sa.BigInteger, nullable=False), @@ -88,33 +90,31 @@ class SearchTables: sa.Column('centroid', Geometry)) self.addressline = sa.Table('place_addressline', meta, - sa.Column('place_id', sa.BigInteger, index=True), - sa.Column('address_place_id', sa.BigInteger, index=True), + sa.Column('place_id', sa.BigInteger), + sa.Column('address_place_id', sa.BigInteger), sa.Column('distance', sa.Float), - sa.Column('cached_rank_address', sa.SmallInteger), sa.Column('fromarea', sa.Boolean), sa.Column('isaddress', sa.Boolean)) self.postcode = sa.Table('location_postcode', meta, - sa.Column('place_id', sa.BigInteger, unique=True), + sa.Column('place_id', sa.BigInteger), sa.Column('parent_place_id', sa.BigInteger), sa.Column('rank_search', sa.SmallInteger), sa.Column('rank_address', sa.SmallInteger), sa.Column('indexed_status', sa.SmallInteger), sa.Column('indexed_date', sa.DateTime), sa.Column('country_code', sa.String(2)), - sa.Column('postcode', sa.Text, index=True), + sa.Column('postcode', sa.Text), sa.Column('geometry', Geometry)) self.osmline = sa.Table('location_property_osmline', meta, - sa.Column('place_id', sa.BigInteger, nullable=False, unique=True), + sa.Column('place_id', sa.BigInteger, nullable=False), sa.Column('osm_id', sa.BigInteger), sa.Column('parent_place_id', sa.BigInteger), sa.Column('indexed_date', sa.DateTime), sa.Column('startnumber', sa.Integer), sa.Column('endnumber', sa.Integer), sa.Column('step', sa.SmallInteger), - sa.Column('partition', sa.SmallInteger), sa.Column('indexed_status', sa.SmallInteger), sa.Column('linegeo', Geometry), sa.Column('address', self.types.Composite), @@ -125,7 +125,6 @@ class SearchTables: sa.Column('country_code', sa.String(2)), sa.Column('name', self.types.Composite), sa.Column('derived_name', self.types.Composite), - sa.Column('country_default_language_code', sa.Text), sa.Column('partition', sa.Integer)) self.country_grid = sa.Table('country_osm_grid', meta, @@ -135,12 +134,12 @@ class SearchTables: # The following tables are not necessarily present. self.search_name = sa.Table('search_name', meta, - sa.Column('place_id', sa.BigInteger, index=True), + sa.Column('place_id', sa.BigInteger), sa.Column('importance', sa.Float), sa.Column('search_rank', sa.SmallInteger), sa.Column('address_rank', sa.SmallInteger), - sa.Column('name_vector', self.types.IntArray, index=True), - sa.Column('nameaddress_vector', self.types.IntArray, index=True), + sa.Column('name_vector', self.types.IntArray), + sa.Column('nameaddress_vector', self.types.IntArray), sa.Column('country_code', sa.String(2)), sa.Column('centroid', Geometry)) @@ -150,6 +149,5 @@ class SearchTables: sa.Column('startnumber', sa.Integer), sa.Column('endnumber', sa.Integer), sa.Column('step', sa.SmallInteger), - sa.Column('partition', sa.SmallInteger), sa.Column('linegeo', Geometry), sa.Column('postcode', sa.Text))