Veri modeli
bae’in kataloğu sıradan SQLite’tır; coven’e tablo tablo bildirilir: eşzamanlanan tablolar bir çakışma saati taşır ve 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, baskı başına 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).
Eşzamanlanan, kapılı, yerel
Bu bölüme bağlantıYukarıdakilerin hepsi eşzamanlanır, ancak koşulsuz değil. releases, remote sütununda gated root olarak bildirilir: bir release satırı ve bütün alt ağacı (tracks, files, credits, formats, cover) yalnızca remote true iken, yani sürüm bulutta yönetilirken eşzamanlanır. Bir sürümü managed yapmak alt ağacı yayımlar; unmanaged bir sürüm, şeması eşzamanlanan olsa bile bütünüyle içe aktaran aygıtta kalır. Ata tablolar (artists, albums, works) yalnızca eşzamanlanan bir sürüm hâlâ onlara başvururken eşzamanlanır, böylece bir aygıt altında hiçbir şey olmayan bir sanatçı almaz.
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.imports: içe aktarma işlemi takibi.source_release_payloads: arşivlenmiş ham JSON MusicBrainz ve Discogs’den, yerel bir yayınlama yerine sağlayıcı yayınlaması ile anahtarlanmış. Doğrudan yeniden başlatma ve yeniden yorumlamayı senkronize katalog grafiği değiştirmeden destekler.
Her eşzamanlanan tablo bir _updated_at hybrid-logical-clock sütunu taşır; coven’in alan alan birleştirmesi eşzamanlı düzenlemeleri bu register ile sıralar. Bir test, eşzamanlanan küme ile saat taşıyan kümenin tam olarak eşit olduğunu denetler.
Blob’lar
Bu bölüme bağlantıSes ve görseller coven’in blob katmanından üç ad alanında geçer; her birinin kendi aygıt önbellek sınırı vardır: release_files (20 GiB), covers (512 MiB), artist_images (256 MiB).
Sürüm dosyaları kullanıcı tarafından sağlanır ve tembel önbelleğe alınır: unmanaged sürümde blob, kullanıcının özgün yolundaki dosyasına dış başvurudur; managed sürümde ilk okumada önbelleğe alınan yüklenmiş nesnedir. Kapaklar ve sanatçı görselleri host tarafından sağlanır ve istekle önbelleğe alınır: bae baytları üretir (kapaklar en fazla 600px geniş JPEG küçük resimler olarak yeniden çizilir) ve her aygıt çekme sırasında alır, böylece ızgaralar yerel çizilir.
Opaque evde blob’lar anlamsız içerik anahtarları altında yüklenir. Browsable evde her blob satırı okunabilir bir bulut yolu kaydeder (ses için {artist}/{album}/{filename}, kapaklar için {album}/{release}/cover.{ext}); bu yol yükleme sırasında bir kez hesaplanır, böylece sonraki yeniden adlandırma nesneyi taşımaz.
Bir rip’in kimliği
Bu bölüme bağlantıreleases.content_hash, içe aktarılan klasörün dosya yapısı (göreli yollar ve boyutlar) üzerinden, klasörün diskte nerede olduğundan bağımsız bir SHA-256’dır. bae’in izlenen klasörde yeniden görünen zaten içe aktarılmış bir rip’i tanıma yolu budur; yeniden içe aktarmaların değiştirmesi gereken sürümü bulma yolu da budur.