Diskuse:155UZPD Úvod do zpracování prostorových dat: Porovnání verzí
m →NoSQL |
|||
Řádek 69: | Řádek 69: | ||
<source lang=bash> | <source lang=bash> | ||
#!/bin/sh | #!/bin/sh | ||
if [ -z $1 ] ; then | if [ -z $1 ] ; then | ||
Řádek 77: | Řádek 77: | ||
USER="$1" | USER="$1" | ||
SCHEMA=`echo $USER | cut -d'_' -f2` | SCHEMA="$1" | ||
GROUP=`echo $USER | cut -d'_' -f2` | |||
DB=pgis_uzpd | DB=pgis_uzpd | ||
createuser -D -R -S - | createuser -D -R -S -g uzpd -w $1 | ||
psql $DB -c "CREATE SCHEMA $SCHEMA;" | psql $DB -c "CREATE SCHEMA $SCHEMA;" | ||
psql $DB -c "ALTER SCHEMA $SCHEMA OWNER TO $USER;" | psql $DB -c "ALTER SCHEMA $SCHEMA OWNER TO $USER;" | ||
Řádek 87: | Řádek 88: | ||
psql $DB -c "GRANT CREATE ON SCHEMA $SCHEMA TO $USER;" | psql $DB -c "GRANT CREATE ON SCHEMA $SCHEMA TO $USER;" | ||
psql $DB -c "GRANT USAGE ON SCHEMA $SCHEMA TO $USER;" | psql $DB -c "GRANT USAGE ON SCHEMA $SCHEMA TO $USER;" | ||
psql $DB -c "ALTER USER $USER WITH PASSWORD '${GROUP}_uzpd18';" | |||
exit 0 | exit 0 | ||
</source> | </source> |
Aktuální verze z 9. 12. 2018, 16:09
NoSQL
- NoSQL (Not Only SQL)
- Objektové, dokumentové DB
- Key-Value store
- Document
- Column oriented (big data, Apache Cassandra nebo HBase)
- Graph (vztahové)
- vhodné pro webové aplikace
- big data
- objekty pohromadě, žádné JOIN a pod.
- CAP theorem (MongoDB->one-master vs CouchDB->multi-master), často chybí ACID
- MongoDB, Cassandra, Redis, CouchDB nebo Neo4J
Mongo
- postavena na formátu JSON, resp. BSON
- data členěna do databází a tzv. collections
- dotazování na bázi JSON
- podpora pro různé souřadnicové systémy, indexují se ale pouze data v rozsahu lat/lon
- nevalidní geometrie (self intersect) je vynechána
- prostorové indexy 2d index, 2dsphere index, Haystack index
- oblouky -> lomené čáry
- omezené množství prostorových funkcí, lze řešit využitím externím knihoven, např. turf anebo pymongo+GDAL a pod.
TODO
- qgis - db manager - font
- gis1-3 (11) crosses X overlaps
- gis1-4 (5) optimizalizace
- gis1-4 (8) zelez 5buf
Sqltutor - Errdata
- Bocan
- Kolik je obcí v ČR, kde mezi lety 1991 a 2001 vzrostl počet obyvatel alespoň o 100%?
SELECT COUNT(*) FROM cities WHERE (popul01 - popul91) / popul91 > 1.0;
- popul - integer
SELECT count(*) FROM cities WHERE (popul01 - popul91) / cast(popul91 as float) > 1.0;
- Které obce (vypište jejich název) měli v roce 2002 mezi 4500 a 5000 obyvateli a zároveň leží v Moravskoslezském kraji?
- Kolik je obcí v ČR, kde mezi lety 1991 a 2001 vzrostl počet obyvatel alespoň o 100%?
Správa PostGIS
Databáze
createdb -T template_postgis pgis_uzpd # gis1 pg_dump -Fc -b -v -f gis1.dump -n gis1 template_pgis_student_full pg_restore -Fc -d pgis_uzpd gis1.dump # osm pg_dump -Fc -b -v -f osm.dump -n osm template_pgis_student_full pg_restore -Fc -d pgis_uzpd osm.dump
Uživatelé
createuser -D -R -S -P <user>
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
CREATE SCHEMA <schema>; ALTER SCHEMA <schema> OWNER TO <user>; GRANT ALL ON geometry_columns TO <user>; GRANT CREATE ON SCHEMA <schema> TO <user>; GRANT USAGE ON SCHEMA <schema> TO <user>;
Příklad: uzpd_a11
#!/bin/sh
if [ -z $1 ] ; then
echo "usage: $0 <user>"
exit 1
fi
USER="$1"
SCHEMA="$1"
GROUP=`echo $USER | cut -d'_' -f2`
DB=pgis_uzpd
createuser -D -R -S -g uzpd -w $1
psql $DB -c "CREATE SCHEMA $SCHEMA;"
psql $DB -c "ALTER SCHEMA $SCHEMA OWNER TO $USER;"
psql $DB -c "GRANT ALL ON geometry_columns TO $USER;"
psql $DB -c "GRANT CREATE ON SCHEMA $SCHEMA TO $USER;"
psql $DB -c "GRANT USAGE ON SCHEMA $SCHEMA TO $USER;"
psql $DB -c "ALTER USER $USER WITH PASSWORD '${GROUP}_uzpd18';"
exit 0