Btrieve Mimarisi - Architecture of Btrieve

Btrieve bir veri tabanı tarafından geliştirilmiş Yaygın Yazılım. Btrieve mimarisi kayıt yönetimi düşünülerek tasarlanmıştır. Bu, Btrieve'in yalnızca temeldeki kayıt oluşturma, veri alma, kayıt güncelleme ve veri silme ilkelleri ile uğraştığı anlamına gelir. İle birlikte MicroKernel Veritabanı Motoru kullanır ISAM, Altında yatan depolama mekanizması olarak, Dizine Alınmış Sıralı Erişim Yöntemi.

Btrieve, temelde anahtarlar ve dizinler organize etmek veri. Bununla birlikte, dosya yapısının kendisi büyük ölçüde Btrieve'de "sayfalar" olarak adlandırılan daha küçük veri birimleri etrafında inşa edilmiştir. Yapı, Btrieve'in çeşitli sürümleri üzerinde değişmiş olsa da, dosya yapısı hala, sayfaların yapılandırmasını tanımlayan bir Dosya Kontrol Kaydı (FCR) ve Btrieve dosyasındaki verileri içeren sayfaların etrafında dönmektedir. Geçmişte, Btrieve "fiziksel sayfalar" veya dosyada sabit konumlarda bulunan sayfalar kullanıyordu. Sürüm 6.0'dan başlayarak, sayfa ayırma tablolarıyla (PAT'ler) eşlenen "mantıksal sayfalar" kullanılmaya başlandı - bu, Btrieve'nin kayıt güncelleme tekniğini daha sonra "görüntü öncesi sayfalama" olarak bilinen teknikten "adlı bir tekniğe değiştirmesine izin verdi. gölge sayfalama ".

Btrieve kararlıdır geriye dönük uyumluluk 6.15 sürümüne kadar Btrieve sürümleri standart bir dosya biçimi kullandığından ve Btrieve 6.0 piyasaya sürülene kadar tamamen geriye dönük uyumluydu. Btrieve 6.0 yeni özellikler getirdi ve daha gelişmiş özellikler uygulamak için yazılımın eski sürümleriyle uyumluluğu bozmak zorunda kaldı. API aynı şekilde geriye dönük olarak uyumlu kaldı, yalnızca bir özellik (dosyaları medyayı ayırmak için bölme) kaldırıldı. Bir noktada, Btrieve'nin eski CEO Ron Harris, "1.0 API sürümü hala 6.15 sürümünde destekleniyor ve onu sonsuza kadar tutacağız!" Dedi. (Kyle, sayfa 11).

Veritabanı terminolojisi

Pervasive başlangıçta Btrieve'i tanımlamak için "gezinme veritabanı" terimini kullandı, ancak daha sonra bunu "işlemsel veritabanı" olarak değiştirdi. Gezinme veritabanı teriminin kullanımı olağandışıdır çünkü seyir veritabanı veriler arasında gezinmek için "işaretçiler" ve "yollar" kullanır kayıtları ve bu işaretçiler kaydın kendisinde bulunur; Btrieve'nin temel yapısı olan ISAM, arama sürelerini azaltmak için bu işaretçileri depolamak için ikincil bir dizin tablosu kullanır. Bu nedenle, iki veritabanı türü farklıdır ve Pervasive'ın veritabanlarını sınıflandırmak için neden farklı terminoloji kullanmaya başladığını açıklayabilir veya açıklamayabilir. (Not: Bu kesinlikle doğru değildir. Gezinme veri tabanı, veri tabanındaki verilere mantıksal erişimin uygulama düzeyinde arayüz veya API aracılığıyla yapıldığı bir veri tabanıdır, mantıksal ilişkilerin uygulama tarafından geçilmesi anlamında gezgindir. kodu veritabanında "gezinme". ​​Bunu gerçekleştirmek için hangi fiziksel tekniklerin kullanıldığı, yani ISAM, gömülü işaretçiler, vb., tartışmayla neredeyse alakasızdır. Buna karşılık, ilişkisel bir veritabanı, uygulama katmanına herhangi bir mantıksal veritabanı yapısında "gezinme" yolu ve bunun yerine verilerin seçilmesi, toplanması ve birleştirilmesi için ayar seviyesinde bir arayüz sağlar. İlişkisel veritabanları, yukarıda bahsedilen aynısını içeren verilere erişmek için çeşitli fiziksel teknikler de kullanabilir, ancak önemli yönü "ilişkisel" olması, verilere ilişkisel olarak erişilmesidir, yani bir gezinme modeli yerine bir dizi sorgu modeli ile karşılaştırılır.)

Mikro Çekirdek Veritabanı Motoru

MKDE modeli, farklı veritabanı arka uçlarının Pervasive'ın yazılım ürününe eklenmesine izin verir.

6.15 sürümünden başlayarak Pervasive, veritabanını ayırmak için yeni bir modüler yöntem kullanmaya başladı arka uç geliştiricilerin kullandığı arayüzden. Temel veritabanı işlemlerini (kayıtları güncelleme, yazma ve silme gibi) Btrieve'den ayırdılar ve Ölçeklenebilir SQL modüller. Micro-Kernel Database Engine'i (MKDE) izin verdiği diğer işlevlerden ayırarak programcılar veritabanına aynı anda erişmek için çeşitli yöntemler kullanmak. Örneğin, Btrieve kullanılarak bir uygulama oluşturulabilir. API ve başka uygulama Aynı verilere erişmesi gerekenler, Ölçeklenebilir SQL gibi tamamen farklı bir yöntem kullanabilir. Çünkü kayıt ilkeller bu yöntemlerden ayrıldı, her iki uygulama da aynı verilere erişmek için MKDE'yi kullanabilir dosya.

Micro-Kernel Veritabanı Motoru ile ilgisi yoktur mikro çekirdek işletim sistemi çekirdekleri.

Çağrı

Btrieve dosya formatı tamamen sayfalardan oluşur; bu, motor bir işlem gerçekleştirdiğinde bellek ve depolama ortamı arasında hareket eden verilerdir. G / Ç operasyon. 6.0'dan önceki sürümlerde yalnızca veri sayfaları, dizin sayfaları ve dosya kontrol kaydı (FCR). Dosya, fiziksel sayfalara bağlı arama için bir dizine sahipti. 6.0 sürümünden itibaren mantıksal sayfalar kullanılmaya başlandı, eşlenen sayfalar fiziksel sayfalar (dosyada sabit bir konumda bulunan sayfalar) bir dizi kullanım yoluyla diskte sayfa ayırma tabloları (PAT'ler).

Dosya kontrol kaydı

Dosya kontrol kaydı (FCR), Btrieve veritabanı dosyaları hakkında önemli bilgiler içerir. Tutar sayfa boyutu, geçerli kullanımdaki sayfa sayısı, dosyayı indeksleyebilen anahtarların sayısı, dosyadaki kayıt sayısı ve diğer ayrıntılar. 6.0 sürümünden sonra artıklık için iki FCR kullanıldı. Her FCR'de bulunan 32 bitlik kullanım sayısı alanı, hangi FCR'nin kullanım için geçerli olduğunu belirlemek için kullanılır. Bir dosya üzerinde her işlem yapıldığında alan artırılır. En yüksek kullanım sayısına sahip FCR, geçerli FCR olur. FCR, Jim Kyle'dan alınan kaynak örneklerinde iyi tanımlanmıştır. MKDE sürüm 8'in piyasaya sürülmesiyle FCR sayfasının yapısı değiştirildi. Sayfa boyutu artık FCR içinde taşınır ve normal bir 32 bitlik alan değildir. Sürüm 8'den bu yana, 32 bitlik alanı 0x2A ofsetinde alarak ve 256 ile çarparak sayfa boyutunu hesaplamanız gerekir.

Sayfa ayırma tabloları

Bir sayfa ayırma tablosu (PAT) mantıksal sayfaları fiziksel sayfalara eşler. Her PAT, iyi tanımlanmış yerlerde bulunan fiziksel bir sayfadır. FCR'ler gibi, PAT'ler her zaman çiftler halinde meydana gelir ve şu anda geçerli olan kopya daha yüksek bir kullanım sayısına sahip olarak belirtilir. İlk PAT çifti hemen ilk iki FCR'yi takip eder ve 2. ve 3. fiziksel sayfaları alır. Değişken sayıda başka sayfalar takip eder ve bunu da yeni bir PAT çifti izler. Her PAT'nin mantıksal sayfalara yönelik sabit sayıda işaretçisi vardır ve boş olan her giriş sıfır değerine sahiptir.

PAT'de saklanabilecek mantıksal kayıtların miktarı, sayfa boyutuna göre belirlenir. MKDE'nin 6.x ve 7.x sürümlerindeki her sayfa işaretçisi 4 bayt alan kaplar ve PAT başlığı 8 bayt yer kapladığından, PAT'deki mantıksal sayfaların miktarı şöyle olur:

Mantıksal sayfa sayısı = (Sayfa boyutu ÷ 4) - 8

MKDE sürüm 8'in tanıtılmasıyla, sayfa üstbilgisinin boyutu değişti ve bu nedenle bu formül artık geçerli değil, ancak ilke aynı kaldı.

Ön görüntü sayfalama ve Gölge sayfalama

6.0 sürümüne kadar, ön görüntü sayfalama kayıtlara güncelleme yapılırken kullanıldı. Değişiklikler yapılmadan önce yeni bir "ön görüntü dosyasının" oluşturulmasını içeriyordu ve ardından orijinal veri dosyasından sayfalar bu yeni ön görüntü dosyasına geçici olarak kopyalandı. Daha sonra sistem değişiklikleri orijinal dosyada yapacaktır. Güncelleme kesintiye uğrarsa ve sayfaya yazılan verilerin yalnızca yarısı olursa, sayfa ön görüntü dosyasından orijinal veritabanı dosyasındaki bozuk sayfaya geri kopyalanarak motor tarafından geri alınır, ardından geçici ön görüntü dosyası silinecektir. Ön görüntü dosyalarına .PRE uzantısı verildi, bu nedenle bu dosyaları sistemde bulmak genellikle bir işlemin doğru şekilde gerçekleşmediğini ve kurtarmanın başarılı olmadığını gösteriyordu.

6.0 sürümünden başlayarak, gölge sayfalama ön görüntüleme yerine kullanıldı ve bugün hala kullanılıyor. Sayfayı geçici bir dosyaya kopyalamak yerine, veritabanı dosyasında bir sonraki yedek fiziksel konum bulundu ve sayfa bu konuma yazıldı. Bu sayfaya bir gölge sayfa çünkü hala konumu dosyanın PAT'ına yazılmamıştır. Gölge sayfadaki güncelleme tamamlandığında, PAT güncellendi ve giriş dosyadaki bir sonraki kullanılabilir ve geçerli fiziksel sayfanın PAT'ına kaydedildi. Bununla birlikte, gölge sayfaya güncelleme yapılırken bir sistem arızası meydana gelirse, PAT güncellenmez ve bu nedenle, mevcut ve sonraki giriş PAT'de güncellenmediğinden değişiklik iptal edilir.

Ön görüntü sayfalamadan gölge sayfalamaya geçiş, Btrieve'nin önceki sürümleri ile ürünün 6.x sürümü arasındaki uyumluluğu bozan köklü dosya biçimi değişikliklerine neden oldu.

Alternatif Harmanlama Sırası sayfaları

Alternatif Harmanlama Sırası (ACS) sayfaları, kayıtların farklı bir sırada sıralanmasına izin veren sayfalardır. Harmanlama yazılı bilgilerin standart bir sıra halinde birleştirilmesidir. Yaygın kullanımda buna alfabetikleştirme denir, ancak harmanlama harfleri sıralamakla sınırlı değildir. alfabe. Örneğin, bir ACS, sıralama düzeninin hem büyük / küçük harfe duyarlı hem de büyük / küçük harfe duyarlı olmayan sırada sıralanmasına izin verebilir. 6.0 sürümünden önce dosyada yalnızca bir ACS saklanabiliyordu, ancak 6.0 yayımlandıktan sonra herhangi bir anda birden fazla ACS sayfası bir dosyayla ilişkilendirilebiliyordu.

Ekstra sayfalar

Sürüm 6.0 ve sonraki dosyalarda, gerçekte kullanılandan daha fazla fiziksel sayfa bulunabilir. Bunun nedeni, gölge sayfalama ile sistemdeki bazı sayfaların PAT'ta bir girişe sahip olmayabilmesidir. Bu sayfalar "Ekstra" sayfalar olarak işaretlenir ve yeni sayfalar için yer ayrılmadan önce kullanılır.

Değişken kuyruklu tahsis tabloları

Btrieve'de her sayfa sabittir ancak bir kayıt sayfa boyutundan daha büyük olabilir. Bu, kayıtların genellikle parçalanması ve birçok farklı sayfaya yayılması gerektiği anlamına gelir. Çok büyük kayıtlarda bu, kaydı saklamak için yüzlerce sayfanın kullanılması gerekebileceği anlamına gelebilir. Bağlantılı bir liste yaklaşımı bu parçalanmaya izin verebilir, ancak Btrieve motoru sıralı kayıtları okumakta zorlanacaktır. Bu nedenle, 6.1 sürümünden başlayarak, dosyada veri kaydını oluşturan sayfaların her birine işaretçiler depolayan bir tablo kullanılır. Bu tabloya değişken kuyruklu tahsis tablosu (KDV).

Endeksleme

Btrieve, verileri hızlı bir şekilde almak için belirli sütunlardaki dizinleri kullanır. Üstteki yapı bir b-ağacı veri yapısı ve dizinler Çalışan kimliği veritabanı tablosunun sütunu. Oklar, dizin değerinden "Çalışan Kimliği" sütunundaki değeri içeren satırları işaret eder.

Btrieve bir b-ağacı saklanacak format kayıt dizinleri özellikle masa sütunlar. Dizin, dizine alınmış sütun değerlerinin her kümesini, ilgili sütun için benzersiz tanımlayıcılar kümesiyle eşler. satırlar Bu sütun değerlerine sahip olan, dizine alınmış sütunu kullanarak bir tablodaki satırları bulmanın hızlı bir yolunu sağlar. B ağaçları ağaç veri yapıları ve hızlı veri alma mekanizması olarak çok etkilidir. Bir btree'nin dezavantajı, verilerin ağaca eklendiğinde sürekli olarak dengelenmesi gerektiğidir, bu nedenle Btrieve, kayıtları eklemek ve güncellemek için gereken süreyi azaltmak için kayıt indeksini yalnızca btree olarak saklar. Sistemdeki her indeks için ayrı bir b-ağacı tutulur ve kök düğüm bilgisi FCR'de tutulur. Btrieve 6.x'te dosya oluşturma sırasında yeni bir dizin oluşturulabilir veya dosya oluşturulduktan sonra eklenebilir ve bırakılabilir. İndeks sayfaları da ihtiyaç duyuldukça oluşturulur. Btrieve 6.0'dan önce var olan anahtar dizinler kaldırılamazdı, ancak gerektiğinde tamamlayıcı dizinler oluşturulabilir ve kaldırılabilirdi.

Btrieve, bir dizinde yinelenen anahtar değerlerine izin verir. Btrieve, yinelenen anahtarları bir bağlantılı kopya yöntem veya kullanarak yinelenen kopya yöntem (bu terminoloji 6.0 sürümü yayınlandığında kullanılmaya başlandı). Bağlantılı çoğaltma yöntemi, bir sayfanın başına ve sonuna işaret etmek için dizin sayfasının kendisinde bir çift kayıt işaretçisi kullandı. çift ​​bağlantılı liste yinelenen anahtarlar. Bu, listedeki yinelenen anahtarların sırasının, girildikleri sırada olduğu anlamına geliyordu. Yinelenen anahtar yöntemi, bağlantılı bir liste kullanmadı, bunun yerine yeni bir dizin anahtarı oluşturarak ve kayıt işaretçisinin adresini anahtarın sonuna ekleyerek tüm anahtarları benzersiz yaptı. Bu, anahtarın pozisyon sırası ile alındığı anlamına gelir.

Dosya paylaşımı

Btrieve'in kayıtlara erişmek için dosya paylaşımı yapması gerektiğinde, iki farklı türde dosya paylaşım modu kullanılabilir: Tek Motorlu Dosya Paylaşımı (SEFS) modu ve Çok Motorlu Dosya Paylaşımı (MEFS) modu. SEFS, yalnızca bu motora erişen istemcilerin veritabanını değiştirmesine izin verdi, farklı bir motora erişen diğer istemciler veritabanına erişim sağlayamadı. MEFS, farklı motorlar altında çalışan farklı istemcilerin veritabanına erişmesine izin verir.

Eşzamanlılık

Btrieve başardı eşzamanlı işlemler 6.x serisinde. Btrieve 6.0'dan önce, motor yalnızca dosya düzeyinde kilitleme veya özel kilitleme; 6.0'dan itibaren kayıtlar ayrı ayrı kilitlenebilir. Kayıt (veya sayfa) düzeyinde kilitleme, eşzamanlı kilitleme. Avantajları açıktı: Aynı kayda erişmeye çalışmadıkları sürece birden fazla müşteri dosyaya aynı anda erişebiliyordu ve bu da performans artışına neden oluyordu. Ek olarak, diğer istemciler kilitli sayfaları okuyabilir ve kaydı kilitleyen başka bir işlemin yazma işlemine dahil olan bir dosyada herhangi bir değişiklik görmezler.

MEFS modu eşzamanlı kilitlemeyi tam olarak desteklemiyordu. Bir istemci eşzamanlı bir işlem başlattıysa ve daha sonra bir kayda bir yazma işlemi gerçekleştirmeye çalıştıysa, Btrieve motoru, eşzamanlı bir kilit kullanılsa bile, dosyanın kilitlendiğini gösteren 85 durum kodunu döndürecekti.

Sistem ve kullanıcı işlemleri

Btrieve'in 6.15 sürümünden başlayarak, yeni bir veritabanı işlemi tanıtıldı sistem işlemiayrılan kullanıcı işlemleri. Kullanıcı işlemleri münhasır ve eşzamanlı işlemlerdir; sistem işlemleri ise işlem dışı işlemler ve / veya kullanıcı işlemleri paketidir. Sistem işlemleri yalnızca MKDE tarafından veri kurtarma için kullanıldı. Bir sistem arızası veri bozulmasına neden olursa, MKDE yeniden başlatıldığında, başarısız bir sistem işlemi olan tüm dosyaları tespit eder ve bunları kurtarmaya çalışır. Ancak, son sistem işlemi geri alındığında kullanıcı işlemleri kaybedilmiş olabileceğinden, MKDE'nin, motor bir "İşlemi Sonlandır" isteği aldığında kullanıcı işlemlerine sahip olan sistem işlemlerini tamamlamaya zorlamasına neden olan bir seçenek ayarlanabilir.

Referanslar

  • Dahunsi, Ayodele (1 Ocak 1998). Btrieve ve Ölçeklenebilir SQL4'ü Anlamak. Clarion Dergisi.
  • Kyle Jim (1995). Btrieve complete: geliştiriciler ve sistem yöneticileri için bir kılavuz. Reading, Massachusetts: Addison-Wesley Publishing Company. ISBN  0-201-48326-2.
  • Novell (tarih yok). NetWare Btrieve Bileşenleri. Erişim tarihi: Aralık 12, 2004.
  • Yaygın (1997). Btrieve for DOS Kurulum ve Kullanım kılavuzu. Ürün kullanma kılavuzu.
  • Yaygın (1998). NetWare NLM Uygulamasından Durum 96. Yaygın Bilgi Bankası makalesi (makale kimliği: BTRTT-97070801). Erişim tarihi: Aralık 12, 2004.
  • Yaygın (Kasım 1996). Windows NT / Windows 95 için Btrieve Kurulum ve Çalıştırma. Ürün kullanma kılavuzu.
  • C Fiedler (Temmuz 2010). btrieve veritabanı dosya erişimi (PageSize algılama).
  • dbcoretech (Temmuz 2010). btrieve kurtarma programı (açık kaynak).