SlideShare a Scribd company logo
1 of 7
Sedna Architecture Maria Grineva [email_address] PhD, Software Developer Sedna Team
Sedna Architecture Overview
Sedna Architecture: interactions between processes
Sedna API overview ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Basic Sedna C API ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Sedna API Extensibility ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Your Questions

More Related Content

What's hot (20)

Chapter 3 stored procedures
Chapter 3 stored proceduresChapter 3 stored procedures
Chapter 3 stored procedures
 
XPATH
XPATHXPATH
XPATH
 
The life of a query (oracle edition)
The life of a query (oracle edition)The life of a query (oracle edition)
The life of a query (oracle edition)
 
X FILES
X FILESX FILES
X FILES
 
2 b queues
2 b queues2 b queues
2 b queues
 
2 a stacks
2 a stacks2 a stacks
2 a stacks
 
1 list datastructures
1 list datastructures1 list datastructures
1 list datastructures
 
4. plsql
4. plsql4. plsql
4. plsql
 
SQL
SQLSQL
SQL
 
Introduction to PL/SQL
Introduction to PL/SQLIntroduction to PL/SQL
Introduction to PL/SQL
 
Oracle db subprograms
Oracle db subprogramsOracle db subprograms
Oracle db subprograms
 
SQL Server Stored procedures
SQL Server Stored proceduresSQL Server Stored procedures
SQL Server Stored procedures
 
Go faster with_native_compilation Part-2
Go faster with_native_compilation Part-2Go faster with_native_compilation Part-2
Go faster with_native_compilation Part-2
 
ORACLE PL SQL
ORACLE PL SQLORACLE PL SQL
ORACLE PL SQL
 
Language Integrated Query - LINQ
Language Integrated Query - LINQLanguage Integrated Query - LINQ
Language Integrated Query - LINQ
 
Packages in PL/SQL
Packages in PL/SQLPackages in PL/SQL
Packages in PL/SQL
 
Xpath presentation
Xpath presentationXpath presentation
Xpath presentation
 
Understanding linq
Understanding linqUnderstanding linq
Understanding linq
 
Go Faster With Native Compilation
Go Faster With Native CompilationGo Faster With Native Compilation
Go Faster With Native Compilation
 
oracle plsql training | oracle online training | oracle plsql demo | oracle p...
oracle plsql training | oracle online training | oracle plsql demo | oracle p...oracle plsql training | oracle online training | oracle plsql demo | oracle p...
oracle plsql training | oracle online training | oracle plsql demo | oracle p...
 

Similar to Architecture of Native XML Database Sedna

Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6Ido Flatow
 
Sap integration with_j_boss_technologies
Sap integration with_j_boss_technologiesSap integration with_j_boss_technologies
Sap integration with_j_boss_technologiesSerge Pagop
 
SAP Integration with Red Hat JBoss Technologies
SAP Integration with Red Hat JBoss TechnologiesSAP Integration with Red Hat JBoss Technologies
SAP Integration with Red Hat JBoss Technologieshwilming
 
GreenVulcano ESB Technical Overview (ENG)
GreenVulcano ESB Technical Overview (ENG)GreenVulcano ESB Technical Overview (ENG)
GreenVulcano ESB Technical Overview (ENG)greenvulcano
 
Introduction To Dot Net Siddhesh
Introduction To Dot Net SiddheshIntroduction To Dot Net Siddhesh
Introduction To Dot Net SiddheshSiddhesh Bhobe
 
Eclipse Developement @ Progress Software
Eclipse Developement @ Progress SoftwareEclipse Developement @ Progress Software
Eclipse Developement @ Progress Softwaresriikanthp
 
Net framework
Net frameworkNet framework
Net frameworksumit1503
 
Nitesh_Sr._Java_developer_Lead
Nitesh_Sr._Java_developer_Lead Nitesh_Sr._Java_developer_Lead
Nitesh_Sr._Java_developer_Lead Nitesh Dasari
 
Dsdt meetup 2017 11-21
Dsdt meetup 2017 11-21Dsdt meetup 2017 11-21
Dsdt meetup 2017 11-21JDA Labs MTL
 
DSDT Meetup Nov 2017
DSDT Meetup Nov 2017DSDT Meetup Nov 2017
DSDT Meetup Nov 2017DSDT_MTL
 
Technologies Skills
Technologies SkillsTechnologies Skills
Technologies SkillsS LMS
 
Technologies Skills
Technologies SkillsTechnologies Skills
Technologies SkillsDeepak Raj
 
JohnConnollyResumePerformance2017
JohnConnollyResumePerformance2017JohnConnollyResumePerformance2017
JohnConnollyResumePerformance2017John Connolly
 
Apache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's NextApache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's NextPrateek Maheshwari
 

Similar to Architecture of Native XML Database Sedna (20)

Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6
 
Sap integration with_j_boss_technologies
Sap integration with_j_boss_technologiesSap integration with_j_boss_technologies
Sap integration with_j_boss_technologies
 
SAP Integration with Red Hat JBoss Technologies
SAP Integration with Red Hat JBoss TechnologiesSAP Integration with Red Hat JBoss Technologies
SAP Integration with Red Hat JBoss Technologies
 
GreenVulcano ESB Technical Overview (ENG)
GreenVulcano ESB Technical Overview (ENG)GreenVulcano ESB Technical Overview (ENG)
GreenVulcano ESB Technical Overview (ENG)
 
Zaghdoudi Nizar_CV_EN
Zaghdoudi Nizar_CV_EN  Zaghdoudi Nizar_CV_EN
Zaghdoudi Nizar_CV_EN
 
Introduction To Dot Net Siddhesh
Introduction To Dot Net SiddheshIntroduction To Dot Net Siddhesh
Introduction To Dot Net Siddhesh
 
Eclipse Developement @ Progress Software
Eclipse Developement @ Progress SoftwareEclipse Developement @ Progress Software
Eclipse Developement @ Progress Software
 
Net framework
Net frameworkNet framework
Net framework
 
Mashups
MashupsMashups
Mashups
 
prhresumew
prhresumewprhresumew
prhresumew
 
ASP
ASPASP
ASP
 
Nitesh_Sr._Java_developer_Lead
Nitesh_Sr._Java_developer_Lead Nitesh_Sr._Java_developer_Lead
Nitesh_Sr._Java_developer_Lead
 
Dsdt meetup 2017 11-21
Dsdt meetup 2017 11-21Dsdt meetup 2017 11-21
Dsdt meetup 2017 11-21
 
DSDT Meetup Nov 2017
DSDT Meetup Nov 2017DSDT Meetup Nov 2017
DSDT Meetup Nov 2017
 
Aspnet
AspnetAspnet
Aspnet
 
Technologies Skills
Technologies SkillsTechnologies Skills
Technologies Skills
 
Technologies Skills
Technologies SkillsTechnologies Skills
Technologies Skills
 
Asp.net.
Asp.net.Asp.net.
Asp.net.
 
JohnConnollyResumePerformance2017
JohnConnollyResumePerformance2017JohnConnollyResumePerformance2017
JohnConnollyResumePerformance2017
 
Apache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's NextApache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's Next
 

More from maria.grineva

Semantic Data Search and Analysis Using Web-based User-Generated Knowledge Bases
Semantic Data Search and Analysis Using Web-based User-Generated Knowledge BasesSemantic Data Search and Analysis Using Web-based User-Generated Knowledge Bases
Semantic Data Search and Analysis Using Web-based User-Generated Knowledge Basesmaria.grineva
 
Analytics for the Real-Time Web
Analytics for the Real-Time WebAnalytics for the Real-Time Web
Analytics for the Real-Time Webmaria.grineva
 
Analytics for the Real-Time Web
Analytics for the Real-Time WebAnalytics for the Real-Time Web
Analytics for the Real-Time Webmaria.grineva
 
Getting Value From Social Media
Getting Value From Social MediaGetting Value From Social Media
Getting Value From Social Mediamaria.grineva
 
Extracting Key Terms From Noisy and Multi-theme Documents
Extracting Key Terms From Noisy and Multi-theme DocumentsExtracting Key Terms From Noisy and Multi-theme Documents
Extracting Key Terms From Noisy and Multi-theme Documentsmaria.grineva
 
Effective Extraction of Thematically Grouped Key Terms From Text
Effective Extraction of Thematically Grouped Key Terms From TextEffective Extraction of Thematically Grouped Key Terms From Text
Effective Extraction of Thematically Grouped Key Terms From Textmaria.grineva
 

More from maria.grineva (7)

Semantic Data Search and Analysis Using Web-based User-Generated Knowledge Bases
Semantic Data Search and Analysis Using Web-based User-Generated Knowledge BasesSemantic Data Search and Analysis Using Web-based User-Generated Knowledge Bases
Semantic Data Search and Analysis Using Web-based User-Generated Knowledge Bases
 
Analytics for the Real-Time Web
Analytics for the Real-Time WebAnalytics for the Real-Time Web
Analytics for the Real-Time Web
 
Analytics for the Real-Time Web
Analytics for the Real-Time WebAnalytics for the Real-Time Web
Analytics for the Real-Time Web
 
Getting Value From Social Media
Getting Value From Social MediaGetting Value From Social Media
Getting Value From Social Media
 
Filtering Twitter
Filtering TwitterFiltering Twitter
Filtering Twitter
 
Extracting Key Terms From Noisy and Multi-theme Documents
Extracting Key Terms From Noisy and Multi-theme DocumentsExtracting Key Terms From Noisy and Multi-theme Documents
Extracting Key Terms From Noisy and Multi-theme Documents
 
Effective Extraction of Thematically Grouped Key Terms From Text
Effective Extraction of Thematically Grouped Key Terms From TextEffective Extraction of Thematically Grouped Key Terms From Text
Effective Extraction of Thematically Grouped Key Terms From Text
 

Recently uploaded

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 

Recently uploaded (20)

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 

Architecture of Native XML Database Sedna

Editor's Notes

  1. First let me introduce you Sedna architecture from the global point of view. Sedna presents simple “process per user” client-server model. In this model there is one client process connected to exactly one server process. Governor process serves as a control center in the system. To run Sedna you must first start Governor process. Then Governor controls all Sedna server components. Governor is responsible for the following functions: Serves as a Client listener. Sedna Client applications connect to the approriate socket port that Governor listens to. And then Governor organizes all the job to process Client application request. When started Governor process the system configuration files and initializes corresponding structures that later used by other Sedna components. Governor registers all User sessions and Databases that have been started. Governor uses special socket based mechanism to watch that all registered Sedna components are still alive. Governor also organizes the job to stop all Sedna components correctly. For every Client application Governor spawns User Session process. This process is responsible to execute User query. It contains: query processor, Lock Manager and Virtual Memory Manager. Query processor fully belongs to the User session process, while Lock Manager is shared between Storage manager and User Session Process Query Processor constsis of the Parser, Optimizer and Executor. Parser – checks the syntax of query transmitted by the application, and creates a query tree. Optimizer process optimiization and creates a query plan. This query plan then passed to the Executor. Executor recursively steps through the plan tree, retrieves XML nodes and sends the result data to the Client Application. Query processor will be discussed later and in deep detail in a separate presentation that will be given by Ivan Shchklein. One instance of a Storage Manager is started for each Sedna database. It is responsible for database buffer management, database recovery support. It also contains a part of Lock manager. Storage manager reads and writes pages from database files on the disk. Sedna contains utilities to Create/Drop Databases , to Stop Sedna server and to Export/Import data from and to the database. The work of these utilities I will describe shortly on my next slide. Client applications work with Sedna through various APIs. There is also Interactive Terminal that provides an easy way to run queries through command line. I will provide more details on Sedna APIs later in my presentation. Concerning this picture I am responsible for the two aspects. First - is a part upon the Query Processor. Generally speaking this part contains all the stuff needed for a Client application to process its command on Server. The second aspect - is the interaction among processes on Server. So now I will dive into these two aspects: process interactions and Sedna APIs.
  2. So let us consider the interaction between processes on Server. Governor is bound to the socket port where it listens to the Client connections. When Client application connects to the Governor, it spawns a new User Session process and passes a socket descriptor to this new user process through an environment variable. So that User Session is connected with Client application directly. Client interact with User session through a socket using an Open Socket Protocol. This Open Socket Protocol describes the set of messages that are possible in communication between Sedna Client Application and Sedna Server. This protocol is well-documented. Using this protocol it is easy to build a driver for any programming language. In Sedna distributive package we provide drivers for a different popular programming languages such as C, Java, Python and others. While executing User Query, User session maps blocks from Storage Manager buffers on to its own Virtual memory. Storage Manager reads and writes blocks from database files on the disk. This memory management mechanism will be later presented in a separate presentation by Nickolay Zavaritskiy. Two parts of the Lock Manager module that is shared between the two processes communicate with each other through a shared memory. Details on Transactions support will be later provided by Alexander Kalinin in his presentation. There is a special mechanism “Process Ping” that is used by Governor to watch all the processes on Server. Every Sedna process connected to the Governor via socket. Governor uses a separate socket port where all processes are connected to. Governor pings every process periodically and if the connection is broken, it understands that this process failed due to some system error, and Sedna server cannot guarantee it behaves correctly, thus Governor sends appropriate message to other processes and asks them to shut down. To Stop the Sedna server, a special utility is used. It connects to Governor and sends an appropriated message. Governor shut down all the components. Database creation consists of creating files on disk. Then create-db utility spawns Storage Manager for these files and runs a special system session that initializes all the necessary metadata structures into this database. Export/Import utility works with the Sedna server through C API. It allows to export all the data from database and to store it locally on the File System as XML documents. And to import XML documents into the database. Our open source users use this utility in particular to migrate between Sedna releases (In the case when database internal representation have changed in new Sedna release).
  3. Now let me give a short overview of APIs that Senda currently provides. Together with Sedna in its distributive package we provide C API, Java API and Scheme API. The most frequently used Sedna APIs are Java API ,C API and Python. Python API was used for our encyclopedia project that was demostrated yesterday by Alexander. C API is a lightweight set of functions. C API is a basic one. Some other drivers were implemented upon this C API using foreign function interface in its programming languages. Java API was design to be similar to the JDBC API. We also provide API for the Scheme programming language. Scheme is a functional programming language, a popular Lisp dialect. Together with Canadian content management company Stilo we have implemented Sedna API for their language OmniMark. OmniMark driver is implemented upon the C API by means of foreign function calls mechanism of OmniMark. OmniMark is a streaming programming language used for content engineering tasks. Now Sedna API for OmniMark is included into the OmniMark distributive packaged provided by Stilo. Our open source users have implemented drivers for a variety of programming languages they used in their projects. These are Python, PHP, .Net, and XML:DB API. Python and PHP are based on our basic C API.
  4. On this slide I will describe the typical set of functions in Sedna API by example of basic C API. Sedna C API provides a lightweight set of functions that allow to process commands for Sedna. SEconnect and SEclose functions serves to open and close User session. Once a session is open, Client application can start, commit or rollback transactions using appropriate functions. To execute a query SEexecute function is provided. In Sedna we have made a decision to incorporate Data Definition commands into the Database Language. That is, to create a new collection in database, you have to execute a corresponding statement CREATE COLLECTION through the common SEexecute function in the API. On the contrary, in some XML database products (for example XHive and eXists) management of database logical structure such as creating collections and so on, is incorporated into the API as a functions call. For example XHive provides only Java API, and the only way to create a collection and to load data into it is to write and appropriate Java application. Turning back to the query execution. If the statement passed to the SEexecute function was a query (not an Update) – a programmer can retrieve a result of this query in a serialized form (as a string). In this aspect C API reflects the Sedna Executor model. In Sedna we have pipelined Executor implemented via Iterators. That is to iterate over the items of XQuery query result SEnext function must be used. To retrieve the next item data SEgetData function is provided. SEgetData provides an interface similar to fread function for reading from Files. That is you provide a buffer and specify the number of bytes to be read into this buffer. XML data fetched from the database can be manifested as a DOM object or processed as a stream of SAX events.
  5. It is easy to create a new API for Sedna because Sedna provides Open Socket Protocol. Open Socket Protocol is a message-based protocol for communicating between Sedna server and Client applications over TCP/IP sockets. This protocol describes a set of commands that are used for Sedna server while communicating with Client applications. Thus – any API driver constitutes a library that connects to the Sedna Governor and then sends and receives these commands over socket connection. This protocol is well-documented and put on Sedna site. So our open source users are free to implement their own drivers. You can also see Open Socket Protocol documentation in the printed Sedna documentation set When designing our Open Socket Protocol we considered analogous Frontend/Backend Protocol in PostgreSQL – an open source relational database system. Another easy way to implement a driver for Sedna is to build it upon the C API calling C functiuons via foreign function interface of the new programming language. In this way we have implemented OmniMark driver and Sedna users have contributed PHP and Python drivers in a similar way.