Robert R.: MySQL 5.5, Geometrie-Spaltentypen und -Funktionen

Liebe Mitdenker,
liebe Wissende,
liebe Neugierige,

ja!

Hat jemand von Euch schon Erfahrungen mit den Geometrie-Spaltentypen und -Funktionen von MySQL und könnte mirmal zwei, drei Beispiele geben dafür, wozi man die in der Praxis gebrauchen kann?

  • 'point'
  • 'linestring'
  • 'polygon'
  • 'geometry'
  • 'multipoint'
  • 'multilinestring'
  • 'multipolygon'
  • 'geometrycollection'

Wie würden typische Daten dafür aussehen?
Wieso hat MySQL eigene Spaltentypen dafür?

Spirituelle Grüße
Euer Robert

--
Möge der Forumsgeist wiederbelebt werden!
  1. Aloha ;)

    Hat jemand von Euch schon Erfahrungen mit den Geometrie-Spaltentypen und -Funktionen von MySQL und könnte mirmal zwei, drei Beispiele geben dafür, wozi man die in der Praxis gebrauchen kann?

    Nun ja, Erfahrungen nicht gerade. Aber ich kann das offensichtliche vermuten. Damit werden geometrisch zu interpretierende Daten gespeichert. Z.B. um diese nachher zu einem Bild zusammenzusetzen. Oder, um Daten für komplexe dreidimensionale Szenen zu speichern.

    Für Webseiten ist das wahrscheinlich eher ein Randphänomen mit wenigen Anwendungen. Aber MySQL ist ja auch nicht nur für Webseiten gemacht.

    Um noch ein Argument vorzubringen: Theoretisch kann man ja fast alles mit primitiven Datentypen wie Zahl oder String darstellen, die Frage nach Sinn und Zweck der Geometrie-typen ist also derselbe wie die Frage nach speziellen Datentypen für Geldwerte oder Daten. Schätze, MySQL ist einfach bestrebt, so viele Usecases wie möglich mit speziellen Typen zu versorgen, um einfachen und unkomplizierten Zugriff zu bieten - und sich dadurch selbst als vielseitig einsetzbar darzustellen.

    • 'point'
    • 'linestring'
    • 'polygon'
    • 'geometry'
    • 'multipoint'
    • 'multilinestring'
    • 'multipolygon'
    • 'geometrycollection'

    Wie würden typische Daten dafür aussehen?

    Keine Ahnung. Frag Google und finde ;)

    Wieso hat MySQL eigene Spaltentypen dafür?

    Siehe oben ;)

    Grüße,

    RIDER

    --
    Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
    ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[
  2. Heyho!

    Hat jemand von Euch schon Erfahrungen mit den Geometrie-Spaltentypen und -Funktionen von MySQL und könnte mirmal zwei, drei Beispiele geben dafür, wozi man die in der Praxis gebrauchen kann?

    Du speicherst damit Eigenschaften von 3D-Objekten. Stell dir ein MMO vor wo der User sich auslogt. Beim wieder einloggen soll er an der selben Position erscheinen an der er vor dem ausloggen stand. Die Position wird also in einer Datenbank gespeichert.
    Weiter geht es dann natürlich mit Sachen wie Tracking wenn man bei dem Thema bleiben will. Mir würden aber spontan auch alle anderen Sachen einfallen die irgendwas mit Koordinaten und deren Verbindungen zu tun haben. Flugkoordinaten sollen zur Zeit ja auch sehr gefragt sein...

    Wie würden typische Daten dafür aussehen?

    Keine Ahnung wie die Spezifikation dafür genau aussieht. Ich tippe mal auf mindestens 1 Vektor. Ich möchte mich jetzt aber auch nicht durch das komplexe Thema in der Doku wühlen.

    Wieso hat MySQL eigene Spaltentypen dafür?

    Weil es dafür auch spezielle Funktionen gibt.

    So long.

    1. Liebe Ina,
      liebe Mitdenker,
      liebe Wissende,
      liebe Neugierige,

      ja!

      Hat jemand von Euch schon Erfahrungen mit den Geometrie-Spaltentypen und -Funktionen von MySQL und könnte mirmal zwei, drei Beispiele geben dafür, wozi man die in der Praxis gebrauchen kann?

      Du speicherst damit Eigenschaften von 3D-Objekten. Stell dir ein MMO vor wo der User sich auslogt. Beim wieder einloggen soll er an der selben Position erscheinen an der er vor dem ausloggen stand. Die Position wird also in einer Datenbank gespeichert.
      Weiter geht es dann natürlich mit Sachen wie Tracking wenn man bei dem Thema bleiben will. Mir würden aber spontan auch alle anderen Sachen einfallen die irgendwas mit Koordinaten und deren Verbindungen zu tun haben. Flugkoordinaten sollen zur Zeit ja auch sehr gefragt sein...

      Wie würden typische Daten dafür aussehen?

      Keine Ahnung wie die Spezifikation dafür genau aussieht. Ich tippe mal auf mindestens 1 Vektor. Ich möchte mich jetzt aber auch nicht durch das komplexe Thema in der Doku wühlen.

      Da habe ich schon drin gestöbert, konnte mir aber keinen Anwendungsfall dafür vorstellen.

      Wieso hat MySQL eigene Spaltentypen dafür?

      Weil es dafür auch spezielle Funktionen gibt.

      Die habe ich in der Doku auch entdeckt, konnte aber mangels Anwendungsfall auch noch nichts damit anfangen.

      Ich danke Dir für die Ideen dazu :-)

      Spirituelle Grüße
      Euer Robert

      --
      Möge der Forumsgeist wiederbelebt werden!
      1. Lieber Robert R.,

        denke immer daran, dass Du bei einer Datenbank nach Daten _suchst_ und deshalb die DB-Software geeignete Mechanismen mitbringen muss, die bei der Suche helfend unterstützen. Suchst Du z.B. nach einem 20-seitigen Körper, der auf bestimmten Flächen gewisse Eigenschaften hat, dann wäre es doch Unsinn, dieses alles in Form von reinen Textschnipseln (varchar) in die DB zu schmeißen und die Suche von Deiner Anwendung anstatt von der DB-Software leisten zu lassen...

        Liebe Grüße,

        Felix Riesterer.

        --
        "Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes)
        1. Lieber Felix,
          liebe Mitdenker,
          liebe Wissende,
          liebe Neugierige,

          ja!

          denke immer daran, dass Du bei einer Datenbank nach Daten _suchst_ und deshalb die DB-Software geeignete Mechanismen mitbringen muss, die bei der Suche helfend unterstützen. Suchst Du z.B. nach einem 20-seitigen Körper, der auf bestimmten Flächen gewisse Eigenschaften hat, dann wäre es doch Unsinn, dieses alles in Form von reinen Textschnipseln (varchar) in die DB zu schmeißen und die Suche von Deiner Anwendung anstatt von der DB-Software leisten zu lassen...

          Das ist mir klar. Datentypen gibt es aus mehreren Gründen:

          • Platzbedarf minimieren
          • Granualrität otimieren (höhere Auflösung bei gleichem Platzbedarf)
          • Darstellung optimieren
          • Sortierung ermöglichen, was Voraussetzung für optimiertes Suchen ist
          • Suchen ermöglichen
          • Verarbeitungsfunktionen, zwei Texte "addiert" man anders, als zwei Zahlen
          • ???

          Ich kann mir nur noch nicht vorstellen, wie man Polygone, Linien oder Punkte sortieren kann. Vielleicht hätte ich da bei der Matritzenrechnung besser aufpassen müssen?

          Allerdings könnte ich mir vorstellen, dass man zwei Vektoren direkt im DBMS addiert, ohne also erst die Werte holen, verarbeiten und dann wieder zurückschreiben zu müssen.

          Spirituelle Grüße
          Euer Robert

          --
          Möge der Forumsgeist wiederbelebt werden!
          1. Heyho!

            Ich kann mir nur noch nicht vorstellen, wie man Polygone, Linien oder Punkte sortieren kann. Vielleicht hätte ich da bei der Matritzenrechnung besser aufpassen müssen?

            Man könnte z.B. nur die Vektoren oder Körper suchen die in einem bestimmten Bereich liegen (z.B. vor der Kamera und nicht hinter andern Objekten). Anwendung findet das in so ziemlich jeder 3D-Engine.

            Allerdings könnte ich mir vorstellen, dass man zwei Vektoren direkt im DBMS addiert, ohne also erst die Werte holen, verarbeiten und dann wieder zurückschreiben zu müssen.

            Jede Vektorberechnung, nicht nur die Addition. Multiplikation von Vektoren ist wohl eine Standardaufgabe. Das bestimmte Funktionen nur bei bestimmten Datentypen Sinn ergeben, hast du ja schon erkannt.

            So long.