Veri modeli
bae’in kataloğu sıradan SQLite’tır; coven’e tablo tablo bildirilir: eşzamanlanan tablolar onları okuyabilen her aygıta gider; bildirilmemiş tablolar aygıttan hiç ayrılmaz. Ayrım veri modelinin en çok yük taşıyan kararıdır, bu yüzden bu sayfa onun etrafında düzenlenmiştir.
Katalog grafiği
Bu bölüme bağlantıŞemanın eşzamanlanan kalbi:
artists,albums,works: gruplama katmanı. Albüm sürümlerini toplar ve bir primary sürümü gösterir; works klasik yapı için parent/child grafiği oluşturur.releases: merkezi varlık, içe aktarılan her kopya için bir satır. Baskı gerçeklerini (etiket, katalog numarası, çizgi kodu, ülke, biçim, yıl), seçenek meta veri kaynağı, ithal edilen dizin içeriğinin hash değeri ve ölçülmüş albüm ses seviyesini taşır. Kaynak yok demek meta verilerin doğrudan girildiği anlamına gelir; dış kaynak kesin kaynak çıkış adını verirken Dosya etiketleri yerel bir snapshot kaynağı kaydeder.release_identities: bir sürümün olduğu için kesin dış kimlikler. Satır yoksa dış kimlik yok demektir. Her satır bir MusicBrainz veya Discogs sürüm ve sürüm grubunun adını verir, ve bir sürüm her iki kaynakta da aynı anda kimliklere sahip olabilir. Bu, kaynaktan ayrıdır: kimlik, mevcut düzenleyici meta verisinin o kaynaktan geri konulduğunu iddia etmeden değişebilir.tracksiletrack_artists, ayrıcarelease_artist_rolesvetrack_artist_roles: parça listeleri ve krediler; her kredi kaynağıyla etiketlenir.track_works,work_parts,work_artists: icra ettikleri eserlere bağlı kayıtlar.audio_formatsveaudio_format_segments: çalma özellikleri. Parça başına: codec, örnekleme hızı, bit derinliği, kanallar, ölçülen ses düzeyi ve tepe, pregap uzunlukları. Segmentler bir parçayı kaynak dosyalarının sıralı bayt ve örnek pencerelerine eşler; bu sayede bir CUE rip’inin parçası, pregap dahil, büyük bir dosyanın veya birkaç dosyanın bölgelerine yayılabilir.release_files,covers,artist_images: blob taşıyan tablolar. Satırlar katalog girdileridir; baytlar coven’in blob katmanında yaşar (aşağıya bakın).people,ratings,history,playlists,playlist_entries: her kişinin profili ve kendisi için kaydettikleri. Bunlar sahip tablolarıdır: yalnızca yazarlarının aygıtları onları değiştirebilir.historyveplaylistssatırlarının her biri ya hanehalkının paylaşılan deposunda ya da kişinin özel çemberinde yaşar.
Eşzamanlanan ve yerel
Bu bölüme bağlantıYukarıdaki her tablo koşulsuz eşzamanlanır: yerel bir sürümün satırları diğer her sürüm gibi her aygıta ulaşır, böylece her aygıt hanehalkının neye sahip olduğunu bilir ve yerel bir sürümün parçasını gösteren bir puan ya da çalma listesi girdisi her aygıtın okuyabildiği bir satırı gösterir. Yalnızca sürümün sesi ve bulunduğu yollar içe aktaran aygıtta kalır. Her tablo satır kimliği, hedef kitlesi, sahip tablosu olup olmadığı ve taşıdığı dosyalarla bildirilir; bir test bildirimleri tam olarak bu listede tutar.
Tamamen yerel tablolar, coven’e asla bildirilmez:
playback_state: geçerli parça, konum, kuyruk, ses seviyesi, shuffle ve repeat. Çalma bir aygıt gerçeğidir.- Tarama ve içe aktarma tabloları: izlenen klasörler, taramalar, içe aktarma adayları ve taslakları.
source_releaseve altındaki tablolar: bae’nin getirdiği her MusicBrainz ve Discogs yayınından çıkardıkları — albüm ve baskı bilgileri, katkılar ve eserlerle birlikte tam parça listesi, kapak seçenekleri ve diğer kataloglarda nasıl anıldığı — yerel bir yayın yerine sağlayıcı yayını ile anahtarlanmış. Ham JSON saklanmaz; her cihaz bir yayını yeniden getirebilir.local_release_files: yerel bir sürümün bu aygıttaki dosya yolları ve değişiklik zamanları.local_history: bu aygıtın kişisinin profili olmadan önceki çalmalar; profil oluşturulduğunda kişinin özel çemberine taşınır.
İki aygıtın düzenlemeleri hücre hücre birleşir; ikisinin de değiştirdiği bir hücreyi sonraki düzenleme kazanır. coven birleştirme muhasebesini kendi tablolarında tutar, bu yüzden bae’in tabloları saat sütunu taşımaz.
Blob’lar
Bu bölüme bağlantıSes ve görseller coven dosyalarıdır; her tür, kendi aygıt önbellek sınırı olan bir ad alanıdır: release_files (20 GiB), covers (512 MiB), artist_images (256 MiB) ve avatars (64 MiB). Bir satır, dosyasına coven dosyasının kimliğiyle başvurur: release_files, covers ve artist_images üzerinde file, people üzerinde avatar_id. Dosyanın boyutu, içerik karması ve konumu coven’indir ve coven_files ile birleştirilerek okunur.
Sürüm dosyaları kullanıcıya aittir: yerel bir sürümün dosyaları, kullanıcının özgün yollarındaki dosyalarıdır, local_release_files içinde kaydedilir ve satırları hiçbir coven dosyasına başvurmaz. Sürümü buluta taşımak, tek bir yazmada her dosyayı coven’de hazırlar ve her satırı kendi dosyasına yönlendirir; sonuncusu saklandığında coven hepsini birlikte buluta geçirir ve diğer aygıtlar her birini ilk okumada önbelleğe alır. Kapaklar, sanatçı görselleri ve avatarlar bae’e aittir: bae baytları üretir (kapaklar en fazla 600px geniş JPEG küçük resimler olarak yeniden çizilir) ve bir aygıt her birini ilk gösterildiğinde alır ve ad alanının sınırı onu çıkarana kadar tutar.
Her dosya rastgele bir ad altında şifreli yüklenir; yolu hazırlandığında sabitlenir, böylece sonraki yeniden adlandırma nesneyi taşımaz. Bir dosyanın baytları asla değişmez: yeni bir görsel yeni bir dosyadır.
Bir rip’in kimliği
Bu bölüme bağlantıHer içe aktarma, yeni rastgele kimliği ve kendi parça ve dosya satırları olan bir sürüm oluşturur. Her cihaz, içe aktarmalarının her birinin okuduğu dosyaların sıralanmış göreli yollarının, boyutlarının ve değişiklik zamanlarının SHA-256 değerini local_release_origin içinde kaydeder; bu kayıt hiçbir zaman eşitlenmez. Bu cihazın karmasını kaydettiği bir klasör, nereye taşınırsa taşınsın tamamlanan içe aktarmalar sekmesindedir ve satırı ondan içe aktarılan tek sürümü gösterir. Aynı dosyaları o cihazda yeniden içe aktarmak başarısız olur ve tamamlanan içe aktarmalar sekmesi yeniden içe aktarma işlemi sunmaz.