2015-09-11 56 views
0

我正在編寫一個媒體庫應用程序(如iTunes)。用戶可以擁有數千個媒體文件(一些文件可能像音樂一樣小,一些文件可能像電影一樣大)用戶應該快速完成搜索,添加,刪除,更改信息等操作。我試圖做出關於如何存儲&回收這些文件的決定。我應該實現一個數據庫還是讓操作系統管理文件(媒體庫應用程序)

方式一:像iTunes我可以創建庫文件夾,該文件夾中我可以創建另一個文件夾爲每個藝術家,每個藝術家的文件夾,我可以對每個相冊創建一個文件夾,並在最後的相冊文件夾中我可以存儲音樂文件。我將創建另一個文件來存儲有關音樂文件(相冊,歌詞等)的信息。這種方式很容易實現和管理。它也會很快。

第二種方法:我可以將所有內容存儲在1個文件中。我可以使用數據庫來存儲一切,或者我可以使用其他方法,如BinarySerialization和創建我自己的文件類型。該文件類型可以具有媒體文件本身,並且它是其中的信息。我不知道它是否可能。我不知道它是否足夠快以提取文件並對其進行更改並將其存回。

我應該使用itune的方式,還是可以推薦另一種方式來做到這一點。

+0

除了問題太廣泛,文件可以很容易地流式傳輸,從一個大文件讀取blob不能。視頻文件可能會非常大,這使得無法將它們合併到一個大文件中。用戶也會討厭他們的媒體被鎖定在一些專有文件格式的想法。 –

回答

0

你應該用iTunes的方式來做。這使用戶無需使用應用程序即可更加靈活地複製,移動和刪除歌曲。

管理和索引一個大文件可能很麻煩。如果應用程序可以像您說的那樣管理數千首歌曲,則該文件可以快速增長。

我會保留一個數據庫來存儲元數據,如歌曲標題,藝術家和位置在磁盤上。不要用它來組織實際的內容。無論如何,iTunes就是這麼做的。這樣,您可以快速加載歌曲列表,而無需實際篩選歌曲的媒體內容。

1

使用數據庫存儲有關文件的元數據,以便您可以按藝術家,專輯,流派,日期等將其索引,但將二進制數據存儲在文件系統中。

數據庫包含對文件系統中文件的引用。

我自己的多區音樂播放器還會在數據庫中存儲文件的MD5哈希值,以便它可以輕鬆地找到重複項。數據庫中的每個條目都有一個磁盤位置列表,而不是一個磁盤位置,如果存在的話它將會回放。

相關問題