Diskuse:155UZPD Úvod do zpracování prostorových dat: Porovnání verzí
m (→TODO) |
m (→Uživatelé) |
||
(Není zobrazeno 26 mezilehlých verzí od 2 dalších uživatelů.) | |||
Řádek 1: | Řádek 1: | ||
== NoSQL == | |||
* {{wikipedia|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. | |||
* {{wikipedia|CAP theorem|lang=en}} (MongoDB->one-master vs CouchDB->multi-master), často chybí {{wikipedia|ACID|lang=en}} | |||
* MongoDB, Cassandra, Redis, CouchDB nebo Neo4J | |||
=== Mongo === | |||
* postavena na formátu {{wikipedia|JSON}}, resp. {{wikipedia|BSON|lang=en}} | |||
* 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 [https://docs.mongodb.org/manual/tutorial/build-a-2d-index/ 2d index], [https://docs.mongodb.org/manual/tutorial/build-a-2dsphere-index/ 2dsphere index], [https://docs.mongodb.org/manual/tutorial/build-a-geohaystack-index/ Haystack index] | |||
* oblouky -> lomené čáry | |||
* omezené množství prostorových funkcí, lze řešit využitím externím knihoven, např. [http://turfjs.org/ turf] anebo pymongo+GDAL a pod. | |||
== TODO == | == TODO == | ||
* | * qgis - db manager - font | ||
* | |||
* gis1- | * gis1-3 (11) crosses X overlaps | ||
* gis1- | * gis1-4 (5) optimizalizace | ||
* gis1-4 (8) zelez 5buf | |||
== Sqltutor - Errdata == | == Sqltutor - Errdata == | ||
Řádek 22: | Řádek 47: | ||
createdb -T template_postgis pgis_uzpd | createdb -T template_postgis pgis_uzpd | ||
# gis1 | # gis1 | ||
pg_dump -Fc -b -v -f gis1.dump -n gis1 | pg_dump -Fc -b -v -f gis1.dump -n gis1 template_pgis_student_full | ||
pg_restore -Fc -d pgis_uzpd gis1.dump | pg_restore -Fc -d pgis_uzpd gis1.dump | ||
# osm | # osm | ||
pg_dump -Fc -b -v -f osm.dump -n osm | pg_dump -Fc -b -v -f osm.dump -n osm template_pgis_student_full | ||
pg_restore -Fc -d pgis_uzpd osm.dump | pg_restore -Fc -d pgis_uzpd osm.dump | ||
Řádek 44: | Řádek 69: | ||
<source lang=bash> | <source lang=bash> | ||
#!/bin/sh | #!/bin/sh | ||
if [ -z $1 ] ; then | if [ -z $1 ] ; then | ||
Řádek 52: | Řá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 62: | Řá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