آنچه یک گراف در مقابل یک مخزن برداری فراهم میکند
بیشتر سیستمهای عامل با یک مخزن برداری شروع میکنند و برای مدتی کار میکند. اسناد تکهتکه، جاسازی و بر اساس شباهت بازیابی میشوند. حالت شکست بیصدا فرا میرسد: پرسشهایی که نیاز به پیمایش دارند نه جستوجو. «کدام تأمینکننده در گزارش حادثهای که باعث ممیزی مؤلفهای شد که سهماهه گذشته منسوخ کردیم، نام برده شده بود؟» یک مسئله شباهت نیست. یک مسئله اتصال است و بازیابی مسطح دقیقاً روی همین پرسشها ابتدا افت میکند زیرا هیچ تکه واحدی حاوی پاسخ نیست. پاسخ یک مسیر است.
یک گراف مسیر را صریح میکند. موجودیتها گرهها هستند، روابط یالها، و یک پرسش چندگامی به یک پیمایش تبدیل میشود که میتوان آن را برنامهریزی، محدود و توضیح داد. این اولین چیزی است که یک گراف فراهم میکند: شکل پرسوجو با شکل پرسش مطابقت دارد.
دومین چیز منشأ است. وقتی یک ادعا بهعنوان یک یال ذخیره میشود، یال میتواند فراداده خود را حمل کند: کدام مشاهده آن را تولید کرده، چه زمانی، توسط کدام عامل، تحت کدام نسخه طرحواره. این بدان معناست که یک عامل میتواند نه فقط بگوید «مؤلفه منسوخ است» بلکه «مؤلفه بر اساس این مشاهده، که در این زمان ثبت شده، منسوخ است.» منشأ همراه یال سفر میکند بهجای اینکه بعد از واقع از نمرات بازیابی بازسازی شود، که جانشین ضعیفی برای توجیه هستند.
سومین جداسازی نوشتن است. چندین عامل میتوانند به زیرگرافهای جداگانه بنویسند بدون بازنویسی جاسازیهای یکدیگر. در یک مخزن برداری، هر سند جدید ساختار همسایگیای را که هر سند دیگر در برابر آن بازیابی میشود جابهجا میکند؛ افزودن یک تکه میتواند تغییر دهد که یک پرسوجوی متفاوت چه چیزی برمیگرداند. در یک گراف، افزودن یک گره و یک یال به ناحیهای که هیچکس دیگری نمیخواند، بقیه گراف را دستنخورده میگذارد. این ویژگی با رشد تعداد نویسندگان همزمان اهمیت بیشتری پیدا میکند.
چه هزینهای دارد

هزینه در لایه پرسوجو نیست. موتورهای پرسوجو برای گرافهای ویژگی و RDF بالغ هستند و پیمایش روی چند میلیون یال یک مسئله تحقیقاتی نیست. هزینه در نگهداشتن گراف بهعنوان حقیقت است.
حل موجودیت به یک کار پسزمینه پیوسته تبدیل میشود. همان سازمان بهصورت سه گره با برچسبهای کمی متفاوت ظاهر میشود، یکبار از یک سند، یکبار از یک فید ساختاریافته، یکبار از استنتاج یک عامل. حذف تکراری آنها یک مهاجرت یکباره نیست. هر نوشتن جدید یک ادغام نامزد است، هر ادغام یک خطای نامزد، و کار هرگز تمام نمیشود. گراف لحظهای که کار متوقف شود منحرف میشود و انحراف در هیچ داشبوردی قابل مشاهده نیست مگر اینکه یکی برای آن بسازید.
تکامل طرحواره یک مسئله مهاجرت است. عواملی که سهگانههای آزاد مینویسند گرافی تولید میکنند که هیچکس نمیتواند پرسوجو کند، زیرا محمولها تقریباً مترادف یکدیگر خواهند بود و انواع ناسازگار خواهند بود. یک واژگان نوعدار بوروکراسی نیست؛ همان چیزی است که پیمایش را قابل برنامهریزی میکند. اما یک واژگان نوعدار باید تغییر کند و تغییر آن به معنای مهاجرت یالهای موجود، نسخهبندی طرحواره و تصمیمگیری درباره آنچه برای خوانندگانی که هنوز شکل قدیمی را انتظار دارند رخ میدهد است.
رقابت نوشتن نیاز به یک سیاست ادغام دارد، نه آخرین نوشتن برنده. دو عامل که همزمان همان موجودیت را مشاهده میکنند اختلاف خواهند داشت. آخرین نوشتن برنده یک مشاهده را بیصدا دور میریزد که بدترین نتیجه برای منشأ است. یک سیاست ادغام باید بهازای هر محمول تصمیم بگیرد که آیا مقادیر تکمقداری، مجموعهای یا سریزمانی هستند و آیا یک نوشتن متناقض یک یال جدید ایجاد میکند، یال قدیمی را جایگزین میکند یا یک وظیفه بازبینی را بالا میآورد. این یک تصمیم طراحی است که باید قبل از اولین تعارض گرفته شود، نه بعد از آن.
معاوضه صادقانه این است: یک گراف پیمایش و منشأ را با گران کردن سازگاری ارزان میکند. یک مخزن برداری سازگاری را با گران کردن پیمایش و منشأ ارزان میکند. هیچکدام رایگان نیستند؛ آنها در مکانهای متفاوتی شکست میخورند.
یک تقسیم کار عملی
الگویی که در عمل دوام میآورد، آنچه بای

گراف را برای موجودیتها، روابط و منشأ نگه دارید. گرهها شناسههای پایدار حمل میکنند. یالها منبع، برچسب زمانی و شناسه مشاهدهای که آنها را تولید کرده حمل میکنند. متن خام در گراف زندگی نمیکند؛ در ذخیرهسازی شیء زندگی میکند و با شناسه ارجاع داده میشود. این گراف را بهقدر کافی کوچک نگه میدارد تا پیمایش شود و متن را بهقدر کافی بزرگ تا مفید باشد. عاملی که به قطعه نیاز دارد شناسه را دنبال میکند؛ عاملی که به رابطه نیاز دارد یال را میخواند.
نوشتنهای عامل را به یک واژگان نوعدار محدود کنید. عاملها محمول اختراع نمیکنند. آنها یالهایی را در برابر یک طرحواره که نسخهبندی شده پیشنهاد میدهند و تغییرات طرحواره از یک فرآیند بازبینی انسانی عبور میکنند. این به نظر میرسد عاملها را کند میکند و این کار را میکند، بهعمد: جایگزین گرافی است که محمولهایش بهاندازه پرامپتهایی که آنها را تولید کردهاند متنوع است. یک مکانیزم مفید در اینجا یک اعتبارسنج نوشتن است که محمولهای ناشناخته و انواع موجودیت ناشناخته را در مرز رد میکند، بنابراین نوشتنهای بد با صدای بلند در زمان دریافت شکست میخورند نه بیصدا در زمان پرسوجو.
تازگی گراف را بهعنوان یک SLO با یک کران کهنگی قابل اندازهگیری در نظر بگیرید. اگر کار حل عقب بیفتد، خوانندگان باید بدانند. کران کهنگی را به عاملهایی که گراف را میخوانند افشا کنید تا یک خواننده بتواند تصمیم بگیرد که آیا به یک پیمایش اعتماد کند یا به بازیابی خام بازگردد. گرافی که بیصدا سه روز عقب است بدتر از گرافی است که آن را اعلام میکند.
به نویسندگان همزمان یک سیاست ادغام بهازای هر محمول بدهید. محمولهای تکمقداری با جایگزینی و نگهداشتن مقدار قبلی بهعنوان تاریخچه حل میشوند. محمولهای مجموعهای اجتماع میشوند. محمولهای سریزمانی الحاق میشوند. هر چیز مبهم به یک صف بازبینی مسیردهی میشود نه اینکه با ترتیب ورود حل شود.
چه چیزی را ابزارگذاری کنیم
اگر یک تیم در حال بررسی یک گراف مشترک بهعنوان بافت عامل است، ابزارگذاری مهمتر از انتخاب پایگاه داده است. انبار کار حل و سن آن را ردیابی کنید. نسبت نوشتنهای رد شده به نوشتنهای پذیرفته شده در اعتبارسنج را ردیابی کنید. تعداد محمولها بهازای هر نوع موجودیت را ردیابی کنید، زیرا بالا خزیدن این عدد شاخص پیشرو زوال طرحواره است. ردیابی کنید که خوانندگان چند وقت یکبار به بازیابی خام بازمیگردند زیرا گراف برای اعتماد بیش از حد کهنه بود.
هیچکدام از اینها معیارهای لایه پرسوجو نیستند. آنها معیارهای نگهداری هستند و همانهایی هستند که پیشبینی میکنند آیا گراف در شش ماه آینده هنوز مفید خواهد بود. لایه پرسوجو خوب خواهد بود. اتصال بخش دشوار است و اتصال نگهداری میشود، نه ساخته.
