ڈیٹا نمونہ
bae کا فہرست نامہ عام SQLite ہے، coven کو جدول در جدول بتایا جاتا ہے: ہم آہنگ جدولیں اختلافی گھڑی رکھتی ہیں اور ہر آلے تک جاتی ہیں؛ نہ بتائی گئی جدولیں کبھی آلہ نہیں چھوڑتیں۔ یہ تقسیم ڈیٹا نمونے کا اہم فیصلہ ہے، اس لیے یہ صفحہ اسی کے گرد ہے۔
فہرست نامے کا نقشہ
اس حصے کا ربطخاکہ کا ہم آہنگ مرکز:
artists,albums,works: گروہ بندی کی پرت۔ البم اپنے اجرا اکٹھا کرتا ہے اور بنیادی اجرا کی طرف اشارہ کرتا ہے؛ کام کلاسیکی ساخت کے لیے والد/بچہ نقشہ بناتے ہیں۔releases: مرکزی شے، ہر pressing کے لیے ایک قطار۔ Pressing حقائق (label، فہرست عدد، barcode، country، شکل، year)، میٹا معلومات کا ماخذ، درآمد شدہ پوشے کا مواد hash، اور ناپی گئی البم آواز کی بلندی رکھتی ہے۔release_identities: ہر ماخذ کے لیے، اجرا کیا ہے۔ قطاریں نہ ہوں تو نامعلوم؛ MusicBrainz یا Discogs کی قطار جس میں اجرا کی شناختی قدر ہو عین ملان بتاتی ہے؛ اس کے بغیر ملان تخمینی ہے۔ اجرا دونوں ذرائع کی شناختیں ایک ساتھ رکھ سکتی ہے۔tracks،track_artists،release_artist_roles، اورtrack_artist_roles: ٹریک فہرستیں اور credits، ہر credit اپنے ماخذ کے ساتھ نشان زد۔track_works,work_parts,work_artists: recordings ان کاموں سے جڑی ہیں جنہیں وہ ادا کرتی ہیں۔audio_formatsاورaudio_format_segments: پلے بیک اوصاف۔ ہر ٹریک کے لیے: codec، نمونہ شرح، bit depth، channels، ناپی گئی آواز کی بلندی اور چوٹی، اور pregap لمبائیاں۔ Segments ٹریک کو اس کی ماخذ فائلوں کے مرتب بائٹ اور نمونہ کھڑکیوں پر نقش کرتے ہیں، اسی سے CUE نقل کا ٹریک، pregap سمیت، ایک بڑی فائل یا کئی فائلوں کے حصوں پر پھیل سکتا ہے۔release_files,covers,artist_images: blob رکھنے والی جدولیں۔ قطاریں فہرست نامے کے اندراج ہیں؛ بائٹس coven کی blob layer میں رہتے ہیں (نیچے دیکھیں)۔
ہم آہنگ، مشروط، مقامی
اس حصے کا ربطاوپر کی سب چیزیں ہم آہنگ ہوتی ہیں، مگر ہر حال میں نہیں۔ releases اپنی remote ستون پر دروازہ دار جڑ کے طور پر بتائی گئی ہے: اجرا قطار اور اس کا پورا ذیلی درخت (ٹریک، فائلیں، credits، شکلیں، cover) صرف تب ہم آہنگ ہوتا ہے جب remote true ہو، یعنی جب اجرا کلاؤڈ کے زیر انتظام ہو۔ اجرا کو منظم حالت میں بدلنا ذیلی درخت شائع کرتا ہے؛ غیر منظم اجرا پوری طرح درآمد کرنے والے آلے پر رہتی ہے، اگرچہ اس کا خاکہ ہم آہنگ ہے۔ آبائی جدولیں (artists، albums، works) صرف تب ہم آہنگ ہوتی ہیں جب کوئی ہم آہنگ اجرا انہیں حوالہ دیتی رہے، اس لیے آلہ کبھی ایسا artist وصول نہیں کرتی جس کے نیچے کچھ نہ ہو۔
مکمل مقامی جدولیں، جو coven کو کبھی نہیں بتائی جاتیں:
playback_state: موجودہ ٹریک، مقام، قطار، volume، shuffle اور repeat۔ پلے بیک آلے کی حقیقت ہے۔imports: درآمدی کارروائیوں کی پیروی۔release_metadata: MusicBrainz اور Discogs سے محفوظ کیا ہوا خام JSON، آئندہ دوبارہ تعبیر کے لیے رکھا ہوا۔
ہر ہم آہنگ جدول _updated_at hybrid-logical-clock column رکھتی ہے، وہ register جس سے coven کا خانہ بہ خانہ ملان ہم وقت ترمیمات کو ترتیب دیتا ہے؛ ایک test لازم کرتا ہے کہ ہم آہنگ مجموعہ اور گھڑی رکھنے والا مجموعہ عین برابر ہیں۔
Blobs
اس حصے کا ربطآواز اور تصاویر coven کی blob layer سے تین namespaces میں گزرتی ہیں، ہر ایک اپنے آلے کے کیش بجٹ کے ساتھ: release_files (20 GiB)، covers (512 MiB)، artist_images (256 MiB)۔
اجرا فائلیں صارف کی دی ہوئی اور ضرورت پڑنے پر کیش میں رکھی جاتی ہیں: غیر منظم اجرا کے لیے blob صارف کی فائل کا بیرونی حوالہ ہے اس کے اصل راستے پر؛ منظم کے لیے یہ اپ لوڈ شدہ شے ہے جو پہلے پڑھنے پر کیش میں لائی جاتی ہے۔ غلاف اور artist images میزبان کی دی ہوئی اور پہلے ہی کیش میں رکھی جاتی ہیں: bae بائٹس بناتا ہے (غلاف زیادہ سے زیادہ 600px چوڑے JPEG thumbnails کے طور پر دوبارہ بنتے ہیں)، اور ہر آلہ کھینچائی پر انہیں لاتا ہے تاکہ grids مقامی طور پر بنیں۔
Opaque گھر پر blobs بے معنی مواد کلیدوں کے تحت چڑھتے ہیں۔ Browsable گھر پر ہر blob قطار پڑھنے کے قابل کلاؤڈ راستہ درج کرتی ہے ({artist}/{album}/{filename} آواز کے لیے، {album}/{release}/cover.{ext} غلاف کے لیے)، چڑھانے پر ایک بار نکالا جاتا ہے تاکہ بعد کا نام بدلنا شے کو منتقل نہ کرے۔
Rip کی شناخت
اس حصے کا ربطreleases.content_hash درآمد شدہ پوشے کی فائل ساخت (نسبتی راستے اور sizes) پر SHA-256 ہے، اس سے آزاد کہ پوشہ disk پر کہاں ہے۔ یہی طریقہ ہے جس سے bae پہلے سے درآمد شدہ نقل کو پہچانتا ہے جب وہ نگرانی والے پوشے میں دوبارہ دکھے، اور دوبارہ درآمدات کو وہ اجرا ملتی ہے جسے بدلنا چاہیے۔