"Adressräume" für Objekt-IDs reservieren (brainstorming)

Ich überlege da schon längere Zeit dran rum, ich halte es für sinnvoll (bzw. eher hilfreich) Objekt-IDs für die einzelnen Objektarten zu reservieren.
Ich erklär das mal an direktem Beispiel, versteht sich besser:

Adressraum
5.xxx.xxx.xxx für Nodes
6.xxx.xxx.xxx für ways
7.xxx.xxx.xxx für relationen
8.xxx.xxx.xxx für irgendwas komisches, was sich irgendwer irgendwann ausdenkt.

(Die Zahlen sind nur Beispiele, man kann das auch bei 10 MRD anfangen oder sonstwo)

Vorteil:

  • Mensch kann die Art eines Objektes an der ID erkennen → DAS ist ein Node vs. DAS ist ein Way …
  • Maschine kann die Art ein Objektes erkennen. Beispiel: Man hat eine ID in der Zwischenablage, JOSM:Objekt herunterladen → Wahrscheinlichkeit ist 100% dass Josm “weiss” was es laden soll, statt momentan 33%.

2 Fragen dazu:

  • gibt es sowas schon? Ich finde gerade keine halbwegs neuen ways (aber Nodes) mit ID 4 MRD.xxx
  • irgendwelche Nachteile bei der Vorgehensweise? Oder gar weitere Vorteile?

Hallo, was für ein Problem / welche Aufgabe willst du damit lösen?

  • Du adressierst riesigie Zahlen, was Speicherplatz frisst, z.B. “5.001.000.000” statt nur “1.000.000”
  • Dann natürlich das Problem mit dem Überlauf: 5.999 => 6.000 - also müsste man von Anfang an noch mehr Platz einbauen (noch größer)

Man könnte die Zahlenräume auch verketten:

ID mod 4 = 0 : Node
ID mod 4 = 1 : Way
ID mod 4 = 2 : Relation
ID mod 4 = 3 : irgendwas komisches, was sich irgendwer irgendwann ausdenkt

Die Nodes heißen dann 0, 4, 8, 12, 16 …, die Ways 1, 5, 9, 13, 17 … und so weiter.

Das wäre mit praktisch null Rechenleistung auswertbar, nötze den Zahlenraum besser aus als feste Anfangsziffern und hätte kein Überlaufproblem.

–ks

Verstehe ich nicht.
die 1. Mio wurde vor 11 Jahren vergeben, die erste Mrd. vor 6., der “Speicherplatz” wird also aktuell schon gefressen.
Meine Zahlen sind auch eher fiktiv, mir geht’s um das “Problem” an sich.

Die Idee von Kreuzschnabel finde ich ganz gut, da sie a: zukunftssicher aussieht und b: jederzeit angefangen werden könnte ohne auf “freie” Zahlen zu warten.

Und was willste mit den bisherigen IDs machen? Einmal drüber und alle neu vergeben?

So gross ist das “Problem” nun doch nicht :wink:
Es sei denn, jmd. fällt noch ein Killerargument ein.

Ich hatte mir ja vor langer Zeit mal Gedanken dazu gemacht, gewisse Wertebereiche zu reservieren (z.B. a la privater IP Adressraum), oder mindesten die 50% die wir aktuell wegschmeissen für solche Zwecke zu strukturieren.

Trotzdem halte ich den Vorschlag von MKnight nicht für wirklich sinnvoll, einerseits ist der Nutzen sehr sehr klein wenn überhaupt vorhanden (es ist wirklich kein Problem mit den parallelen Wertebereichen umzugehen), anderseits ist es aber auch so, dass wir gerade bei den Nodes gar nicht sooooo viel Spielraum haben, sprich wir können aktuell 6 nodes/cm^2 auf der Landoberfläche verwenden (so lange wir nicht anfangen den Meeresboden zu mappen :-)). Das ist sicher genug, wenn man da aber nur 1/100 oder so davon hat, scheint es mir dann eher knapp. Ohne Umnummerierung sind IDs für gelöschte Objekte übrigens verloren, wir haben also neben den Verbrauch für aktuelle Objekte auch den zu berücksichtigen (aktuell +25%).

naja, dann killen wir mal:

einige der “notwendigen” Änderungen:

  • ALLES in der OSM-Datenhaltung (also die OSM-Server, die die Datenbanken halten)
  • OSM-API
  • gesamte Renderung-Chain incl osm2pgsql und Carto
  • Erzeugung planet-File und diverser Exporte
  • ALLE Editoren incl. ALLE Apps
  • ALLE Tools
  • ALLE OSM-basierenden Karten
  • ALLE von der OSM-Kommunity und von Firmen entwickelte Software
  • t.b.c.

Träumt weiter. Ich träume wenigstens “nur” von der API 0.7, aber selbst die ist wohl illusorisch.

Gruss
walter

Damit brauchst du für Node, Ways und Relations 64bit Werte, heute benötigt man nur 64bit für die Nodes, der Rest geht (noch) mit 32bit. Das betrifft 419531586 Ways und 5062122 Relationen.

Und damit noch nicht gelöst, das Problem alle bestehenden Files auf das neue Schema umzustellen, also alle Minutely/Hourly/Daily diffs, alle Planets, alle Extrakte, etc. Weiterhin offen, entspricht jetzt ein Node ID dem alten oder neuen Schema? Totales Chaos ist 100% garantiert.

Ich sag nur IPv6 … 128bit rules.

Ich habe nur MKnights Vorschlag optimiert. Ich habe nicht gesagt, dass ich die Idee generell gut finde :slight_smile:

–ks

Es gibt aber in der Tat eine Anwendung, die heute schon mit diesen Adressräumen arbeitet und Node + Ways + Relationen auf eine eigene ID für Areas abbildet: Overpass API.

Dort wird das aber eher zum internen Managen der Areas benötigt, einem berechneten Objekt, was es so nicht in der OSM Datenbank gibt.

Area ID = OSM way + 2400000000
bzw.:
Area ID = OSM relation + 3600000000

http://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL#By_area_.28area.29

Genau, mit “Magic-Numbers” (zB. 01=Node, 02=Way, 03=Rela) im Pre- oder Postfix könnte man das “Problem” bequem auf Interface Ebene abbilden, ohne die API damit zu quälen.

Das frage ich mich auch, Antworten konnte ich bisher nicht rauslesen.
Bevor man hier über etwaige Implementationen nachdenkt, sollte doch erstmal das Problem definiert werden, oder nicht?

Wie war das noch mal? “Wir haben eine wunderbare Lösung, uns fehlt nur noch das Problem dafür.”

Also wissen 'se nee
walter

Das “Problem” habe ich im ersten Beitrag skizziert:

Und was das Problem betrifft:

(Hervorhebungen nachgetragen…)
Wenn da irgendwas missverständlich war, keine Ahnung, wollte keinen Roman schreiben :roll_eyes:

Also ich finde, MKnight hat das doch sogar sehr exemplarisch aufgeführt:

Wenn ich euch jetzt einfach so eine ID hinknalle, z.B. die 5953053, was möchte ich dann gerne bearbeiten? Einen Node, einen Way oder eine Relation?

Nachtrag: wieder zu langsam :confused:

PS: Nachtrag zu MKnight: vielleicht sollten wir es nicht exemplarisch schreiben sondern direkt: man braucht um zu wissen, was man bearbeiten möchte, vorher erst mindestens eine Abfrage, um was für einen Typ es sich handelt …
und um es noch trockener und technischer zu schreiben, schaut euch einfach /#id an (da muss man wissen, ob es ein node ein way oder eine relation ist) :wink:

Ach so. Ok, das habe ich nicht als Problem erkannt.

Nix. Ich bitte dich, aussagekräftige Daten zu liefern, ansonsten → Mülltonne.

Prinzipiell ist es natürlich richtig: Wenn es unterschiedliche Adressräume gäbe, wäre es hier einfacher. Aber das hätte man 2003 (?) mit Steve klären müssen, der das von Anfang an anders definiert hat.

Ändern kann man das theoretisch auch, aber einige der Konsequenzen hab ich (und andere Kollegen) ja bereits angedeutet.

Gruss
walter

Naja, ihr denkt halt sehr im “alten” relationalen OSM Datenbank-Schema … musste neulich auch erst die ID anpassen, als ich nodes, ways und relations in NoSQL Systeme wie MongoDB und Neo4J importieren wollte und eben KEINE getrennten Typen, sondern einfach nur “Dokumente” anlegen wollte, da hätte es mit den “doppelten” IDs gekracht :confused:

PS: unabhängig davon, dass es bei Neo4J sowie eine eigene _ID gibt…