Diskuse:155UZPD Úvod do zpracování prostorových dat: Porovnání verzí

Z GeoWikiCZ
 
(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 ==


* equals - bod/bod
* qgis - db manager - font
* setsrid() ??
 
* gis1-3 / 7
* gis1-3 (11) crosses X overlaps
* gis1-3 / 11
* gis1-4 (5) optimizalizace
* update geom = st_transform()...
* 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 template_pgis_student
  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 template_pgis_student
  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 -P $1
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
    1. 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;
      
    2. 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?

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