Alfresco Search ve Discovery'e Genel Bakış
Bu gönderi, Alfresco Search and Discovery'nin kısa bir teknik özetidir. İlgili Mimar/Geliştiricinin Whiteboard Videosuna bakabilirsiniz. Özetle, Arama ve Keşif'in amacı, kullanıcıların ölçekten bağımsız olarak içeriği hızlı bir şekilde bulmasını ve analiz etmesini sağlamaktır.
Aşağıda, Açık Alanda Arama ve Keşif'i oluşturan temel yazılım bileşenlerinin görsel bir temsili bulunmaktadır.
Arama ve Keşif beş bölüme ayrılabilir:
paylaşılan bir veri modeli - yeşil renkle gösterilen bileşenler;
indeksleme ile oluşturulan ve sorgu için kullanılan indeks ve temel veriler - turuncu renkle gösterilen bileşenler;
bu dizinleri sorgulamak - kırmızı ile gösterilen bileşenler;
bina indeksleri - sarı ile gösterilen bileşenler; ve
yalnızca bazı kurumsal bileşenler mavi renkte gösterilir.
indeks nedir?
İndeks, belge ve klasör durumlarının bir koleksiyonudur. Her durum, belirli bir zamanda bir belgeyi veya klasörü temsil eder. Bu durum, belgenin veya klasörün dosyalandığı yeri, meta verilerini, içeriğini, onu bulmak için erişim haklarına sahip olanları vb. içerir.
Bilginin havuzda nasıl saklandığını tanımlayan veri modeli, aynı zamanda nasıl indekslendiğini ve sorgulandığını da tanımlar. Depodaki bir modelde yapılan, özellik eklemek gibi herhangi bir değişiklik dizine yansıtılır ve bu durumda, yeni özellik sorunsuz ve öngörülebilir bir şekilde sorgulanabilir.
Üç farklı durum için üç dizin oluşturuyoruz:
klasörlerin ve içeriğin tüm canlı durumları için bir tane;
klasörlerin ve içeriğin açıkça sürümlendirilmiş tüm durumları için bir tane; ve
klasörlerin ve içeriğin tüm arşivlenmiş durumları için bir tane.
Bu durumların herhangi bir kombinasyonunu sorgulamak mümkündür.
Bu dizinlerin her biri, ölçeklenebilirlik ve esneklik gereksinimlerini karşılamak için bir bütün olarak var olabilir veya her bir parçanın bir veya daha fazla kopyası ile parçalara ayrılabilir. Bu parçalara genellikle kırıklar ve kopyalar denir. Büyük bir dizini daha küçük parçalara ayırmanın çeşitli yaklaşımları vardır. Bu genellikle bazı özel müşteri gereksinimleri veya kullanım durumları tarafından yönlendirilir. Seçenekler şunları içerir: klasörlerin ve belgelerin bir parçaya rastgele atanması, erişim denetimiyle atama, bir tarih özelliğine göre atama, oluşturma yoluyla atama, özellik değerine göre atama ve daha fazlası. Başka bir blog, dizin parçalama seçeneklerini ayrıntılı olarak ele alır.
Örneğin, belge oluşturma zamanında bir parçaya sıralı atama, basit bir otomatik ölçeklenebilir yapılandırma sağlar. Bir parçayı dolana kadar kullanın ve ardından gerektiğinde bir sonraki parçayı ekleyin. Alternatif olarak, tüm sorgularınız kimliğe göre bir müşteri belirtiyorsa, verilerinizi müşteri kimliğine göre bölmek mantıklı olacaktır. Her müşteri için tüm bilgiler daha sonra tek bir parçada bir arada tutulacaktır.
Dizinler tipik olarak yaklaşık 50 milyon dosya ve klasöre kadar tek parça olarak bulunur. Tüm parçaları birleştirmek, etkili bir genel dizin verir. Veri, bellek, IO yükü vb. daha sonra ölçeklenebilecek bir şekilde dağıtılabilir. Ölçeklenebilirlik, yedeklilik ve dayanıklılık sağlamak için her parça için birden fazla kopyaya sahip olmak yaygın bir durumdur.
Genel API'de Ara
Genel arama REST API'si, yukarıda özetlenen dizinlerde tutulan bilgileri sorgulayan, kendi kendini tanımlayan bir API'dir. Herhangi bir tek indeks veya indeks kombinasyonu sorgulanabilir. İki sorgu dilini destekler. CMIS standardı tarafından tanımlanan SQL benzeri bir sorgu dili ve Alfresco Tam Metin Araması (AFTS) olarak adlandırdığımız Google benzeri bir sorgu dili. Her ikisi de havuzda tanımlanan veri modelini yansıtır. API, faset odaklı gezinme, raporlama ve analiz için sorgu sonuçlarının toplanmasını destekler.
Herhangi bir sorgunun ve ilgili toplamanın sonuçları, sorguyu yürüten kullanıcının erişim haklarına her zaman saygı duyar. Bu, güvenlik işaretlerinin sorgu ve toplama zamanında da uygulandığı Bilgi Yönetimi kullanılırken de geçerlidir.
Genel arama API'sı ve örnekler, mevcut birkaç blogda ele alınmaktadır. Görmek:
https://community.alfresco.com/community/ecm/blog/2016/12/22/introduction-solr-63-and-alfresco-search...
https://community.alfresco.com/community/ecm/blog/2017/04/11/v1-rest-api-part-9-queries-search?sr=se...
https://community.alfresco.com/people/andy1/blog/2017/05/26/structure-tags-categories-and-query-in-t...
https://community.alfresco.com/people/andy1/blog/2017/10/02/basic-content-reporting-using-the-521-se...
Kurumsal müşteriler için, ince bir JDBC sürücüsü aracılığıyla bir SQL alt kümesini kullanarak JDBC erişimini de destekliyoruz. Bu, BI ve Apache Zeppelin gibi raporlama araçlarıyla entegrasyona izin verir.
İçerik Modeli
Alfresco Arama Hizmetleri örneğindeki tüm dizinler aynı içerik modelini paylaşır. Bu içerik modeli, Alfresco İçerik Hizmetlerinde tutulan içerik modelinin bir kopyasıdır. İçerik modeline bir tür, görünüm veya özellik eklerseniz, eklenen tüm veriler modele göre dizine eklenir ve sorgulanabilir.
Alfresco tam metin arama sorgu dili ve CMIS sorgu dili, içerik modeli tarafından desteklenir. Modeldeki herhangi bir özellik, her iki sorgu dilinde de kullanılabilir. Sorgu uygulamasının ayrıntıları bu şemanın arkasına gizlenmiştir. Uygulama ve “gerçek” dizin şemasını gelecekte değiştirebiliriz, ancak veri modeli ve sorgu sözdizimi tarafından tanımlanan bu sanal şema aynı kalacaktır.
Depodaki veri modeli türleri, yönleri ve özellikleri tanımlar. Bir özellik türü, indeksinin ve sorgu davranışının çoğunu tanımlar. Özellikle metin özellikleri, tanımlandıklarında bazı ek düşünceler gerektirir. Bir mülkün nasıl kullanılacağını düşünmek önemlidir.
… tanımlayıcı olarak mı?
… tam metin araması için mi?
… sipariş için mi?
… yontma ve birleştirme için mi?
… yerelleştirilmiş arama için mi?
… yerel ayardan bağımsız arama için mi?
… veya yukarıdakilerin herhangi bir kombinasyonu.
Bir model izleyici, her arama hizmetleri örneğinde veri havuzu modelinin güncel bir kopyasını tutar.
İndeks Oluşturma
Herhangi bir belge oluşturulduğunda, güncellendiğinde veya silindiğinde, depo, veritabanında son değişikliğin ne zaman yapıldığının bir kaydını tutar. Dizin oluşturma, durum değişikliklerini bu değişikliklerin yapıldığı sırayla takip etmek için bu günlüğü kullanabilir. Her dizin, parça veya çoğaltma, ne eklediğini açıklayan kendi günlük bilgilerini kaydeder. Bu, veritabanındaki günlükle karşılaştırılabilir. Dizin oluşturma işlemi, havuzun mevcut durumunu temsil eden bir dizin oluşturmak ve bu işleme herhangi bir noktada devam etmek için depoda meydana gelen değişiklikleri yeniden oynatabilir. Veritabanı gerçeğin kaynağıdır: dizin, arama ve keşif için optimize edilmiş bir okuma görünümüdür.
İzleyiciler, dizin günlüğünün çeşitli yönlerini veritabanı günlüğüyle karşılaştırır ve veritabanından hangi bilgileri çekip dizin durumuna ekleyeceğini hesaplar. ACL izleyici, okuma erişim kontrol bilgilerini getirir. Düğümler için meta veriler, meta veri izleyici tarafından değiştirildikleri sırayla depodan toplu olarak çekilir. Bir düğüm içerik içeriyorsa, içerik izleyici bunu meta veriler dizine eklendikten bir süre sonra mevcut meta veri bilgilerine ekler. Kademeli izleyici, ataları değiştiğinde, alt düğümlerdeki tüm bilgileri eşzamansız olarak günceller. Bu basamak, yeniden adlandırma ve taşıma gibi işlemlerden veya ataların yeni yapı ve içeriğe yeni yollar oluşturan diğer düğümlere bağlanmasından kaynaklanır. Taahhüt izleyici, veritabanına yapılan işlem güncellemelerinin de dizine işlemsel olarak uygulanmasını sağlar.
Arama sonucunda hiçbir parça işlemi gösterilmez ve işlemler beklenen sırayla uygulanır. Taahhüt izleyici ayrıca bilgilerin dizine nasıl eklendiğini ve ne zaman ve ne sıklıkta yayına gireceğini koordine eder. Dizin durumu, her zaman veritabanında belirli bir zamanda var olan tutarlı bir durumu yansıtır.
İzleme sürecinin bir parçası olarak, her bir dizin ve parça hakkındaki bilgiler dijital iş platformuna geri gönderilir. Bu bilgiler, sorgu için tüm dizinler halinde parçaları ve kopyaları dinamik olarak gruplamak için kullanılır. Dijital İş Platformundaki her düğüm, sorgular için kullanılacak en iyi genel dizini belirleyebilir.
Tüm parçalar ve kopyalar, kendi yapılandırmalarına göre bağımsız olarak oluşturulur. Eşzamanlı güncellemeleri replikalara koordine etmesi gereken bir müşteri adayı parçası yoktur. Her şey asenkron. Hiçbir şey, bir parçanın tüm kopyalarının aynı duruma ulaşmasını beklemez. Kullanılabilir parçalar ve kopyalar, akıllıca bir dizinde birleştirilir.
Parça kopyalarının dengesiz olmasına izin verilir - her parçanın aynı sayıda kopyaya sahip olması gerekmez. Bir parçanın her bir kopyasının aynı durumda olması gerekmez. Diğerlerine göre önemli ölçüde daha fazla sorgu yükü alan etkin bir parçayla, bu parçanın daha fazla kopyasını oluşturarak uğraşmak kolaydır. Örneğin, içeriğiniz çoğu sorgunun en son bilgileri kapsadığı tarihe duyarlı olabilir. Bu durumda, tarihe göre parça oluşturabilir ve daha fazla son parça örneğine sahip olabilirsiniz.
Sorgu Yürütme
Sorgular, Alfresco REST API'sinin arama uç noktası veya JDBC aracılığıyla yürütülür. Bu API'ler, basit sorgulardan karmaşık çoklu seçimli model oluşturma ve raporlama kullanım senaryolarına kadar her şeyi destekler. Genel API aracılığıyla her sorgu önce analiz edilir. Bazı sorgular veritabanına karşı yürütülebilir. Bu mümkünse ve talep edilirse, olan budur. Bu işlemsel sorgu desteği sağlar. Tüm sorgular, bir veya daha fazla Alfresco Arama Hizmetleri örneğine karşı yürütülebilir. Burada, dizin durumu henüz veritabanına yetişmemiş olabileceğinden, nihai tutarlılık söz konusudur. Ancak dizin durumu her zaman veritabanında var olan bazı gerçek tutarlı durumları yansıtır.
Bir sorgu bir Alfresco Search Services örneğine ulaştığında, yerel olarak tek bir dizine yönelik bir sorgu yürütebilir veya bir dizini oluşturan parçalar üzerinden yanıtı koordine edebilir. Bu koordinasyon, doğru sıralama, sıralama, yön sayıları vb. ile genel bir sonuç seti üretmek için birçok parçadan gelen sonuçları harmanlar.
JDBC tabanlı sorgular her zaman şuraya gider. SOLR akış API'sinin geliştirilmesine öncülük etti ve JDBC için destek eklenmesiyle ilgilendi. Diğer Alfresco geliştiricileri, SOLR'ye belge benzerliği, hata düzeltmeleri ve yamalar ile ilgili katkılarda bulunmuştur.
Son Derece Ölçeklenebilir ve Esnek İçerik Deposu
Bu özellikler, müşteri ihtiyaçlarına göre ölçeklenebilen ve ölçeklenebilen ve bir Milyar ve daha fazlasını yönettiği kanıtlanmış bir arama çözümü sunmak için bir araya geliyor. Müşteriler, havuzun ölçeğinden bağımsız olarak içeriği hızlı ve kolay bir şekilde bulabilir.