విషయానికి వెళ్లండి

డేటా నమూనా

bae నమోదు సాధారణ SQLite, coven కు పట్టిక by పట్టిక గా declared: సమకాలీకరించే పట్టికలు conflict clock మోసి ప్రతి పరికరానికి వెళ్తాయి; ప్రకటించని పట్టికలు పరికరాన్ని విడిచిపోవు. ఈ విభజనే డేటా నమూనాలో అత్యంత load-bearing నిర్ణయం, కాబట్టి ఈ పుట దాని చుట్టూ అమర్చబడింది.

Schema యొక్క సమకాలీకరించే గుండె:

  • artists, albums, works: గుంపు పొర. ఆల్బమ్ తన విడుదలలను కలిపి primary దానివైపు చూపిస్తుంది; works శాస్త్రీయ నిర్మాణం కోసం parent/child graph అవుతాయి.
  • releases: మధ్య నమోదు, ముద్రణకు ఒక వరుస. ముద్రణ విషయాలు (label, catalog number, barcode, country, ఆకృతి, year), వివరాల మూలం, దిగుమతి చేసిన సంచయపు content hash, కొలిచిన ఆల్బమ్ శబ్ద తీవ్రత మోస్తుంది.
  • release_identities: మూలం ప్రకారం విడుదల ఏమిటి. Rows లేకపోతే తెలియదు; విడుదల ID ఉన్న MusicBrainz లేదా Discogs వరుస ఖచ్చితం; అది లేకపోతే సుమారు. ఒక విడుదల ఒకేసారి రెండు మూలాల్లో గుర్తింపులు ఉంచగలదు.
  • tracks with track_artists, plus release_artist_roles and track_artist_roles: పాటల జాబితాలు మరియు credits, ప్రతి credit తన మూలంతో tagged.
  • track_works, work_parts, work_artists: రికార్డింగ్‌లు అవి ప్రదర్శించే కృతులకు కలుపబడతాయి.
  • audio_formats and audio_format_segments: వినిపింపు specs. ప్రతి పాటకు: codec, నమూనా rate, bit depth, channels, కొలిచిన శబ్ద తీవ్రత మరియు peak, pregap పొడవులు. Segments పాటను మూల దస్త్రాల క్రమబద్ధమైన బైట్ మరియు నమూనా కిటికీల మీద map చేస్తాయి; అందుకే CUE rip లో పాట, pregap సహా, ఒక పెద్ద దస్త్రం లేదా ఎన్నో దస్త్రాల భాగాల మీద విస్తరించగలదు.
  • release_files, covers, artist_images: blob-bearing పట్టికలు. Rows నమోదు entries; బైట్లు coven blob పొరలో ఉంటాయి (కింద చూడండి).

సమకాలీకరించబడేవి, gate ఉన్నవి, స్థానికం

ఈ విభాగానికి లింక్

పైనివన్నీ సమకాలీకరించబడతాయి, కానీ అశర్తిగా కాదు. releases తన remote column మీద gated root గా declared: విడుదల వరుస మరియు దాని మొత్తం subtree (ట్రాక్‌లు, ఫైళ్లు, credits, ఆకృతులు, కవర్) remote true ఉన్నప్పుడు మాత్రమే సమకాలీకరించబడుతుంది, అంటే విడుదల మేఘ నిల్వలో నిర్వహితంగా ఉన్నప్పుడు. విడుదలను managed కు మార్చడం subtree ను publish చేస్తుంది; unmanaged విడుదల schema synced అయినప్పటికీ దిగుమతి చేసిన పరికరంపైనే పూర్తిగా ఉంటుంది. Ancestor పట్టికలు (artists, albums, works) సమకాలీకరించిన విడుదల ఏదైనా వాటిని reference చేస్తూనే ఉన్నప్పుడు మాత్రమే సమకాలీకరించబడతాయి, కాబట్టి పరికరం దాని కింద ఏమీ లేని కళాకారుడు ను ఎప్పుడూ పొందదు.

పూర్తిగా స్థానిక పట్టికలు, coven కు ఎప్పుడూ declared కావు:

  • playback_state: ప్రస్తుత పాట, స్థానం, వరుస, శబ్ద పరిమాణం, shuffle మరియు repeat. వినిపింపు పరికర విషయం.
  • imports: దిగుమతి చర్యల గమనిక.
  • release_metadata: MusicBrainz మరియు Discogs నుంచి archived raw JSON, భవిష్యత్తులో మళ్లీ అర్థం చేసుకోవడానికి ఉంచబడుతుంది.

ప్రతి సమకాలీకరించిన పట్టిక _updated_at hybrid-logical-clock column మోస్తుంది, ఒకేసారి వచ్చిన సవరణలను క్షేత్రం-by-క్షేత్రం కలుపుతప్పుడు coven order చేసే register అదే; సమకాలీకరించే సమూహం మరియు clock మోసే సమూహం ఖచ్చితంగా సమానమని test enforce చేస్తుంది.

శబ్దం మరియు చిత్రాలు coven blob పొర ద్వారా మూడు namespaces లో వెళ్తాయి, ప్రతి ఒక్కదానికి తన పరికర తాత్కాలిక నిల్వ పరిమితి: release_files (20 GiB), covers (512 MiB), artist_images (256 MiB).

విడుదల దస్త్రాలు వినియోగదారు ఇచ్చినవి మరియు అవసరమైనప్పుడు తాత్కాలికంగా తెచ్చుకునేవి: unmanaged విడుదల కోసం blob వినియోగదారి దస్త్రం అసలు path కు external reference; managed దాని కోసం మొదటి చదవడంలో తాత్కాలిక నిల్వలోకి తెచ్చే uploaded object. Covers మరియు కళాకారుడు images యాప్ సృష్టించినవి మరియు ముందుగానే తెచ్చుకునేవి: bae బైట్లు తయారు చేస్తుంది (కవర్లు గరిష్ఠంగా 600px వెడల్పు ఉన్న JPEG thumbnails గా re-render అవుతాయి), ప్రతి పరికరం pull లో వాటిని తెచ్చుకుంటుంది కాబట్టి grids స్థానికంగా కనిపిస్తాయి.

Opaque ఇంటిలో blobs అర్థంలేని content కీలు కింద పంపబడతాయి. Browsable ఇంటిలో ప్రతి blob వరుస చదవదగిన మేఘ path ({artist}/{album}/{filename} శబ్దం కోసం, {album}/{release}/cover.{ext} కవర్లు కోసం) నమోదు చేస్తుంది, పంపే సమయంలో ఒక్కసారి లెక్కించబడుతుంది కాబట్టి తర్వాత పేరు మారినా object కదలదు.

releases.content_hash దిగుమతి చేసిన సంచయపు దస్త్ర నిర్మాణం (relative paths మరియు sizes) మీద SHA-256, సంచయం డిస్క్‌పై ఎక్కడుందో దానికి సంబంధం లేదు. గమనించే సంచయంలో ఇప్పటికే దిగుమతి చేసిన rip మళ్లీ కనిపిస్తే bae దాన్ని గుర్తించడానికి, మళ్లీ దిగుమతులు అవి మార్చాల్సిన పూర్వ విడుదలను కనుగొనడానికి ఇదే మార్గం.