Objektivitet/DB

Objectivity/DB är en kommersiell objektdatabas producerad av Objectivity, Inc. Den tillåter applikationer att göra standard C++ , C# , Java eller Python -objekt beständiga utan att behöva konvertera dataobjekten till de rader och kolumner som används av ett relationsdatabashanteringssystem ( RDBMS). Objectivity/DB stöder de mest populära objektorienterade språken plus SQL / ODBC och XML . Den körs på Linux- , Macintosh- , UNIX- och Windows- plattformar. Alla språk och plattformar samverkar, med Objectivity/DB-kärnan som tar hand om kompilator- och hårdvaruplattformsskillnader.

Historia

Objectivity/DB såldes första gången 1990. C++- och Java-gränssnitten för Objectivity/DB innehåller de funktioner som definieras i ODMG'93-standarden. C#- och Python-gränssnitten lades till senare.

Arkitektoniska egenskaper

Objectivity/DB är en distribuerad databas som ger en enda logisk vy över en federation av databaser distribuerade över nätverket. Den använder en distribuerad datormodell som länkar ett litet mjukvarubibliotek med klientapplikationen. Klienten kommunicerar transparent med fjärrservrar som är funktionellt enklare än deras motsvarigheter i centraliserade databasserverarkitekturer . Det finns lås, fjärrdataöverföring och frågeagentserverprocesser. Den distribuerade arkitekturen hjälper till att göra Objectivity/DB i sig skalbar och pålitlig . Den har bibehållit intagshastigheter på över en terabyte per timme samtidigt som den stöder datafusion och frågeoperationer.

Objectivity/DB använder en distribuerad lagringshierarki. Objekt lagras i logiska kluster som kallas behållare. Behållarna lagras i databaser som är katalogiserade i en federerad databas . Varje objekt har en unik 64-bitars objektidentifierare (OID) som är en sammansatt logisk struktur. Den fysiska adressutrymmesbegränsningen för en enskild federation är i intervallet miljontals terabyte. Den största publicerade Objectivity/DB-installationen, vid SLAC:s BaBar-experiment , lagrad över en Petabyte av objekt.

Objectivity/DB ger ett flexibelt tillvägagångssätt för att definiera hur objekt placeras inom en given lagringshierarki. Databasdesigners kan definiera en anpassad placeringsstrategi som är inkapslad i en XML-konfigurationsfil och görs tillgänglig för applikationen. Denna strategi kan definiera vilka beständiga objekt som lagras tillsammans, vilka som distribueras och vilka som lagras nära angivna objekt.

Objekt kan länkas till andra objekt med hjälp av namngivna enkelriktade eller dubbelriktade länkar. Länkarna kan ha en kardinalitet på 1:1, 1:många, många:1 eller många:många och använda OID för att påskynda navigeringen av nätverk av objekt. OID:erna används också som stöd för skalbara samlingar (träd, lista, set etc.), index och hashtabeller . Att eliminera de relationella Join -operationerna som är inneboende i en relationsdatabas ger Objectivity/DB en prestandafördel.

Objektivitet/DB skiljer sig också från RDBMS i det sätt på vilket den hanterar frågor. Applikationen deklarerar och initierar en iterator som lokaliserar och returnerar kvalificerade objekt så snart de är lokaliserade. Objectivity/DB Parallel Query Engine delar upp frågor i deluppgifter riktade mot enskilda databaser eller behållare. Fjärrfrågeagenter servar varje deluppgift och returnerar resultat till iteratorn. Parallelfrågemotorn har två utbytbara komponenter: en splitter som kan avgöra hur uppgiften bäst ska delas upp och ett filter i frågeagenten som kan förfina en fråga ytterligare. En fråga som involverar städer i Europa kan delas upp i fyrtionio deluppgifter, en för varje land. Filtret kan komma åt en extern datakälla innan det kvalificerar eller diskvalificerar objekten som frågeagenten har hittat i Objectivity/DB-databasen eller behållaren.

Databaser och systemdata (kataloger och schema ) kan replikeras till flera platser med hjälp av en kvorumbaserad synkron replikeringsmekanism. Repliker som tillfälligt är separerade från kvorumet synkroniseras på ett transparent sätt när de återansluts till nätverket som betjänar dem och deras kamrater. Individuella databaser och låsservrar kan tilldelas röster som används för att avgöra om en klient kan uppdatera en replik eller inte.

Den distribuerade databasen och bearbetningsarkitekturen i Objectivity/DB har gjort det möjligt att använda den i många grid- beräkningsmiljöer. Den har uppnått certifiering som en IBM Ready For Grid-produkt. Den används också i applikationer för serviceorienterad arkitektur . Objectivity For Java har stöd för J2EE Connector Architecture- standarden (JCA). Den distribuerade arkitekturen för Objectivity/DB är lika tillämplig på molnmiljöer.

Typiska Användningsområden

Objektivitet/DB används i allmänhet i dataintensiva eller realtidsapplikationer som manipulerar mycket komplexa, inbördes relaterade data. Det kan vara inbäddat i en mjukvara eller hårdvaruprodukt eller användas som en del av kommersiella, vetenskapliga eller statliga projekt.

Tidiga implementeringar var främst i datorstödd design och ingenjörsapplikationer. I början av 1990-talet började ett antal tillverkare av telekomutrustning bädda in Objectivity/DB i avancerade intelligenta nätverks- och elementhanteringssystem . Anmärkningsvärda installationer har inkluderat trådlösa SprintPCS och Iridium satellitnätverk med låg omloppsbana om jorden . Ett antal system för processtyrning, tillverkning och medicinsk instrumentering innehåller Objectivity/DB på grund av dess realtidsprestanda och höga tillgänglighet.

Försvarsentreprenörer och stora vetenskapsprojekt började använda Objectivity/DB i slutet av 1990-talet. De statliga applikationerna omfattar ledning och kontroll, säkerhet, datafusion och underrättelseapplikationer. Objektivitet/DB har använts inom astrofysik, högenergifysik, fusion, geovetenskap, hydrografi och bioinformatik. De flesta av dessa applikationer bygger och manipulerar extremt stora (multi-Petabyte) databaser.

Valet av en RDBMS eller en ODBMS beror på många faktorer. En ODBMS kan vara idealisk i ett dator- eller dataintensivt objektorienterat system. Men om en RDBMS bekvämt kan uppfylla funktions- och prestandakraven för en applikation med de tillgängliga programmeringsresurserna så finns det förmodligen inget behov av att överväga ett ODBMS.

externa länkar