petgraph_ext
Graphalgorithmen für DuckDB — PageRank, kürzester Pfad, SCC, MST und mehr über petgraph
Maintainer: alitrack
Installation und Laden
INSTALL petgraph_ext FROM community;LOAD petgraph_ext;Beispiel
INSTALL petgraph_ext FROM community;LOAD petgraph_ext;SELECT * FROM petgraph_shortest_path('[(0,1,2.5),(1,2,1.0),(0,2,5.0)]', 0, 2);-- → [0,1,2] 3.5Über petgraph_ext
duckdb_petgraph
Eine DuckDB-Erweiterung, die Graphalgorithmen nach SQL bringt, angetrieben von der Rust-Crate petgraph. Führen Sie PageRank, Betweenness Centrality, Closeness Centrality, Eigenvector Centrality, SCC, Louvain-Community-Detection, topologische Sortierung, Zyklenerkennung, kürzesten Pfad, Zusammenhangskomponenten und MST aus — ohne externe Graphdatenbank.
Funktionen
- 17 Tabellenfunktionen: build_graph, list_graphs, drop_graph, edges, neighbors, shortest_path, connected_components, pagerank, betweenness_centrality, closeness_centrality, eigenvector_centrality, scc, mst, louvain, toposort, is_cyclic
- Benannter Graph-Cache: einmal mit
petgraph_build_graph('name', ...)aufbauen und mit@namereferenzieren für wiederholte Abfragen ohne erneutes Parsen - Multi-Batch-Streaming: alle mehrzeiligen Funktionen streamen Ergebnisse über Scan- Aufrufe — keine künstliche 2048-Zeilen-Obergrenze
- Kantenformat: String-Syntax
[(src,dst,weight),...], inline verwendbar oder aus DuckDB-Tabellen überstring_aggaufgebaut
Algorithmen
| Function | Description |
|---|---|
petgraph_shortest_path |
A*-kürzester Pfad mit Pfadrekonstruktion |
petgraph_connected_components |
DFS-Komponentenbeschriftung (ungerichtet) |
petgraph_pagerank |
PageRank mit konfigurierbarem Alpha/Iterationen |
petgraph_betweenness_centrality |
Brandes-Algorithmus (ungerichtet) |
petgraph_closeness_centrality |
BFS-basierte Closeness (gerichtet) |
petgraph_eigenvector_centrality |
Power-Iteration-Eigenvektor |
petgraph_scc |
Tarjans stark zusammenhängende Komponenten |
petgraph_louvain |
Louvain-Community-Detection |
petgraph_toposort |
Kahns topologische Sortierung |
petgraph_is_cyclic |
Gerichtete Zyklenerkennung |
petgraph_mst |
Kruskals minimaler Spannbaum |
Einschränkungen
- Graphen müssen in den Speicher passen (kein festplattenbasiertes Speichern)
- Louvain ist ein vereinfachter Greedy-Durchlauf mit 20 Iterationen — nützlich für schnelle Community-Detection, aber keine vollständige Implementierung
- Kantengewichte sind nur f64
- Knoten-IDs sind i32
Hinzugefügte Funktionen
| function_name | function_type | description | comment | examples |
|---|---|---|---|---|
| petgraph_betweenness_centrality | table | NULL | NULL | |
| petgraph_build_graph | table | NULL | NULL | |
| petgraph_build_graph_list | table | NULL | NULL | |
| petgraph_closeness_centrality | table | NULL | NULL | |
| petgraph_connected_components | table | NULL | NULL | |
| petgraph_drop_graph | table | NULL | NULL | |
| petgraph_edges | table | NULL | NULL | |
| petgraph_eigenvector_centrality | table | NULL | NULL | |
| petgraph_is_cyclic | table | NULL | NULL | |
| petgraph_list_graphs | table | NULL | NULL | |
| petgraph_louvain | table | NULL | NULL | |
| petgraph_mst | table | NULL | NULL | |
| petgraph_neighbors | table | NULL | NULL | |
| petgraph_pagerank | table | NULL | NULL | |
| petgraph_scc | table | NULL | NULL | |
| petgraph_shortest_path | table | NULL | NULL | |
| petgraph_toposort | table | NULL | NULL |
Überladene Funktionen
Diese Erweiterung fügt keine Funktionsüberladungen hinzu.
Hinzugefügte Typen
Diese Erweiterung fügt keine Typen hinzu.
Hinzugefügte Einstellungen
Diese Erweiterung fügt keine Einstellungen hinzu.