Should changingsong be also able to save data to regular relational database?
- Of course current data format used by opensong (every song in a separate file) would be kept and user could change what type of storage he would use. Should it be possible to use both types of storage at the same time?
- Saving media files (songs, pictures, videos) and playlist also to the database?
- What database system would you use(mysql, postgresql, etc)?
I like having each song be in a separate file in a human readable format. It is nice to be able to open the song with a text editor and see how the data is stored. I realize that this might need to change depending on what features are included and how they are implemented.
Is it possible to use a database that just indexes what is available and links things together? This might be how things are done now but I don't know.
As far as I know OpenSong does some caching of songnames during its startup. One song one xml, one set one xml. It's simple but implement searching is a pain.
I'm not aware how difficult it is to create and maintain a cache of song names and lyrics and especially how to handle changens to database when any xml file is modified.
It is fairly easy to do this. Have you ever used a web search engine, a desktop search tool, Windows native Content indexing services ... They all do exactly this but in a much more general way.
It's exactly what OpenSongSearch does to speed up fulltext search of lyrics in OpenSong: Read part of all the song files in to a database. OpenSongSearch actually reads the lyrics (with stripped chords) and some key fields and relies on the SQL engine to perform the fulltest search. A different approach was to just store a fulltext index pointing to the files (or offsets within the file).
Web search engines use crawlers to find updates, OpenSongSearch updates on user request.
ChangingSong should do it by reading the directory list at startup and comparing file times and size to stored values. Any mismatches need update to the database. While running, ChangingSong can register a notification with the OS to be informed of any file changes in relevant directories. ChangingSong should do this database/cach update in a background thread in order to not delay startup (I consider speedy startup an impotant feature of a presentation software)
Personally I also like having a human readable format.
Your suggestion sounds promising. We could do it so. We'll hear perhaps more comments from other people.
If indexing is running in the background, we couldn't allow user to do searching in songs until indexing is done.
I'm sorry I didn't explain the purpose of this forum sufficiently.
This forum is about remote database storage not about local storage!
For local storage method see this forum:
Could you please explain what you refere to by saying local and remote (database) storage. What kind of data storage model do you have in mind?
- all data saved on local computer
remote (database) storage:
- "all" data saved on a remote (another) computer in any DB system (mysql, ...)
- as I wrote this might be useful for:
-- synchronizing data with other people (you can work from home and upload data through Internet to central DB)
-- be able to use data for presentation direct from DB without saving them locally
- I'm not sure if any people would use any of these features.
Should it be possible to use both types of storage at the same time?
This could be very useful. Most of the people working with songs at my congregation are volunteers, and they would like to be able to work from home. If a database like MySQL was used for remote storage, another application might be able to provide updating functionality on the web, and then allow dumping back into the ChangingSong text format. We already have a system for synchronizing text files based on the last modified date.
The text functionality is not an explicit requirement as long as backups are provided in ChangingSong, and ChangingSong can work from a backup (when no network is available) without too much pain.
Saving media to the SQL server?
This would be useful, and it is something I would like to do, whether ChangingSong supports it directly or not. An easy, but only partial solution to the integration problem is iTunes, which publishes its library in XML, and has some basic sharing features. The downside is that it is closed source and not available for Linux.
Of the open source databases, I use mysql most often.
Do you need using both types of storage at the same time only for synchronizing data with other people or even for loading data from DB for presentation?
Could you please deeper explain your opinions how using both types of storage at the same time should work or how synchronizing should work?
For example: 1st person have created new songs and he wants to upload new songs to the database but someone have just uploaded several songs with same names. Then changingsong should do this, that, ...
local storage - purpose: not much different than in opensong
remote storage - purpose: I'm not sure with that yet. It depends on user choice. Some ideas:
- synchronizing(adding, deleting) data with other users (e.g. I can write new lyrics on Saturday evening and the operator could download new songs on Sunday morning)
- or changingsong could use remote storage to load data for presentation
I think using both storage method simultaneously is not desirable.
To remote storage should go same data as are on local host. (I think)
Remote storage is not synonymous for centralized storage. By remote storage I mean all clients share the same data.
I suggest not to save playlists in the database. Let thos in a seperate file. so that would be easy to distribute between computers / users. It would be nice when pictures, scriptures, songs and settings are put as well in the same "playlist file" a similar way as OpenSong does, but more (OpenSong places pictures, chnges of style, and custom slides in the set-file). So that it would be very easy to swap between users.
I've an idea that playlists could be exported/imported to/from one file, where could be saved all files needed by particular playlists (songs, pictures, styles, ...)