Como puedo hacer lo siguiente en canvas.

Sabiendo que se puedan crear mas circulos y aristas, y deben ser draggable.
Y habra alguna manera de guardar el estado actual de todo el grafico en una base de datos?
Algun framework que me recomienden.
Gracias.
