Çözüm Kullanım Örneği
Diğer bazı cevaplara katılmıyorum, çünkü harika çözümler olsa da, muhtemelen sizin çözümünüz değillerdir . Evet XML kısaltmasında kelime işaretlemesine sahiptir, ancak muhtemelen durumunuz için ideal değildir. Çok karmaşıktır, meta verileri orijinal metinden ayrı tutmak için çok az yardım sunar. Esasen, her şeyi bir kilolu veri kümesi oluşturarak bir meta veri biçimine dönüştürecektir.
Muhtemelen kesinlikle doğru bir çözüm ya da yaklaşım olmadığından, en iyi çözüm şu soruya cevap verir:
Veriler sistem tarafından nasıl kullanılacak?
Ayrıca, bir çözüm tasarımının doğal olarak sistemin değerine nasıl kullanılacağını nasıl ekleyebileceğini sorarsanız, o zaman zarif cevabınızı bulmaya daha yakın olursunuz .
Sorunu anlama
Tamam yeterli yorum, hadi soruna bakalım. Anladığım kadarıyla bu sorun (açıkçası buna eklemek yararlı olacaktır):
- Orijinal bir metin var
- Bu orijinal metinle ilgili varsayımlar:
- Bu metin, birkaç bağımsız belgeden oluşabilir veya olmayabilir
- Bu metin, bir veya daha fazla kullanıcı tarafından düzenlenebilir veya düzenlenmeyebilir
- Bu metin, ilgili bilgileri içermektedir . Bu şekilde meta verilerin ilişkili olduğunu ve açıklayıcı olmadığını varsayarım (yanlışsam beni düzeltin) . Böylece, metni tanımlayan bilgileri değil, orijinal metinle ilgili bilgileri saklar. Orijinal metin hakkında notlar saklamak ve örnek metin olduğunu tarif olmaz Yani olan bir başlık olan cesur ve olan bir web sitesi vb bir bağlantı
- Metin, meta verilerden farklı olarak kolayca filtrelenmelidir
- Metin meta veriler tarafından bozulmaktan ve meta verilerden bozulmaktan korunmalıdır
- Orijinal metinle ilgili bilgileri depolamanın bir yolu olmalıdır (meta veri)
- Bu meta veriler ayrıca meta verilerin hangi kullanıcı (veya gruplar?) İle ilgili olduğu gibi meta verilerin açıklaması, hava durumu bir not veya yorum olduğunu söyleme gibi bilgileri içeren kendi (meta) meta verilerine ihtiyaç duyar veya açıklama vb.
- Bu meta veriler (ve (meta) meta verileri) orijinal metindeki değişikliklere, meta verilerindeki değişikliklere ve (meta) meta verilerindeki değişikliklere dayanmalıdır.
- Meta veriler (+ Meta-Meta Veriler) iyi yapılandırılmalı ve kolayca sorgulanmalı ve dizine eklenmeli ve hatta diğer veri kümelerine ilişkisel bir şekilde birleştirilmelidir . Meta verilerin ilişkisel doğası sadece Sorgular ile sınırlı kalmamalı, aynı zamanda ilişkisel veri aktivitelerinin bir sonucu olarak meta verilerin güncellenmesini veya yazılmasını ve değiştirilmesini kolaylaştırmalıdır .
- Meta verinin (+ Meta-Meta veri) değeri, onunla çok ilgili bir niteliktedir. Orijinal metne olan ilişkisini kaybettiği anda derhal üretken olur. Dolayısıyla, orijinal metne olan ilişkisinin bütünlüğü zorunlu bir tasarım zorunluluğudur.
- Sorunun doğası ve nasıl kullanılacağı ile ilgili diğer varsayımlar şunlardır:
- Eşzamanlı heterojen sistem erişimi. Diğer bir deyişle, yönetici (veya başka bir işlem) yapılandırılmış meta veriler üzerinde ilişkisel veri sorguları gerçekleştirirken kullanıcının metni görüntülemek ve meta verileri düzenlemek isteyebileceği anlamına gelir.
- Sistemin birkaç kullanıcısı olacak
- Sistem modern. Başka bir deyişle, depolama alanı, işlem hızı veya gerçek zamanlı zorunluluklar tarafından kısıtlanmamıştır. Bütünlük ve amaç odaklı işlevsellik, fiziksel bilgi işlem kaynağı sınırlamalarından daha yüksek bir önceliktir.
- Sistemin kullanımının ve işlevselliğinin, sistem kullanıldıkça bir şekilde değişme veya değişme olasılığı düşüktür.
Çözüm tasarımının oluşturulması
Sorunu yukarıda özetlediğim gibi anlayarak, şimdi yukarıdaki sorunu çözmeyi amaçlayan olası çözümler ve yaklaşımlar önermeye başlayacağım.
Bileşenler
Bu yüzden, özel olarak oluşturulmuş bir kullanıcı erişim sistemi olması gerektiğini görecektim. Alakalı ve alakasız meta verileri orijinal metinden filtreleyecektir. Metinde meta verilerin düzenlenmesini ve görüntülenmesini kolaylaştıracaktır. Meta veriler ve orijinal metni arasındaki ilişkinin bütünlüğünü sağlayacaktır. Meta verileri yapılandırır ve ilişkisel bir veri sistemine bir veri kaynağı sunar. Büyük olasılıkla bir dizi başka amaca yönelik işlev sağlayacaktır.
yapı
Bu yüzden orijinal metinde, bu sağlamanın en iyi yolu meta veri bütünlüğünü korumak için önemlidir, çünkü meta tutmaktır inline orijinal metinle. Bu, orijinal verilerin bu bütünlüğü bozmadan güvenle düzenlenebilmesi avantajını sağlayacaktır.
Bu yaklaşımla ilgili endişeler, meta verilerin orijinal veriler tarafından bozulması veya tam tersi. Meta verilerin ve (meta) meta verilerinin sorgulara ve güncellemelere ve etkin erişime olanak verecek şekilde yeterli dizine eklenmesi ve yapılandırılması. Orijinal metinden meta verilerin kolay filtrelenmesi.
Bunu göz önünde bulundurarak, çözümün bir kısmının orijinal metin içinde ESCAPE CHARACTERS kullanma yaklaşımına dayanmasını öneririm . Bu, kendi İşaretleme Dilinizi tasarlamak veya XML veya HTML gibi mevcut bir İşaretleme Dili kullanmakla aynı şey değildir . Orijinal metinde sıfır veya sıfıra yakın şansı olan bir KAÇIŞ KARAKTERİ tasarlamak kolaydır .
Bu konuda size tavsiyem, orijinal verileri dikkatlice değerlendirmek ve depolandığı kod sayfasının doğasını belirlemek ve daha sonra ideal bir KARAKTER veya
KARAKTER SIRASI aramak olacaktır.bu gerçekleşmesi olası veya imkansızdır. Örneğin ASCII'de, standart kullanıcı arabirimlerinde hiç kullanılmayan bayt değerlerine sahip, tam anlamıyla yerleşik kontrol karakterleri vardır. Yazı tipi tabanlı veya ilişkisel veri tabanlı bilgi sistemi için de aynı şey söylenebilir. İkili veri kodeklerine dikkat edin. Orijinal verinin niteliğine bağlı olarak, belki de kaçan verilere bakarak ve bütünlüğünün doğrulandığından, ya kaçan yapının basit bir incelemesiyle, bir kontrol sekansının keşfini onaylayan bir ayrıştırıcı oluşturmak değerli olabilir. veriler, hatta kaçan her veri dizisi için hesaplanan bir kontrol karakteri ekleyerek.
Kaçış Dizili Örnek Veriler
Bu bir adamın hikayesi. >>>> (#) Neden bir kadın hakkında bir erkek değil bu hikaye? (#) ( ) Userid :: 77367 ( ) Yöneticinin Yorumu ( ) DataID :: 234234234 >>>> Çayır biçmeye giden bir adam, bir çayır biçmeye gitti. Adam köpeğiyle gitti >>>> (#) Çayır biçmek için hikayenin bir kedi ile daha iyi olup olmadığını sor (#) >>>>. Şimdi bu bir çayır biçmeye giden bir adamın ve köpeğinin hikayesi.
Bir adam ve köpeği, çayır biçmeye gitti, çayır biçmeye gitti, dağın üzerinden bir çayır ulaştı. >>>> (#) Bir ormanla çok daha iyi geliyor (**) Öneri Notu (#) >>>>
Adam ve köpeği ve misyonu, bir çayır biçmek için, dağın üzerinden ulaşan bir çayır sadece nehri geçerken ulaşılır.
Kaçış Dizisi Olmayan Örnek Veriler
Bu bir adamın hikayesi. Çayır biçmeye giden bir adam, çayır biçmeye gitti. Adam köpeğini çayır biçmeye gitti. Şimdi bu bir çayır biçmeye giden bir adamın ve köpeğinin hikayesi.
Bir adam ve köpeği, çayır biçmeye gitti, çayır biçmeye gitti, dağın üzerinden bir çayır ulaştı.
Adam ve köpeği ve misyonu, bir çayır biçmek için, dağın üzerinden ulaşan bir çayır sadece nehri geçerken ulaşılır.
Açıkçası bu kolayca ayrıştırılır, tüm Biçimlendirme dili olarak karmaşık değildir ve amacınıza kolayca uyarlanabilir.
Henüz Çözüldü mü?
Hayır derdim. Çözümümüzün hala bazı delikleri var. Bu verilerin dizine eklenmesi ve yapılandırılmış erişimi zayıf. Ayrıca, bu dosyayı (veya birkaç dosyayı) düzenlemekle aynı anda sorgulamak mantıklı olmaz.
Bu sorunu nasıl çözebiliriz?
Belge başlığı olarak bir VERİ TAHSİS TABLOSU öneririm . Ayrıca bir İŞLEM TABLOSU GÜNCELLEME KUYRU'nun uygulanmasını öneririm . Açıklamama izin ver. Bir dosya sisteminin tasarımcıları, özellikle de bir döner disk dosya sistemi, yukarıda tarif ettiklerinizle benzer tasarım zorluklarıyla karşı karşıya kaldı. Verilerle birlikte diskteki dosyalar hakkında bilgi yerleştirmeleri gerekiyordu. Bu verilerin ilişki bütünlüğüne mükemmel bir çözüm , bir Dosya Ayırma Tablosunda (FAT) DUPLICATE idi .
Bu, her bir Meta Veri Öğesi için Veri Ayırma Tablosunda karşılık gelen bir giriş olduğu anlamına gelir . Bu yüzden hızlı, yapılandırılmış ve ilişkisel ve orijinal verilerden bağımsızdır. Meta verilerde sorguların, birleştirmelerin veya güncellemelerin yapılması gerekiyorsa, veri ayırma tablosuna erişerek kolayca yapılabilir .
Açıkçası, orijinal satır içi meta verilerinin Veri Ayırma Tablosu verilerinin gerçek bir yansıması olmasına dikkat edilmelidir . İşte bir İşlem Tablosu Güncelleme Kuyruğu devreye girer. Meta verilerin her değişikliği, eklenmesi veya kaldırılması, verilerin kendisinde değil, kuyrukta yapılır. daha sonra kuyruk hem satır içi hem de tablo verilerinde tüm değişikliklerin yapılmasını veya hiçbir değişiklik yapılmamasını sağlar. Ayrıca eşzamansız güncellemelerin yapılmasına izin verir, örneğin, belirli bir kullanıcının tüm meta verileri kuyrukta bir sil komutu çalıştırılarak silinebilir. Satır içi meta veriler kilitliyse ve kullanımdaysa, sıra hem Tablo verilerinde hem de satır içi verilerinde yapabilene kadar herhangi bir değişiklik yapmaz.