What is pgRouting and what are its top alternatives?
pgRouting is an open-source extension of PostgreSQL that provides a set of advanced routing functionalities. It allows users to perform complex network analysis, such as shortest path calculation, traveling salesman problem, and vehicle routing problem. Key features of pgRouting include support for various algorithms like Dijkstra, A* (A-star), and driving distance, as well as integration with OpenStreetMap data. However, pgRouting may be challenging for users who are not familiar with SQL and database management, and it lacks some advanced optimization features found in commercial routing solutions.
- OSRM (Open Source Routing Machine): OSRM is a high-performance routing engine designed for OpenStreetMap data, offering fast route calculation and multiple profile support. Pros: Quick route computation, suitable for large datasets. Cons: Limited support for turn restrictions and alternative routes.
- GraphHopper: GraphHopper is a flexible routing engine that supports multiple algorithms and custom vehicle profiles. Key features include real-time traffic updates and isochrone calculations. Pros: Easy setup, detailed documentation. Cons: Paid services may be required for certain features.
- Valhalla: Valhalla is an open-source routing engine that supports dynamic costing options, such as cycling routes and truck restrictions. It also offers advanced optimization features like time window constraints. Pros: Customizable routing profiles, multi-modal routing. Cons: Complex configuration settings may be overwhelming for beginners.
- ORS (OpenRouteService): ORS is a routing service that is based on OpenStreetMap data and provides options for pedestrian, cycling, and driving routes, as well as wheelchair accessibility. Pros: User-friendly interface, detailed route options. Cons: Limited customization for advanced routing scenarios.
- ITN Converter: ITN Converter is a free tool for converting and editing GPS waypoints, routes, and tracks. It supports various file formats and offers batch conversion capabilities. Pros: Simple interface, comprehensive file format support. Cons: Limited routing functionality compared to specialized routing engines.
- Open Source Routing Library (OSR): OSR is a C++ library for route calculations with OpenStreetMap data, providing speed and memory-efficient route planning. Pros: High-performance routing engine, suitable for large-scale networks. Cons: Requires coding knowledge for customization.
- Google Maps Platform: Google Maps Platform offers a range of routing APIs for developers, including directions, distance matrix, and geocoding services. Pros: Integration with other Google services, up-to-date map data. Cons: Limited free usage tier, pricing based on usage volume.
- HERE Routing API: HERE Routing API provides precise routing and navigation services with real-time traffic updates, public transit information, and truck routing options. Pros: Robust route calculation, advanced transportation features. Cons: Subscription-based pricing model, complex API documentation.
- Mapbox Directions API: Mapbox Directions API offers route optimization, traffic-aware navigation, and isochrone calculations for custom map applications. Pros: Developer-friendly SDKs, customizable design options. Cons: Limited free tier, pricing based on usage metrics.
- GraphHopper Directions API: GraphHopper Directions API provides routing services with fast response times, mobile SDKs, and customizable vehicle profiles. Pros: Fast route calculation, offline routing capabilities. Cons: Premium pricing for certain features, limited community support.
Top Alternatives to pgRouting
- Valhalla
Valhalla is Mapzen’s open-source routing service for client-side routing applications and hosted solutions. If you are looking to avoid the challenge of data creation and database administration, you can get high-quality routes and navigational guidance with clear directions through a simple API call. ...
- OSRM
It is a C++ implementation of a high-performance routing engine for shortest paths in road networks ...
- Neo4j
Neo4j stores data in nodes connected by directed, typed relationships with properties on both, also known as a Property Graph. It is a high performance graph store with all the features expected of a mature and robust database, like a friendly query language and ACID transactions. ...
- Slick
It is a modern database query and access library for Scala. It allows you to work with stored data almost as if you were using Scala collections while at the same time giving you full control over when a database access happens and which data is transferred. ...
- Spring Data
It makes it easy to use data access technologies, relational and non-relational databases, map-reduce frameworks, and cloud-based data services. This is an umbrella project which contains many subprojects that are specific to a given database. ...
- DataGrip
A cross-platform IDE that is aimed at DBAs and developers working with SQL databases. ...
- DBeaver
It is a free multi-platform database tool for developers, SQL programmers, database administrators and analysts. Supports all popular databases: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL Server, Sybase, Teradata, MongoDB, Cassandra, Redis, etc. ...
- Microsoft SQL Server Management Studio
It is an integrated environment for managing any SQL infrastructure, from SQL Server to Azure SQL Database. It provides tools to configure, monitor, and administer instances of SQL Server and databases. Use it to deploy, monitor, and upgrade the data-tier components used by your applications, as well as build queries and scripts. ...
pgRouting alternatives & related posts
- Open source2
related Valhalla posts
related OSRM posts
Google Maps lets "property owners and their authorized representatives" upload indoor maps, but this appears to lack navigation ("wayfinding").
MappedIn is a platform and has SDKs for building indoor mapping experiences (https://www.mappedin.com/) and ESRI ArcGIS also offers some indoor mapping tools (https://www.esri.com/en-us/arcgis/indoor-gis/overview). Finally, there used to be a company called LocusLabs that is now a part of Atrius and they were often integrated into airlines' apps to provide airport maps with wayfinding (https://atrius.com/solutions/personal-experiences/personal-wayfinder/).
I previously worked at Mapbox and while I believe that it's a great platform for building map-based experiences, they don't have any simple solutions for indoor wayfinding. If I were doing this for fun as a side-project and prioritized saving money over saving time, here is what I would do:
Create a graph-based dataset representing the walking paths around your university, where nodes/vertexes represent the intersections of paths, and edges represent paths (literally paths outside, hallways, short path segments that represent entering rooms). You could store this in a hosted graph-based database like Neo4j, Amazon Neptune , or Azure Cosmos DB (with its Gremlin API) and use built-in "shortest path" queries, or deploy a PostgreSQL service with pgRouting.
Add two properties to each edge: one property for the distance between its nodes (libraries like @turf/helpers will have a distance function if you have the latitude & longitude of each node), and another property estimating the walking time (based on the distance). Once you have these values saved in a graph-based format, you should be able to easily query and find the data representation of paths between two points.
At this point, you'd have the routing problem solved and it would come down to building a UI. Mapbox arguably leads the industry in developer tools for custom map experiences. You could convert your nodes/edges to GeoJSON, then either upload to Mapbox and create a Tileset to visualize the paths, or add the GeoJSON to the map on the fly.
*You might be able to use open source routing tools like OSRM (https://github.com/Project-OSRM/osrm-backend/issues/6257) or Graphhopper (instead of a custom graph database implementation), but it would likely be more involved to maintain these services.
- Cypher – graph query language70
- Great graphdb61
- Open source33
- Rest api31
- High-Performance Native API27
- ACID23
- Easy setup21
- Great support17
- Clustering11
- Hot Backups9
- Great Web Admin UI8
- Powerful, flexible data model7
- Mature7
- Embeddable6
- Easy to Use and Model5
- Best Graphdb4
- Highly-available4
- It's awesome, I wanted to try it2
- Great onboarding process2
- Great query language and built in data browser2
- Used by Crunchbase2
- Comparably slow9
- Can't store a vertex as JSON4
- Doesn't have a managed cloud service at low cost1
related Neo4j posts
We have an in-house build experiment management system. We produce samples as input to the next step, which then could produce 1 sample(1-1) and many samples (1 - many). There are many steps like this. So far, we are tracking genealogy (limited tracking) in the MySQL database, which is becoming hard to trace back to the original material or sample(I can give more details if required). So, we are considering a Graph database. I am requesting advice from the experts.
- Is a graph database the right choice, or can we manage with RDBMS?
- If RDBMS, which RDMS, which feature, or which approach could make this manageable or sustainable
- If Graph database(Neo4j, OrientDB, Azure Cosmos DB, Amazon Neptune, ArangoDB), which one is good, and what are the best practices?
I am sorry that this might be a loaded question.
I'm evaluating the use of RedisGraph vs Microsoft SQL Server 2019 graph features to build a social graph. One of the key criteria is high availability and cross data center replication of data. While Neo4j is a much-matured solution in general, I'm not accounting for it due to the cost & introduction of a new stack in the ecosystem. Also, due to the nature of data & org policies, using a cloud-based solution won't be a viable choice.
We currently use Redis as a cache & SQL server 2019 as RDBMS.
I'm inclining towards SQL server 2019 graph as we already use SQL server extensively as relational database & have all the HA and cross data center replication setup readily available. I still need to evaluate if it fulfills our need as a graph DB though, I also learned that SQL server 2019 is still a new player in the market and attempts to fit a graph-like query on top of a relational model (with node and edge tables). RedisGraph seems very promising. However, I'm not totally sure about HA, Graph data backup, cross-data center support.
related Slick posts
Spring Data
related Spring Data posts
I need some advice to choose an engine for generation web pages from the Spring Boot app. Which technology is the best solution today? 1) JSP + JSTL 2) Apache FreeMarker 3) Thymeleaf Or you can suggest even other perspective tools. I am using Spring Boot, Spring Web, Spring Data, Spring Security, PostgreSQL, Apache Tomcat in my project. I have already tried to generate pages using jsp, jstl, and it went well. However, I had huge problems via carrying already created static pages, to jsp format, because of syntax. Thanks.
- Works on Linux, Windows and MacOS4
- Code analysis3
- Diff viewer2
- Wide range of DBMS support2
- Generate ERD1
- Quick-fixes using keyboard shortcuts1
- Database introspection on 21 different dbms1
- Export data using a variety of formats using open api1
- Import data1
- Code completion1
related DataGrip posts
- Free21
- Platform independent13
- Automatic driver download9
- Import-Export Data7
- Simple to use6
- Move data between databases4
- Wide range of DBMS support4
- SAP Hana DB support1
- Themes1
related DBeaver posts
Which tools are preferred if I choose to work on more data side? Which one is good if I decide to work on web development? I'm using DBeaver and am now considering a move to AzureDataStudio to break the monotony while working. I would like to hear your opinion. Which one are you using, and what are the things you are missing in dbeaver or data studio.
Microsoft SQL Server Management Studio
related Microsoft SQL Server Management Studio posts
We have a 138 row, 1700 column database likely to grow at least a row and a column every week. We are mostly concerned with how user-friendly the graphical management tools are. I understand MySQL has MySQL WorkBench, and Microsoft SQL Server has Microsoft SQL Server Management Studio. We have about 6 months to migrate our Excel database to one of these DBMS, and continue (hopefully manually) importing excel files from then on. Any tips appreciated!