Skip to main content

Real Time Vs General Purpose Databases

The queries associated with a Real time databases are associated with a deadline, there may be some response after the queries passed the deadlines.

The data returned in response to a query must have absolute and relative consistency.


 

Absolute Vs Relative Consistency

Absolute consistency is accuracy. The data returned in response to a query must be close to the results expected. If temperature or pressure is interrogated in a chemical vessel, we want the data returned to be close to the current temperature or pressure.


 

Relative consistency means that for multiple data, the data must have been collected reasonably close to one another.


 

Need for Response Time predictability

There are many factors that affect the response time predictability

  • The requirement to meet the ACID properties will entail a overhead.
  • Transactions may be aborted one or more times to avoid deadlock and to maintain serialization consistency. So transaction abortion leads to a delay.
  • Databases are often quite large to fit in the main memory and therefore rely mainly on the disk based systems. Page faults are the problem creators if the requested record is not in the main memory.
  • Transaction access are data dependant. The transaction to deduct an amount from a database which has lower balance is faster whereas the higher balance leads to slowness.
  • Transaction may suffer with a delay in accessing a data which is being locked by some other transactions.


 

Relaxing the ACID Properties

    General purpose databases always obey the ACID properties, but Real Time databases often relaxing the ACID properties or even sometime violates the ACID properties.


 

In Machine tool Control System, the current tool position is not regarded as durable data and is discarded after it become outdated. In such an application, data durability is not worth maintaining if new measurements are frequently collected.


 

Sometimes even serialization consistency is also violated. Maintain serialization consistency leads to avoid concurrent transactions.


 

For example,

A and B are two airports. Users can book the tickets online to travel to the destination. For example,

  • if more than or equal to 100 passengers are allotted in a flight, then there should be 5 flight attendants else only 3 flight attendants
  • if less than 85 passengers (after cancellation) there should be only 3 flight attendants.

In such a case, assume if there is already 99 tickets booked for particular flight, and there will be one reservation and one cancellation

  • If reservation happens first, then 100 tickets sold and 5 flight attendants
  • Then cancellation happens, 99 tickets with the same 5 flight attendants (only if less than 85, flight attendants will be 3)

In second case,

  • If cancellation first, 98 tickets with 3 flight attendants
  • Reservation next, 99 tickets with the same 3 flight attendants

If the above cases, since both the reservation and cancellation happens to be running serially (one after other) to maintain serialization consistency, it may be decided to interleave both the transactions and the second transaction can be aborted to maintain serialization consistency.


 

Comments

Popular posts from this blog

Installing ns-3.34 in Ubuntu 20.04

This post shows how to install ns 3.34 in Ubuntu 20.04 LTS Prerequisites: Fresh installation of Ubuntu Version 20.04 LTS  ns3.34 can be downloaded from here Follow the video link for complete step by step instructions on the installation.  This version fixes the compilation issues of vanet-routing-compare.cc (bug in ns3.33)  Issue the following commands after opening a terminal  $ sudo apt update $ sudo apt install g++ python3 python3-dev python-dev pkg-config sqlite3 python3-setuptools git qt5-default gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython3 openmpi-bin openmpi-common openmpi-doc libopenmpi-dev autoconf cvs bzr unrar openmpi-bin openmpi-common openmpi-doc libopenmpi-dev tcpdump wireshark libxml2 libxml2-dev Unzip or untar the ns-allinone-3.34.tar.bz2 in the home folder (in my case its /home/pradeepkumar) $ cd ns-allinone-3.34/ $ ./build.py --enable-examples --enable-tests  Once the installation is completed, you may get an output show

Installation of ns3 in Windows 10 and Windows 11 OS using WSL (Windows Subsystem for Linux)

This post shows how to install ns-3.33 in Windows 10 through WSL (Windows Subsystem for Linux) This posts works for Windows 11 also (I have tested it on a Windows 11 ISO and it works the Same way as mentioned in the following post.) This post will work for ns-3.3x version. Prerequisites : Install Windows Subsystem for Linux with GUI: Please refer the following video  System Information: OS used: Windows 10 and WSL (Ubuntu 20.04) GUI: XServer for Windows NS3 Version: ns-3.33 See the following complete video on how to install ns3 in Windows 10 Step 0 : Open XLaunch Step 1 :  Open WSL using PowerShell and open it as Administrator Command:/  wsl $ xfce4-session The GUI of Ubuntu Opens within Windows 10 OS. Step 2 : Download ns3 from nsnam.org website through Mozilla Firefox browser Step 3: Open a Terminal  $ sudo apt update $ sudo apt install build-essential autoconf automake libxmu-dev python3-pygraphviz cvs mercurial bzr git cmake p7zip-full python3-matplotlib python-tk python3-dev qt5-q

Installing NS-3.32 in Ubuntu 20.04

This is about installing ns version 3.32 in Ubuntu 20.04 LTS. #ns3 #ns3 .32 #networksimulation The commands used in the video are given here. $] sudo apt update $] sudo apt install build-essential autoconf automake libxmu-dev python3-pygraphviz cvs mercurial bzr git cmake p7zip-full python3-matplotlib python-tk python3-dev qt5-qmake qt5-default gnuplot-x11 wireshark Download the ns-allinone-3.32.tar.bz2 package from nsnam.org and copy it to /home/ folder See the full video for detailed instructions Extract it either in GUI or using command $] tar jxvf ns-allinone-3.32.tar.bz2 $] cd ns-allinone-3.32/ $] ./build.py --enable-examples --enable-tests The above command will take some time to install all the packages  You can see the output as shown below ns3 To check whether ns3 installed successfully, use the following commands. $] cd ns-3.32/ $] ./waf --run hello-simulator You should get the output as Hello Simulator $] ./waf --run first This is the example from the ns-3.32/exa