[EPIC] Modify data model for multi-tenant SaaS capabilities
This ticked is based on suggestions provided in #235
The core idea is to adapt the data model in a way that following is provided:
-
Radio Station Entity: The Steering data model allows management of multiple radio stations. This is a relatively simple extension by introduction a
Radio
entity referencing programme information. -
Episode Entity: Episodes are autonomous entities, not requiring any hard-linking to Timeslots anymore. An
Episode
is currently represented asNote
, which often leads to confusion when ambiguously referring to it as show note, since it's not actual data on show-level. Furthermore it is hardwired to an timeslot, while episodes actually a.) can be broadcasted within multiple timeslots and b.) don't necessarily need a relation to the timeslot scheme, when they are used as e.g. podcast episodes or are simple episode announcements, without a fixed schedule yet.
Suggested Data Model
From the original ticket:
In diesem Modell, enthält der
TimeSlot
nur noch den Zeitpunkt der Ausstrahlung einer Episode, aber keine relevanten inhaltlichen Daten mehr (einige Felder habe ich der Kürze halber entfernt – die Idee dürfte trotzdem klar sein). Der Schedule wird um eine Beziehung zuRadio
erweitert, so dass darauf aufbauend ein Kalender pro Radio gepflegt werden kann.Theoretisch ließen sich wahrscheinlich auch die Felder aus
Note
komplett inEpisode
auflösen, auf das es dort keine Referenz mehr bräuchte.
erDiagram
TimeSlot {
int id
datetime start
datetime end
fkTimeSlot repetitionOf
fkSchedule scheduleId
fkEpisode episodeId
}
Episode {
int id
fkNote noteId
fkPlaylist playlistId
string memo
}
Schedule {
int id
fkRadio radioId
fkShow showId
}
Radio {
int id
string name
}
This data model represents the raw suggestion and should be analysed in detail.
Promising effects
This simple adaption opens AURA product development to multiple opportunities:
- SaaS Deployment & Multi-tenant usage Individual installations and maintenance require some technical investment not to be underestimated. The overhead for getting the platform up and running, might be not feasible especially for small radio stations, without having adequate technical resources. At least Aura Web and it's radio management capabilities can be provided in form of a cloud solution, where multiple radios can share a single instance. The total cost of ownership can be shared likewise. AURA indirectly benefits by having a broader audience using and supporting the product.
- Multi-channel content delivery: The software suite can not only be used for managing traditional radio stations, but any hybrid approach of providing radio broadcast, website and on-demand podcast content is possible.
- Less ambiguous API design: Development, maintenance and integration is more straight-forward with clear terms and interfaces.
- Better extensibility: It's easier to integrate the platform with other external services.
- Basis for federation and P2P content syndication: This is a feature already discussed with radios stations in the past. AURA can provide a basis for hosting multiple radio stations in form of so-called pods, which are syndicated with other pod instances. In this regards compare any Fediverse-like concepts.
Please note, that this list is mere a collection of ideas. Most of them require considerate amount of additional work. But the data model changes can provide a basis, reducing the need of some essential migrations on the way.