ਡਾਟਾ ਮਾਡਲ
bae ਦਾ ਸੂਚੀ ਆਮ SQLite ਹੈ, coven ਨੂੰ ਟੇਬਲ by ਟੇਬਲ ਘੋਸ਼ਿਤ: ਸਮਕਾਲੀਕਰਿਤ ਟੇਬਲਾਂ conflict ਘੜੀ ਲੈ ਕੇ ਹਰ ਯੰਤਰ ਤੱਕ ਜਾਂਦੀਆਂ ਹਨ; ਨਾ-ਘੋਸ਼ਿਤ ਟੇਬਲਾਂ ਯੰਤਰ ਨਹੀਂ ਛੱਡਦੀਆਂ। ਇਹ ਵੰਡ data ਮਾਡਲ ਦਾ ਸਭ ਤੋਂ load-bearing ਫੈਸਲਾ ਹੈ, ਇਸ ਲਈ ਇਹ ਪੰਨਾ ਇਸਦੇ ਆਲੇ ਦੁਆਲੇ ਹੈ।
ਸੂਚੀ ਗ੍ਰਾਫ
ਇਸ ਭਾਗ ਦਾ ਲਿੰਕਸਕੀਮਾ ਦਾ ਸਮਕਾਲੀਕਰਿਤ heart:
artists,albums,works: grouping layer। ਐਲਬਮ ਆਪਣੀਆਂ ਰਿਲੀਜ਼ਾਂ ਜੋੜਦੀ ਹੈ ਅਤੇ primary ਇੱਕ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਦੀ ਹੈ; works ਸ਼ਾਸਤਰੀ ਬਣਤਰ ਲਈ parent/child ਗ੍ਰਾਫ ਬਣਾਉਂਦੀਆਂ ਹਨ।releases: ਕੇਂਦਰੀ ਇਕਾਈ, ਹਰ pressing ਲਈ ਇੱਕ ਕਤਾਰ। Pressing ਤੱਥ (label, ਸੂਚੀ number, barcode, country, ਫਾਰਮੈਟ, year), ਮੈਟਾਡੇਟਾ ਸਰੋਤ, ਆਯਾਤ ਕੀਤੇ ਫੋਲਡਰ ਦਾ ਸਮੱਗਰੀ ਹੈਸ਼, ਅਤੇ ਮਾਪਿਆ album loudness ਰੱਖਦੀ ਹੈ।release_identities: ਸਰੋਤ ਅਨੁਸਾਰ ਰਿਲੀਜ਼ ਕੀ ਹੈ। ਕਤਾਰਾਂ ਨਾ ਹੋਣ ਦਾ ਅਰਥ ਅਣਜਾਣ; ਰਿਲੀਜ਼ ID ਵਾਲੀ MusicBrainz ਜਾਂ Discogs ਕਤਾਰ ਸਹੀ; ਬਿਨਾ ਉਸਦੇ ਲਗਭਗ। ਰਿਲੀਜ਼ ਦੋਹਾਂ sources ਵਿੱਚ ਪਛਾਣਾਂ ਇਕੱਠੇ ਰੱਖ ਸਕਦੀ ਹੈ।tracksਨਾਲtrack_artists, ਨਾਲੇrelease_artist_rolesਅਤੇtrack_artist_roles: ਟ੍ਰੈਕ lists ਅਤੇ credits, ਹਰ credit ਆਪਣੇ ਸਰੋਤ ਨਾਲ ਚਿੰਨ੍ਹਿਤ।track_works,work_parts,work_artists: ਰਿਕਾਰਡਿੰਗਾਂ ਉਹਨਾਂ works ਨਾਲ ਜੁੜੀਆਂ ਜਿਨ੍ਹਾਂ ਨੂੰ ਉਹ ਪੇਸ਼ ਕਰਦੀਆਂ ਹਨ।audio_formatsਅਤੇaudio_format_segments: playback ਵਿਸ਼ੇਸ਼ਣ। ਹਰ ਟ੍ਰੈਕ ਲਈ: codec, ਨਮੂਨਾ ਦਰ, ਬਿਟ ਗਹਿਰਾਈ, channels, ਮਾਪਿਆ loudness ਅਤੇ peak, ਅਤੇ pregap lengths। ਖੰਡ ਟ੍ਰੈਕ ਨੂੰ ਉਸ ਦੀਆਂ ਸਰੋਤ ਫਾਈਲਾਂ ਦੇ ਕ੍ਰਮਬੱਧ ਬਾਈਟ ਅਤੇ ਨਮੂਨਾ windows ਉੱਤੇ ਨਕਸ਼ਾ ਕਰਦੇ ਕਰਦੇ ਹਨ, ਇਸ ਕਰਕੇ CUE rip ਦਾ ਟ੍ਰੈਕ, pregap ਸਮੇਤ, ਇੱਕ ਵੱਡੀ ਫਾਈਲ ਦੇ ਖੇਤਰਾਂ ਜਾਂ ਕਈ ਫਾਈਲਾਂ ਵਿੱਚ ਫੈਲ ਕਰ ਸਕਦਾ ਹੈ।release_files,covers,artist_images: ਬਲੌਬ-bearing ਟੇਬਲਾਂ। ਕਤਾਰਾਂ ਸੂਚੀ ਦਾਖਲੇ ਹਨ; bytes coven ਦੇ ਬਲੌਬ layer ਵਿੱਚ ਰਹਿੰਦੇ ਹਨ (ਹੇਠਾਂ ਵੇਖੋ)।
ਸਮਕਾਲੀਕਰਿਤ, gate ਕੀਤਾ, ਸਥਾਨਕ
ਇਸ ਭਾਗ ਦਾ ਲਿੰਕਉੱਪਰਲਾ ਸਭ ਸਮਕਾਲੀਕਰਨ ਹੁੰਦਾ ਹੈ, ਪਰ ਬਿਨਾ ਸ਼ਰਤ ਨਹੀਂ। releases ਆਪਣੇ remote ਕਾਲਮ ਉੱਤੇ ਗੇਟ ਕੀਤਾ ਜੜ੍ਹ ਵਜੋਂ ਘੋਸ਼ਿਤ ਹੈ: ਰਿਲੀਜ਼ ਕਤਾਰ ਅਤੇ ਇਸਦਾ ਪੂਰਾ ਉਪ-ਰੁੱਖ (ਟ੍ਰੈਕ, ਫਾਈਲਾਂ, credits, ਫਾਰਮੈਟ, cover) ਸਿਰਫ਼ remote true ਹੋਣ ਤੱਕ ਸਮਕਾਲੀਕਰਨ ਹੁੰਦਾ ਹੈ, ਅਰਥਾਤ ਜਦੋਂ ਰਿਲੀਜ਼ ਕਲਾਉਡ-ਸੰਭਾਲੀ ਹੋਵੇ। ਰਿਲੀਜ਼ ਨੂੰ ਸੰਭਾਲਿਆ ਕਰਨ ਨਾਲ ਉਪ-ਰੁੱਖ publish ਹੁੰਦਾ ਹੈ; ਨਾ-ਸੰਭਾਲਿਆ ਰਿਲੀਜ਼ ਆਪਣੇ ਸਕੀਮਾ ਸਮਕਾਲੀਕਰਿਤ ਹੋਣ ਦੇ ਬਾਵਜੂਦ importing ਯੰਤਰ ਉੱਤੇ ਪੂਰੀ ਰਹਿੰਦੀ ਹੈ। ਪੂਰਵਜ ਟੇਬਲਾਂ (artists, albums, works) ਸਿਰਫ਼ ਜਦੋਂ ਕੋਈ ਸਮਕਾਲੀਕਰਿਤ ਰਿਲੀਜ਼ ਹਾਲੇ ਉਨ੍ਹਾਂ ਨੂੰ reference ਕਰਦੀ ਹੈ ਤਦ ਸਮਕਾਲੀਕਰਨ ਹੁੰਦੀਆਂ ਹਨ, ਇਸ ਲਈ ਯੰਤਰ ਕਦੇ ਵੀ ਖਾਲੀ artist ਨਹੀਂ ਲੈਂਦਾ।
ਪੂਰੀ ਤਰ੍ਹਾਂ ਸਥਾਨਕ ਟੇਬਲਾਂ, coven ਨੂੰ ਕਦੇ ਘੋਸ਼ਿਤ ਨਹੀਂ:
playback_state: current ਟ੍ਰੈਕ, ਸਥਿਤੀ, ਕਤਾਰ, ਆਵਾਜ਼ ਮਾਤਰਾ, shuffle ਅਤੇ repeat। Playback ਯੰਤਰ fact ਹੈ।imports: ਆਯਾਤ ਕਾਰਵਾਈ ਪਿਛਾ।release_metadata: MusicBrainz ਅਤੇ Discogs ਤੋਂ ਸੰਭਾਲਿਆ ਕੱਚਾ JSON, ਭਵਿੱਖੀ re-interpretation ਲਈ kept।
ਹਰ ਸਮਕਾਲੀਕਰਿਤ ਟੇਬਲ _updated_at ਹਾਈਬ੍ਰਿਡ-ਤਾਰਕਿਕ-ਘੜੀ ਕਾਲਮ ਰੱਖਦੀ ਹੈ, ਰਜਿਸਟਰ ਜਿਸ ਨਾਲ coven ਦਾ ਖੇਤਰ-by-ਖੇਤਰ merge ਇਕੱਠੀਆਂ ਸੋਧਾਂ ਦਾ ਕ੍ਰਮ ਕਰਦਾ ਹੈ; ਟੈਸਟ ਲਾਗੂ ਕਰਦਾ ਹੈ ਕਿ ਸਮਕਾਲੀਕਰਿਤ ਸਮੂਹ ਅਤੇ ਘੜੀ-carrying ਸਮੂਹ ਬਿਲਕੁਲ ਬਰਾਬਰ ਹਨ।
ਬਲੌਬ
ਇਸ ਭਾਗ ਦਾ ਲਿੰਕਸ਼ਬਦ ਅਤੇ images coven ਦੇ ਬਲੌਬ layer ਰਾਹੀਂ ਤਿੰਨ ਨਾਮ-ਥਾਵਾਂ ਵਿੱਚ ਜਾਂਦੀਆਂ ਹਨ, ਹਰ ਇੱਕ ਆਪਣੇ ਯੰਤਰ ਅਸਥਾਈ ਭੰਡਾਰ ਸੀਮਾ ਨਾਲ: release_files (20 GiB), covers (512 MiB), artist_images (256 MiB)।
ਰਿਲੀਜ਼ ਫਾਈਲਾਂ ਵਰਤੋਂਕਾਰ-ਦਿੱਤੀਆਂ ਅਤੇ ਦੇਰ ਨਾਲ ਅਸਥਾਈ ਰੱਖੇ ਹਨ: ਨਾ-ਸੰਭਾਲਿਆ ਰਿਲੀਜ਼ ਲਈ ਬਲੌਬ ਵਰਤੋਂਕਾਰ ਦੀ ਫਾਈਲ ਦੇ original ਮਾਰਗ ਦਾ ਬਾਹਰੀ reference ਹੈ; ਸੰਭਾਲਿਆ ਲਈ ਇਹ uploaded ਵਸਤੂ ਹੈ ਜੋ ਪਹਿਲੀ ਪੜ੍ਹਨਾ ਉੱਤੇ ਅਸਥਾਈ ਭੰਡਾਰ ਵਿੱਚ ਲਿਆਇਆ ਹੁੰਦਾ ਹੈ। Covers ਅਤੇ artist images ਮੇਜ਼ਬਾਨ-ਦਿੱਤੀਆਂ ਅਤੇ ਪਹਿਲਾਂ ਹੀ ਅਸਥਾਈ ਰੱਖੇ ਹਨ: bae bytes ਬਣਾਉਂਦਾ ਹੈ (covers ਵੱਧ ਤੋਂ ਵੱਧ 600px ਚੌੜੇ JPEG thumbnails ਵਜੋਂ re-ਬਣਨਾ ਹੁੰਦੇ ਹਨ), ਅਤੇ ਹਰ ਯੰਤਰ ਖਿੱਚਦਾ ਉੱਤੇ ਉਨ੍ਹਾਂ ਨੂੰ fetch ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ ਜਾਲੀਆਂ ਸਥਾਨਕ ਤੌਰ ਉੱਤੇ ਬਣਨਾ ਹੋਣ।
Opaque ਘਰ ਉੱਤੇ, ਬਲੌਬ ਬੇਅਰਥ ਸਮੱਗਰੀ ਕੁੰਜੀਆਂ ਹੇਠ ਚੜ੍ਹਾਉਣਾ ਹੁੰਦੇ ਹਨ। Browsable ਘਰ ਉੱਤੇ ਹਰ ਬਲੌਬ ਕਤਾਰ ਪੜ੍ਹਨਯੋਗ ਕਲਾਉਡ ਮਾਰਗ ਦਰਜ ਕਰਦੀ ਹੈ (ਸ਼ਬਦ ਲਈ {artist}/{album}/{filename}, covers ਲਈ {album}/{release}/cover.{ext}), ਚੜ੍ਹਾਉਣਾ ਵੇਲੇ ਇੱਕ ਵਾਰੀ ਗਿਣਿਆ ਤਾਂ ਜੋ ਬਾਅਦ ਦੀ ਨਾਂ-ਬਦਲਾਅ ਵਸਤੂ ਨੂੰ ਹਿਲਾਏ ਨਾ ਕਰੇ।
Rip ਦੀ ਪਛਾਣ
ਇਸ ਭਾਗ ਦਾ ਲਿੰਕreleases.content_hash ਆਯਾਤ ਕੀਤੇ ਫੋਲਡਰ ਦੀ ਫਾਈਲ ਬਣਤਰ (ਸਬੰਧਤ ਮਾਰਗ ਅਤੇ ਆਕਾਰ) ਉੱਤੇ SHA-256 ਹੈ, ਫੋਲਡਰ ਡਿਸਕ ਉੱਤੇ ਕਿੱਥੇ ਹੈ ਇਸ ਤੋਂ ਆਜ਼ਾਦ। ਇਹੀ bae ਨੂੰ ਵੇਖੇ ਫੋਲਡਰ ਵਿੱਚ ਉਹ rip ਮੁੜ ਆਉਣ ਉੱਤੇ already-imported rip ਪਛਾਣਨ ਦਿੰਦਾ ਹੈ, ਅਤੇ re-ਆਯਾਤ ਨੂੰ ਉਹ ਰਿਲੀਜ਼ ਲੱਭਣ ਦਿੰਦਾ ਹੈ ਜਿਸਨੂੰ ਬਦਲਣਾ ਕਰਨਾ ਹੈ।