Difference between revisions of "CV"

From Sinfronteras
Jump to: navigation, search
Line 1: Line 1:
<!-- This page contains hidden text-->
+
{{#tag:html|
<!-- ----------------------------- -->
+
<style>
<!-- It is very IMPORTANT NOT TO USE TILDES en los comentarios realizados dentro del CSS -->
+
/* MediaWiki page configurations */
<!-- Example of a page with nice fcolors: https://www.coursera.org/professional-certificates/applied-artifical-intelligence-ibm-watson-ai -->
+
#content { margin-left: 300px !important; }
{{#css: 
+
#p-namespaces { margin-left: 124px !important; }
  #mw-panel { visibility: collapse !important; }
+
#footer { margin: 0 0 0 308px }
  #p-namespaces { visibility: collapse !important; }
+
#mw-panel .portal { display: none; }
  #content { max-width: 1200pt !important; margin-left: auto !important; margin-right: auto !important; }
+
 
  #mw-panel { visibility: collapse !important; }
+
div#toc.toc {
  #mw-page-base { visibility: collapse !important; }
 
  #ca-head-base { display: none !important; }
 
  #ca-nstab-main { display: none !important; }
 
  #ca-talk { display: none !important; }
 
  #ca-view { display: none !important; }
 
  #ca-viewsource { display: none !important; }
 
  #ca-edit { display: none !important; }
 
  #ca-ve-edit { display: none !important; }
 
  #ca-history { display: none !important; }
 
  #ca-unwatch { display: none !important; }
 
  #ca-watch { display: none !important; }
 
  #p-cactions { display: none !important; }
 
  #pt-userpage { display: none !important; }
 
  #pt-mytalk { display: none !important; }
 
  #pt-preferences { display: none !important; }
 
  #pt-watchlist { display: none !important; }
 
  #pt-mycontris { display: none !important; }
 
  #pt-logout { display: none !important; }
 
  #pt-anonuserpage { display: none !important; }
 
  #pt-anontalk { display: none !important; }
 
  #pt-createaccount { display: none !important; }
 
  #pt-login { display: none !important; }
 
  #footer-info-copyright { display: none !important; }
 
  #footer-places-privacy { display: none !important; }
 
  #footer-places-about { display: none !important; }
 
  #footer-places-disclaimer { display: none !important; }
 
  #p-tb { display: none !important; }
 
  body {
 
    background:    #ededf2;
 
    padding-left:  35pt !important;
 
    padding-right: 35pt !important;
 
  }
 
  #mw-head {
 
    z-index: -1;
 
  }
 
  .mediawiki {
 
    padding-left:  40pt !important;
 
    padding-right: 30pt !important;
 
  }
 
  #content {
 
    border-top: 1px solid rgba(184, 134, 11, 0.5) !important;    <!-- This means the page contains hidden text #B8860B -->
 
    border:    1px solid rgba(184, 134, 11, 0.5);                <!-- rgba(56, 139, 253, 0.4); -->
 
  }
 
  #right-navigation {
 
    visibility: collapse;
 
  }
 
  #p-search {
 
    visibility: visible;
 
  }
 
  #simpleSearch {
 
    <!-- border: 0.1px solid rgba(166, 44, 32, 0.5); -->
 
  } 
 
  #footer {
 
    padding-left: 10pt;
 
    margin-left:  auto  !important;
 
    margin-right: auto  !important;
 
    max-width:    1100pt;
 
  }
 
  #footer-info {
 
    margin-left: 0pt;
 
  }
 
  div#toc.toc {
 
 
     font-size: 12pt;
 
     font-size: 12pt;
 
     margin-top: -4.5pt;
 
     margin-top: -4.5pt;
Line 77: Line 15:
 
     max-width: 200pt;
 
     max-width: 200pt;
 
     margin-right: 12pt;
 
     margin-right: 12pt;
  }
+
}
  .toc ul {
+
.toc ul {
 
     overflow-y: scroll  !important;
 
     overflow-y: scroll  !important;
 
     max-height: 500pt;  <!-- max-height: 100vh; -->
 
     max-height: 500pt;  <!-- max-height: 100vh; -->
  }
+
}
  .tocUl {
+
.tocUl {
 
     overflow-y: scroll  !important;
 
     overflow-y: scroll  !important;
 
     max-height: 500pt;  <!-- max-height: 100vh; -->
 
     max-height: 500pt;  <!-- max-height: 100vh; -->
  }
+
}
  .tochidden {
+
.tochidden {
 
     height: 4pt !important;
 
     height: 4pt !important;
  }
+
}
  .rcorners {
+
.title {  
    border-radius: 3px;
 
    padding: 2px;
 
    border: 1.5px solid #B8860B;
 
  }
 
  .under {
 
    margin-right: 10px;
 
    <!-- display:inline-block;
 
    border-bottom:1px solid #A62C20;
 
    padding-bottom:-5px !important; -->
 
  }
 
  .title {  
 
 
     <!-- margin-top: 5px; -->
 
     <!-- margin-top: 5px; -->
 
     margin-left: -10px !important;
 
     margin-left: -10px !important;
Line 115: Line 42:
 
     <!-- background: rgba(0, 0, 0, 0) linear-gradient(90deg, #007bff, rgb(0, 0, 0)) repeat scroll 0% 0% / auto padding-box border-box; margin-left:-10px; -->   
 
     <!-- background: rgba(0, 0, 0, 0) linear-gradient(90deg, #007bff, rgb(0, 0, 0)) repeat scroll 0% 0% / auto padding-box border-box; margin-left:-10px; -->   
 
     <!-- linear-gradient(90deg, rgb(31, 112, 193), rgb(0, 0, 0)) -->  <!-- #0074D9 -->
 
     <!-- linear-gradient(90deg, rgb(31, 112, 193), rgb(0, 0, 0)) -->  <!-- #0074D9 -->
  }
+
}
  .cover {
+
.titulo1-text {
    object-fit: cover;
 
    width: 100%;
 
    height: 250px;
 
    margin-bottom: 2000px;
 
    margin-top: -20px;
 
  }
 
  .icon {
 
    color: #2d2e27;
 
  }
 
  .texticon {
 
    color: #2d2e27;  <!-- #f0f2e4 -->
 
    font-size: 20px !important;
 
  }
 
  .textlink {
 
    color: #0854a6 !important;  <!-- #f0f2e4 #007bff -->
 
    font-size: 20px !important;
 
  }
 
  .container {
 
    width: 150px;
 
    height: 150px;
 
    position: relative;
 
    margin: 0px;
 
  }
 
  .box {
 
    z-index: 10;
 
    width: 100%;
 
    height: 100%;
 
    position: absolute;
 
    top: 0;
 
    left: 0;
 
  }
 
  .overlay {
 
    z-index: 1;
 
    margin-left: -5px;
 
    margin-top: -23px;
 
  }
 
  .titulo1-text {
 
 
     font-size: 18px !important;
 
     font-size: 18px !important;
  }
+
}
  .titulo1-text-marco {
+
.titulo1-text-marco {
 
     padding-left: 10px !important;
 
     padding-left: 10px !important;
  }
+
}
  .titulo1-marco-oneline {
+
.titulo1-marco-oneline {
 
     padding-right: 0px !important;
 
     padding-right: 0px !important;
 
     padding-left: 0px !important;
 
     padding-left: 0px !important;
Line 166: Line 56:
 
     min-height: 35pt !important;
 
     min-height: 35pt !important;
 
     margin-top:-32pt !important;
 
     margin-top:-32pt !important;
  }   
+
}   
  .titulo1-marco-twolines {
+
.titulo1-marco-twolines {
 
     padding-right: 0px !important;
 
     padding-right: 0px !important;
 
     padding-left: 0px !important;
 
     padding-left: 0px !important;
Line 174: Line 64:
 
     min-height: 50pt !important;
 
     min-height: 50pt !important;
 
     margin-top:-47pt !important;
 
     margin-top:-47pt !important;
  }
+
}
  .marco1-ext {
+
.marco1-ext {
 
     width: 100% !important;
 
     width: 100% !important;
 
     padding: 0px 0px 0px 0px !important;
 
     padding: 0px 0px 0px 0px !important;
 
     background: #e3e3e8 !important;
 
     background: #e3e3e8 !important;
  }
+
}
  .marco1-int {
+
.marco1-int {
 
     background: #e3e3e8 !important;
 
     background: #e3e3e8 !important;
  }
+
}
  .marco1-ext .mw-editsection {
+
.marco1-ext .mw-editsection {
 
     display: none !important;
 
     display: none !important;
  }
+
}
  .divline1 {
+
.divline1 {
 
     padding: 0;  
 
     padding: 0;  
 
     border: 0;  
 
     border: 0;  
Line 195: Line 85:
 
     background-color: white;  
 
     background-color: white;  
 
     height:1.2pt
 
     height:1.2pt
  }
+
}
  
  .toggleNode { <!-- visibility: hidden --> }
 
}}
 
<!-- some colors I have tried and liked: #dcd8ed  #3182f5  #D8BFD8  #E6E6FA  rgb(79.998779%,79.998779%,100%)-->
 
<div class="container" style="position: fixed; height: 0px; width: 250px; margin-left: -70px; margin-top: -132px; z-index: 200; background: red !important; background-color: red !important"> <!-- oculto -->
 
<div class="box mw-customtoggle-myToggle1" style="cursor:pointer; color:blue; width:0px;  z-index: 100">[+/-]</div>
 
<div style="border-top:-50px;" class="box overlay mw-collapsible" id="mw-customcollapsible-myToggle1">
 
<div style="border-top:-50px;" style="background: transparent; border: 0px solid blue; padding:0px" class="toccolours mw-collapsible-content">
 
<!--
 
<div style="border-top:-50px; background: #E6E6FA; min-height:50px; line-height: 50px; text-align: left; padding-left: 35px; font-size: 20px; font-family: 'Linux Libertine','Georgia','Times',serif;">
 
'''''[[Carrera|<span style="color:#B8860B; font-weight: bold;">Carrera</span>]]'''''
 
</div>
 
-->
 
<div style="height: 50px; width:100%; background: #e3e3e8">
 
</div>
 
<!-- <div style="overflow-y: scroll; height: 100vh !important; background: #f7f7f8; margin-top:0px; padding:0.1px 20px 20px 20px;"> -->
 
<div style="overflow-y: scroll; height: 100vh !important; background: #e3e3e8; margin-top:0px; padding:0px 5px 0px 0px;">
 
<!-- {{#lst:Mis páginas|Carrera1}} -->
 
<div style="margin-bottom: 42px; margin-top:2px"> {{#lst:Mis páginas|formal_natural_and_applied_sciences0}}</div>
 
<div style="margin-bottom: 50px"> {{#lst:Mis páginas|social_sciences0}}</div>
 
<div style="margin-bottom: 30px"> {{#lst:Mis páginas|musica0}}</div>
 
<div style="margin-bottom: 150px">{{#lst:Mis páginas|Carrera0}}</div>
 
</div>
 
</div>
 
</div>
 
</div>
 
<section begin="cv-contact" />
 
{| style=" position:relative; color: black; background-color: white; width: 100%; padding: 0px 0px 0px 0px; border:0px solid #151124;"
 
| style="width: 20%; height=10px; background-color: #ededf2; padding: 0px 5px 0px 10px; border:0px solid #ddddff; vertical-align:center; moz-border-radius: 0px; webkit-border-radius: 0px; border-radius:0px;" |  <!-- #dadae0 -->
 
<!--==============================================================================-->
 
<span style="color:#0000FF">
 
<p class="title" style="margin-top: -30px">
 
<img style="z-index: -10" class="cover" src="http://wiki.sinfronteras.ws/images/9/97/Word_cloud_CV.svg">
 
</p>
 
<p class="title" style="margin-top: 135px; padding: 0px !important; background: #ededf2; ; margin-top: 50px !important">
 
<span style="background: #667292; padding: 20px 54px 7px 15px; font-size: 55.5px;">Adelo Vieira,&nbsp;  Data Scientist</span>  <!-- margin-left:10px; -->
 
</p>
 
<div style="margin-top: -5px; margin-bottom: 20px; margin-left: 7px; color: #ededf2; font-weight: normal; font-family: 'Zapf Dingbats'; font-size: 22px;">
 
<span class="texticon">47-A Phibsborough Rd, Dublin</span>
 
{|
 
|<div style="font-size: 30px; margin-top: -12px; margin-bottom: -15px;"> <i class="fa fa-mobile icon"></i> </div>
 
|<p class="texticon" style="margin-top: -10px; margin-left: -4px; margin-bottom: -15px">&nbsp; ''+353  852  40  72  08''</p>
 
|-
 
|<div style="font-size: 18px !important; margin-left: -0.8pt; margin-top: 3.5px;"> <i class="fa fa-envelope icon"></i> </div>
 
|<p class="texticon" style="color:#A62C20; font-weight: normal; font-size: 21px !important;">&nbsp; ''adeloaleman@gmail.com''</p> <!-- color: #A62C20  #B8860B #c4de21 -->
 
|}
 
<div style="margin-top:-7px; margin-bottom: 10px">
 
{|
 
|<div style="font-size: 22px; margin-left: -1pt; margin-top: -2px;"> <i class="fa fa-github icon"></i> </div>
 
|&nbsp;[https://github.com/adeloaleman <span class="texticon textlink" style='margin-left:3pt'>Github</span>]
 
|&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
 
|<div style="font-size: 20px; margin-left: -2pt; margin-top: -2px;"> <i class="fa fa-linkedin icon"></i> </div>
 
|&nbsp;[https://www.linkedin.com/in/adelo-vieira-8b4415a7/ <span class="texticon textlink">Linkedin</span>] &nbsp; &nbsp; &nbsp; &nbsp;
 
|<div style="font-size: 18px; margin-left: -1pt; margin-top: 3px;"> <i class="fa fa-briefcase icon"></i> </div>
 
|&nbsp;[[CV#Portfolio|<span class="texticon textlink">Portfolio</span> <i style="font-size:12px" class="fa fa-external-link icon"></i>]] &nbsp; &nbsp; &nbsp; &nbsp;
 
|<div style="font-size: 22px; margin-left: -1pt; margin-top: -2px;"> <i class="fa fa-globe icon"></i> </div>
 
|&nbsp;[[Computer_Science_and_IT|<span class="texticon textlink">''My Wiki''</span> <i style="font-size:12px" class="fa fa-external-link icon"></i>]] &nbsp; &nbsp; &nbsp; &nbsp;
 
|[[Media:CV_EN.pdf|<span class="texticon textlink">Download a pdf version of my CV</span> <i style="font-size:12px" class="fa fa-external-link icon"></i>]]
 
|}
 
</div>
 
</div>
 
<!--==============================================================================-->
 
<hr style="margin-left:-7.5pt; margin-right:-3.6pt; margin-bottom:-0.8pt; padding: -50pt; height:0.1px; background: rgba(166, 44, 32, 0.5)" >
 
|-
 
| style="width: 20%; background-color: #ededf2; padding: 20px 17px 20px 17px; border:0px solid #ddddff; vertical-align:top; margin-button: 50px; line-height: 1.8; font-weight: normal; font-family: 'Zapf Dingbats'; font-size: 16px" |
 
<!--==============================================================================-->
 
'''<span class="under">BSc. (Hons) in Information Technology,</span> <span class="under">Geophysical Engineer,</span> <span class="under">and</span> <span class="under">MSc in Petroleum Geoscience</span>''' with <span class="rcorners">strong mathematical, problem-solving, and analytical skills</span>. I'm currently particularly interested in <span class="rcorners">Data Analytics</span> and <span class="rcorners">Software Development</span>.
 
  
Proficient in multiple programming languages, including <span class="rcorners">Python</span>, <span class="rcorners">Java</span>, <span class="rcorners">JavaScript</span>, <span class="rcorners">SQL</span>, and R. I have a huge interest in <span class="rcorners">Machine Learning</span> and Natural Language Processing. I've been recently working in areas such as Text classification and Sentiment Analysis. I have solid knowledge in several <span class="rcorners">ML algorithms</span> (Naive Bayes, Decision Trees, K-Nearest Neighbour) and in Time Series Analysis. I have experience working with Python (Pandas, NLPTK, Scikit-learn, SciPy, Plotly, TextBlob, Vader Sentiment), R, and RapidMiner.
+
/* Sidebar (Pure CSS) */
 +
body {
 +
 
 +
}
 +
#menuToggle {
 +
    display: block;
 +
    position: relative;
 +
    top: 20px;
 +
    padding-left: 10px;
 +
    margin-left: -325px;
 +
    z-index: 1;
 +
    -webkit-user-select: none;
 +
    user-select: none;
 +
}
 +
#menuToggle a {
 +
    text-decoration: none;
 +
    color: #232323;
 +
    transition: color 0.3s ease;
 +
}
 +
#menuToggle a:hover { color: tomato; }
 +
#menuToggle input {
 +
    display: block;
 +
    width: 40px;
 +
    height: 32px;
 +
    position: absolute;
 +
    top: -7px;
 +
    left: -5px;
 +
    cursor: pointer;
 +
    opacity: 0; /* hide this */
 +
    z-index: 2; /* and place it over the hamburger */
 +
    -webkit-touch-callout: none;
 +
}
 +
/* Just a quick hamburger */
 +
#menuToggle span {
 +
    display: block;
 +
    width: 33px;
 +
    height: 5px;
 +
    margin-bottom: 4px;
 +
    position: relative;
 +
    background: #cdcdcd;
 +
    border-radius: 3px;
 +
    z-index: 1;
 +
    transform-origin: 4px 0px;
 +
    transition: transform 0.5s cubic-bezier(0.77,0.2,0.05,1.0),
 +
                background 0.5s cubic-bezier(0.77,0.2,0.05,1.0),
 +
                opacity 0.55s ease;
 +
}
 +
#menuToggle span:first-child {
 +
    transform-origin: 0% 0%;
 +
}
 +
#menuToggle span:nth-last-child(2) {
 +
    transform-origin: 0% 100%;
 +
}
 +
/* Transform all the slices of hamburger into a crossmark */
 +
#menuToggle input:checked ~ span {
 +
    opacity: 1;
 +
    transform: rotate(45deg) translate(-2px, -1px);
 +
    background: #232323;
 +
}
 +
/* But let's hide the middle one */
 +
#menuToggle input:checked ~ span:nth-last-child(3) {
 +
    opacity: 0;
 +
    transform: rotate(0deg) scale(0.2, 0.2);
 +
}
 +
/* Ohyeah and the last one should go the other direction */
 +
#menuToggle input:checked ~ span:nth-last-child(2) {
 +
    transform: rotate(-45deg) translate(0, -1px);
 +
}
 +
 
 +
/* Make this absolute positioned at the top left of the screen */
 +
#menu {
 +
    position: absolute;
 +
    width: 300px;
 +
    margin: -50px 0 0 -10px;
 +
    padding: 50px 0px 30px 0px;
 +
    background: #ededed;
 +
    list-style-type: none;
 +
    -webkit-font-smoothing: antialiased;
 +
    /* to stop flickering of text in safari */
 +
    transform-origin: 0% 0%;
 +
    transform: translate(-100%, 0);
 +
    transition: transform 0.5s cubic-bezier(0.77,0.2,0.05,1.0);
 +
}
 +
#menu li {
 +
    padding: 10px 0 0 0;
 +
    font-size: 22px;
 +
}
 +
/* And let's slide it in from the left */
 +
#menuToggle input:checked ~ ul {
 +
    transform: none;
 +
}
 +
 
 +
/* Tab Menu */
 +
.button{
 +
    font-size: 14px;
 +
    color: inherit;
 +
    background-color :inherit;
 +
    padding: 8px 0px 8px 0px;
 +
    border: none;
 +
    outline: 0;
 +
    cursor: pointer;
 +
}
 +
.bottom-selected { background-color: #f44336 !important }
 +
.area {
 +
    color: black;
 +
    padding: 15px 0px;
 +
    border: 0px solid #ccc !important;
 +
    z-index: 100 !important;
 +
}
 +
.left  {float:  left;  width:100px; text-align: center;}
 +
.right  {float:  right;  width:100px; text-align: center;}
 +
.center {margin: 0 auto; width:100px; text-align: center;}
 +
 
 +
</style>
 +
 
 +
<script>
 +
function openCity(evt, cityName) {
 +
    var i, x, tablinks;
 +
    x = document.getElementsByClassName("city");
 +
    for (i = 0; i < x.length; i++) {
 +
        x[i].style.display = "none";
 +
    }
 +
    tablinks = document.getElementsByClassName("tablink");
 +
    for (i = 0; i < x.length; i++) {
 +
        tablinks[i].className = tablinks[i].className.replace(" bottom-selected", "");
 +
    }
 +
    document.getElementById(cityName).style.display = "block";
 +
    evt.currentTarget.className += " bottom-selected";
 +
}
 +
</script>
 +
 
 +
<nav role="navigation" style="position: fixed;">
 +
    <div id="menuToggle">
 +
        <!--
 +
        A fake / hidden checkbox is used as click reciever,
 +
        so you can use the :checked selector on it.
 +
        -->
 +
        <input type="checkbox" />
 +
       
 +
        <!--
 +
        Some spans to act as a hamburger.
 +
        -->
 +
        <span></span>
 +
        <span></span>
 +
        <span></span>
 +
       
 +
        <!--
 +
        Too bad the menu has to be inside of the button
 +
        but hey, it's pure CSS magic.
 +
        -->
 +
        <ul id="menu">
  
Solid academic experience in <span class="rcorners">Object-oriented programming</span> and <span class="rcorners">Web Development</span>. I have developed several projects using Java, React, Node.js (Express.js), and Dash.
+
            <!--Tap Menu -->
 +
            <div style="padding: 10px 0px 0px 0px;">
 +
                <div style="color:#fff !important; background-color: #000 !important">
 +
                    <button class="button left  tablink bottom-selected" onclick="openCity(event,'PE')">PE</button>
 +
                    <button class="button center tablink"                onclick="openCity(event,'Tools')"> Tools </button>
 +
                    <button class="button right  tablink"                onclick="openCity(event,'Others')"> Others </button>
 +
                </div>
 +
               
 +
                <div id="PE" class="area city">
 +
                    <div style="overflow-y: scroll; height: 100vh !important; background: #e3e3e8; margin-top:0px; padding:0px 5px 0px 0px;">
 +
                    <!-- {{#lst:Mis páginas|Carrera1}} -->
 +
                    <div style="margin-bottom: 42px; margin-top:2px"> {{#lst:Mis páginas|formal_natural_and_applied_sciences0}}</div>
 +
                    <div style="margin-bottom: 50px"> {{#lst:Mis páginas|social_sciences0}}</div>
 +
                    <div style="margin-bottom: 30px"> {{#lst:Mis páginas|musica0}}</div>
 +
                    <div style="margin-bottom: 150px">{{#lst:Mis páginas|Carrera0}}</div>
 +
                    </div>
 +
                </div>
  
I also have advanced experience with the most popular flavors of <span class="rcorners">Linux</span> (including Shell Scripting) and excellent academic experience in <span class="rcorners">Relational database</span> (SQL, MySQL, PostgreSQL) and <span class="rcorners">cloud computing</span> (AWS and Google Cloud).
+
                <div id="Tools" class="area city" style="display:none">
</div>
+
                    <div>Tools</div>
<!--==============================================================================-->
+
                    <p> Tools is the capital of France.</p>  
|}
+
                </div>
<section end="cv-contact" />
 
  
<!-- <section begin="cv-work_experience_title" />
+
                <div id="Others"  class="area city" style="display:none">
==Work experience==
+
                    <div>Others</div>
{|cellpadding="2" cellspacing="5" style="width:100%; vertical-align:top; background:transparent; font-weight: bold; font-size: 17px; font-family: 'Linux Libertine','Georgia','Times',serif; margin-left: -10px;"
+
                    <p> Others is the capital of Japan.</p>
|{{Projet:Jeu vidéo/Modèle Cadre
+
                </div>
|type cadre = 3
+
            </div>
|titre      = <p style="color:black; margin-left: -4px; font-size: 22px; margin-top: -3px;">''Work experience''</p>
+
           
|id         =
+
            <!-- <a href="#"><li>Home</li></a>
|image      =
+
            <a href="#"><li>About</li></a>
|contenu    =
+
            <a href="#"><li>Info</li></a>
|lien =
+
            <a href="#"><li>Contact</li></a>
 +
            <a href="https://erikterwan.com/" target="_blank"><li>Show me more</li></a> -->
 +
           
 +
         </ul>
 +
    </div>
 +
</nav>
 
}}
 
}}
<section end=cv-work_experience_title /> -->
 
  
<section begin="cv-work_experience_title" />  <!-- Este es el otro azul que podría usarse #4081de -->
 
{| style="color: white; width: 70%; height: 60px; border-top-left-radius: 15px; background: linear-gradient(to right, #4081de, white);"
 
| colspan="2" |
 
<h3 style="color:white; margin-left: 10px; font-size: 28px; margin-top: -15px; font-family: 'Linux Libertine','Georgia','Times',serif; height: 60px; line-height: 60px; text-aligh: center"><div>'''''Work experience'''''</div></h3>[[CV_-_Work_experience|<div style="font-size:16px; color: blue; margin-left:0px;" class="oculto fa fa-external-link icon"></div>]]
 
|}
 
<section end=cv-work_experience_title />
 
  
{{#lst:CV - Work experience|cv-work_experience}}
 
  
 +
==Relational databases vs Non-relational databases==
 +
https://www.jamesserra.com/archive/2015/08/relational-databases-vs-non-relational-databases/
 +
 +
*'''Relational databases''', which can also be called '''relational database management systems (RDBMS)''' or '''SQL databases'''.  The most popular of these are Microsoft SQL Server, Oracle Database and MySQL.
  
  
<br />
+
*'''Non-relational databases''', also called '''NoSQL databases''', the most popular being MongoDB, DocumentDB, Cassandra, Coachbase, HBase, Redis, and Neo4j.  These databases are usually grouped into four categories: Key-value stores, Graph stores, Column stores, and Document stores (see Types of NoSQL databases).
<br />
 
<!-- <section begin="cv-education_title" />
 
<!-- ==Education==
 
{|cellpadding="2" cellspacing="5" style="width:100%; vertical-align:top; background:transparent; font-weight: bold; font-size: 17px; font-family: 'Linux Libertine','Georgia','Times',serif; margin-left: -10px;"
 
|{{Projet:Jeu vidéo/Modèle Cadre
 
|type cadre = 3
 
|titre      = <p style="color:black; margin-left: -4px; font-size: 22px; margin-top: -3px;">''Education''</span>
 
|id        =
 
|image      =
 
|contenu    =
 
|lien =
 
}}}
 
<section end=cv-education_title /> -->
 
  
<section begin="cv-education_title" />
 
{| style="color: white; width: 70%; height: 60px; border-top-left-radius: 15px; background: linear-gradient(to right, #4081de, white);"
 
| colspan="2" |
 
<h3 style="color:white; margin-left: 10px; font-size: 28px; margin-top: -15px; font-family: 'Linux Libertine','Georgia','Times',serif; height: 60px; line-height: 60px; text-aligh: center"><div>'''''Education'''''</div></h3>[[CV_-_Education|<div style="font-size:16px; color: blue; margin-left:0px;" class="oculto fa fa-external-link icon"></div>]]
 
|}
 
<section end=cv-education_title />
 
  
{{#lst:CV - Education|cv-education}}
+
All relational databases can be used to manage transaction-oriented applications (Online transaction processing (OLTP)), and most non-relational databases that are in the categories Document stores and Column stores can also be used for OLTP. OLTP databases can be thought of as "Operational" databases, characterized by frequent, short transactions that include updates and that touch a small amount of data and where concurrency of thousands of transactions is very important (examples including banking applications and online reservations). Integrity of data is very important so they support ACID transactions (Atomicity, Consistency, Isolation, Durability). This is opposed to '''data warehouses''', which are considered "Analytical" databases characterized by long, complex queries that touch a large amount of data and require a lot of resources. Updates are infrequent. An example is analysis of sales over the past year.
  
 +
Relational databases usually work with structured data, while non-relational databases usually work with semi-structured data (i.e. XML, JSON).
  
  
<br />
+
===Relational Databases===
<br />
+
A relational database is organized based on the relational model of data, as proposed by E.F. Codd in 1970.  This model organizes data into one or more tables (or "relations") of rows and columns, with a unique key for each row. Generally, each entity type that is described in a database has its own table with the rows representing instances of that type of entity and the columns representing values attributed to that instance. Since each row in a table has its own unique key, rows in a table can be linked to rows in other tables by storing the unique key of the row to which it should be linked (where such unique key is known as a "foreign key").  Codd showed that data relationships of arbitrary complexity can be represented using this simple set of concepts.
<!-- <section begin="cv-qualifications_title" />
 
==Skills and Qualifications==
 
{|cellpadding="2" cellspacing="5" style="width:100%; vertical-align:top; background:transparent; font-weight: bold; font-size: 17px; font-family: 'Linux Libertine','Georgia','Times',serif; margin-left: -10px;"
 
|{{Projet:Jeu vidéo/Modèle Cadre
 
|type cadre = 3
 
|titre      = <p style="color:black; margin-left: -4px; font-size: 22px; margin-top: -3px;">''Skills and Qualifications''</p>
 
|id        =
 
|image      =
 
|lien =
 
|contenu    =
 
|contenu    = <p style="color: #a3051f; margin-left: -4px; margin-bottom: -10px; font-weight: normal; font-size: 15px;"> Each title in blue contains a link to a page in my personal ''Wiki''. Take a look at the pages for more details. </p>
 
}}
 
<section end="cv-qualifications_title" /> -->
 
  
<section begin="cv-qualifications_title" />
 
{| style="color: white; width: 70%; height: 60px; border-top-left-radius: 15px; background: linear-gradient(to right, #4081de, white);"
 
| colspan="2" |
 
<h3 style="color:white; margin-left: 10px; font-size: 28px; margin-top: -15px; font-family: 'Linux Libertine','Georgia','Times',serif; height: 60px; line-height: 60px; text-aligh: center"><div>'''''Skills and Qualifications'''''</div></h3>[[CV_-_Skills_and_Qualifications|<div style="font-size:16px; color: blue; margin-left:0px;" class="oculto fa fa-external-link icon"></div>]]
 
|}
 
<section end="cv-qualifications_title" />
 
{{#lst:CV - Skills and Qualifications|cv-qualifications}}
 
  
 +
Virtually all relational database systems use SQL (Structured Query Language) as the language for querying and maintaining the database.
  
<br />
 
<br />
 
<!-- <section begin="cv-portfolio_title" />
 
==My projects portfolio==
 
{|cellpadding="2" cellspacing="5" style="width:100%; vertical-align:top; background:transparent; font-weight: bold; font-size: 17px; font-family: 'Linux Libertine','Georgia','Times',serif; margin-left: -10px;"
 
|{{Projet:Jeu vidéo/Modèle Cadre
 
|type cadre = 3
 
|titre      = <p style="color:black; margin-left: -4px; font-size: 22px; margin-top: -5px;">''My projects portfolio''</p>
 
|id        =
 
|image      =
 
|lien =
 
|contenu    =
 
|contenu    = <p style="color: #a3051f; margin-left: -4px; margin-bottom: -10px; font-weight: normal; font-size: 15px;"> Each title in blue contains a link to a page in my personal ''Wiki''. Take a look at the pages for more details. </p>
 
}}
 
<section end="cv-portfolio_title" /> -->
 
  
<section begin="cv-portfolio_title" />
+
The reasons for the dominance of relational databases are: simplicity, robustness, flexibility, performance, scalability and compatibility in managing generic data.
{| style="color: white; width: 70%; height: 60px; border-top-left-radius: 15px; background: linear-gradient(to right, #4081de, white);"
 
| colspan="2" |
 
<h3 style="color:white; margin-left: 10px; font-size: 28px; margin-top: -15px; font-family: 'Linux Libertine','Georgia','Times',serif; height: 60px; line-height: 60px; text-aligh: center"><div>'''''Portfolio'''''</div></h3>[[My_projects_portfolio|<div style="font-size:16px; color: blue; margin-left:0px;" class="oculto fa fa-external-link icon"></div>]]
 
|}
 
<section end="cv-portfolio_title" />
 
  
{{#lst:My_projects_portfolio|portfolio}}
 
  
 +
But to offer all of this, relational databases have to be incredibly complex internally.  For example, a relatively simple SELECT statement could have dozens of potential query execution paths, which a query optimizer would evaluate at run time.  All of this is hidden to users, but under the hood, the RDBMS determines the best “execution plan” to answer requests by using things like cost-based algorithms.
  
  
<br />
+
For large databases, especially ones used for web applications, the main concern is scalability.  As more and more applications are created in environments that have massive workloads (i.e. Amazon), their scalability requirements can change very quickly and grow very large.  Relational databases scale well, but usually only when that scaling happens on a single server (“scale-up”).  When the capacity of that single server is reached, you need to “scale-out” and distribute that load across multiple servers, moving into so-called distributed computing.  This is when the complexity of relational databases starts to cause problems with their potential to scale.  If you try to scale to hundreds or thousands of servers the complexities become overwhelming.
<br />
 
<!-- ==Courses==
 
<section begin="cv-courses_title" />
 
{|cellpadding="2" cellspacing="5" style="width:100%; vertical-align:top; background:transparent; font-weight: bold; font-size: 17px; font-family: 'Linux Libertine','Georgia','Times',serif; margin-left: -10px;"
 
|{{Projet:Jeu vidéo/Modèle Cadre
 
|type cadre = 3
 
|titre      = <p style="color:black; margin-left: -4px; font-size: 22px; margin-top: -3px;">''Courses''</span>
 
|id        =
 
|image      =
 
|contenu    =
 
|lien =
 
}}
 
<section end=cv-courses_title /> -->
 
  
<section begin="cv-courses_title" />
 
{| style="color: white; width: 70%; height: 60px; border-top-left-radius: 15px; background: linear-gradient(to right, #4081de, white);"
 
| colspan="2" |
 
<h3 style="color:white; margin-left: 10px; font-size: 28px; margin-top: -15px; font-family: 'Linux Libertine','Georgia','Times',serif; height: 60px; line-height: 60px; text-aligh: center"><div>'''''Relevant courses'''''</div></h3>[[CV_-_Courses|<div style="font-size:16px; color: blue; margin-left:0px;" class="oculto fa fa-external-link icon"></div>]]
 
|}
 
<section end=cv-courses_title />
 
  
{{#lst:CV - Courses|cv-courses}}
+
===Non-relational databases===
 +
A NoSQL database provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases.
  
 +
Motivations for this approach include:
  
 +
*Simplicity of design. Not having to deal with the "impedance mismatch" between the object-oriented approach to write applications and the schema-based tables and rows of a relational database. For example, storing all the customer order info in one document as opposed to having to join many tables together, resulting in less code to write, debug, and maintain.
  
<br />
+
*Better "horizontal" scaling to clusters of machines, which solves the problem when the number of concurrent users skyrockets for applications that are accessible via the web and mobile devices.  Using documents makes it much easier to scale-out as all the info for that customer order is contained in one place as opposed to being spread out on multiple tables.  NoSQL databases automatically spread data across servers without requiring application changes (auto-sharding), meaning that they natively and automatically spread data across an arbitrary number of servers, without requiring the application to even be aware of the composition of the server pool.  Data and query load are automatically balanced across servers, and when a server goes down, it can be quickly and transparently replaced with no application disruption.
<br />
 
<!-- ==Publications==
 
<section begin="cv-publications_title" />
 
{|cellpadding="2" cellspacing="5" style="width:100%; vertical-align:top; background:transparent; font-weight: bold; font-size: 17px; font-family: 'Linux Libertine','Georgia','Times',serif; margin-left: -10px;"
 
|{{Projet:Jeu vidéo/Modèle Cadre
 
|type cadre = 3
 
|titre      = <p style="color:black; margin-left: -4px; font-size: 22px; margin-top: -3px;">''Papers and Publications''</span>
 
|id        =
 
|image      =
 
|contenu    =
 
|lien =
 
}}
 
<section end=cv-publications_title /> -->
 
  
<section begin="cv-publications_title" />
+
*Finer control over availability.  Servers can be added or removed without application downtime.  Most NoSQL databases support data replication, storing multiple copies of data across the cluster or even across data centers, to ensure high availability and disaster recovery.
{| style="color: white; width: 70%; height: 60px; border-top-left-radius: 15px; background: linear-gradient(to right, #4081de, white);"
 
| colspan="2" |
 
<h3 style="color:white; margin-left: 10px; font-size: 28px; margin-top: -15px; font-family: 'Linux Libertine','Georgia','Times',serif; height: 60px; line-height: 60px; text-aligh: center"><div>'''''Papers and Publications'''''</div></h3>[[CV_-_Publications|<div style="font-size:16px; color: blue; margin-left:0px;" class="oculto fa fa-external-link icon"></div>]]
 
|}
 
<section end=cv-publications_title />
 
  
{{#lst:CV - Publications|cv-publications}}
+
*To easily capture all kinds of data "Big Data" which include unstructured and semi-structured data.  Allowing for a flexible database that can easily and quickly accommodate any new type of data and is not disrupted by content structure changes.  This is because document database are schemaless, allowing you to freely add fields to JSON documents without having to first define changes (schema-on-read instead of schema-on-write). You can have documents with a different number of fields than other documents.  For example, a patient record that may or may not contain fields that list allergies.
  
 +
*Speed.  The data structures used by NoSQL databases (i.e. JSON documents) differ from those used by default in relational databases, making many operations faster in NoSQL than relational databases due to not having to join tables (at the cost of increased storage space due to duplication of data – but storage space is so cheap nowadays so this is usually not an issue). In fact, most NoSQL databases do not even support joins.
  
 +
*Cost.  NoSQL databases usually use clusters of cheap commodity servers, while RDBMS tend to rely on expensive proprietary servers and storage systems.  Also, the licenses for RDBMS systems can be quite expensive while many NoSQL databases are open source and therefore free.
  
<br />
 
<br />
 
<!-- ==Languages==
 
<section begin="cv-languages_title" />
 
{|cellpadding="2" cellspacing="5" style="width:100%; vertical-align:top; background:transparent; font-weight: bold; font-size: 17px; font-family: 'Linux Libertine','Georgia','Times',serif; margin-left: -10px;"
 
|{{Projet:Jeu vidéo/Modèle Cadre
 
|type cadre = 3
 
|titre      = <p style="color:black; margin-left: -4px; font-size: 22px; margin-top: -3px;">''Languages''</span>
 
|id        =
 
|image      =
 
|contenu    =
 
|lien =
 
}}}
 
<section end=cv-languages_title /> -->
 
  
<section begin="cv-languages_title" />
+
The particular suitability of a given NoSQL database depends on the problem it must solve.
{| style="color: white; width: 70%; height: 60px; border-top-left-radius: 15px; background: linear-gradient(to right, #4081de, white);"
 
| colspan="2" |
 
<h3 style="color:white; margin-left: 10px; font-size: 28px; margin-top: -15px; font-family: 'Linux Libertine','Georgia','Times',serif; height: 60px; line-height: 60px; text-aligh: center"><div>'''''Languages'''''</div></h3>[[CV_-_Languages|<div style="font-size:16px; color: blue; margin-left:0px;" class="oculto fa fa-external-link icon"></div>]]
 
|}
 
<section end=cv-languages_title />
 
  
{{#lst:CV - Languages|cv-languages}}
+
*NoSQL databases are increasingly used in big data and real-time web applications.  They became popular with the introduction of the web, when databases went from a max of a few hundred users on an internal company application to thousands or millions of users on a web application.  NoSQL systems are also called “Not only SQL” to emphasize that they may also support SQL-like query languages.
  
 +
*Many NoSQL stores compromise consistency (in the sense of the CAP theorem) in favor of availability and partition tolerance. Some reasons that block adoption of NoSQL stores include the use of low-level query languages, the lack of standardized interfaces, and huge investments in existing SQL.  Also, most NoSQL stores lack true ACID transactions or only support transactions in certain circumstances and at certain levels (e.g., document level).
  
  
<br />
+
===Comparing the two===
<br />
 
<!-- ==Interests and other activities==
 
<section begin="cv-interests_title" />
 
{|cellpadding="2" cellspacing="5" style="width:100%; vertical-align:top; background:transparent; font-weight: bold; font-size: 17px; font-family: 'Linux Libertine','Georgia','Times',serif; margin-left: -10px;"
 
|{{Projet:Jeu vidéo/Modèle Cadre
 
|type cadre = 3
 
|titre      = <p style="color:black; margin-left: -4px; font-size: 22px; margin-top: -3px;">''Interests and other activities''</span>
 
|id        =
 
|image      =
 
|contenu    =
 
|lien =
 
}}
 
<section end=cv-interests_title /> -->
 
  
<section begin="cv-interests_title" />
+
*One of the most severe limitations of relational databases is that each item can only contain one attribute.  If we use a bank example, each aspect of a customer’s relationship with a bank is stored as separate row items in separate tables.  So the customer’s master details are in one table, the account details are in another table, the loan details in yet another, investments in a different table, and so on.  All these tables are linked to each other through the use of relations such as primary keys and foreign keys.
{| style="color: white; width: 70%; height: 60px; border-top-left-radius: 15px; background: linear-gradient(to right, #4081de, white);"
 
| colspan="2" |
 
<h3 style="color:white; margin-left: 10px; font-size: 28px; margin-top: -15px; font-family: 'Linux Libertine','Georgia','Times',serif; height: 60px; line-height: 60px; text-aligh: center"><div>'''''Interests and other activities'''''</div></h3>[[CV_-_Interests|<div style="font-size:16px; color: blue; margin-left:0px;" class="oculto fa fa-external-link icon"></div>]]
 
|}
 
<section end=cv-interests_title />
 
  
{{#lst:CV - Interests|cv-interests}}
+
*Non-relational databases, specifically a database’s key-value stores or key-value pairs, are radically different from this model.  Key-value pairs allow you to store several related items in one “row” of data in the same table.  We place the word “row” in quotes because a row here is not really the same thing as the row of a relational table.  For instance, in a non-relational table for the same bank, each row would contain the customer’s details as well as their account, loan and investment details.  All data relating to one customer would be conveniently stored together as one record.
  
  
 
<br />
 
<br />

Revision as of 18:29, 6 March 2021


Relational databases vs Non-relational databases

https://www.jamesserra.com/archive/2015/08/relational-databases-vs-non-relational-databases/

  • Relational databases, which can also be called relational database management systems (RDBMS) or SQL databases. The most popular of these are Microsoft SQL Server, Oracle Database and MySQL.


  • Non-relational databases, also called NoSQL databases, the most popular being MongoDB, DocumentDB, Cassandra, Coachbase, HBase, Redis, and Neo4j. These databases are usually grouped into four categories: Key-value stores, Graph stores, Column stores, and Document stores (see Types of NoSQL databases).


All relational databases can be used to manage transaction-oriented applications (Online transaction processing (OLTP)), and most non-relational databases that are in the categories Document stores and Column stores can also be used for OLTP. OLTP databases can be thought of as "Operational" databases, characterized by frequent, short transactions that include updates and that touch a small amount of data and where concurrency of thousands of transactions is very important (examples including banking applications and online reservations). Integrity of data is very important so they support ACID transactions (Atomicity, Consistency, Isolation, Durability). This is opposed to data warehouses, which are considered "Analytical" databases characterized by long, complex queries that touch a large amount of data and require a lot of resources. Updates are infrequent. An example is analysis of sales over the past year.

Relational databases usually work with structured data, while non-relational databases usually work with semi-structured data (i.e. XML, JSON).


Relational Databases

A relational database is organized based on the relational model of data, as proposed by E.F. Codd in 1970. This model organizes data into one or more tables (or "relations") of rows and columns, with a unique key for each row. Generally, each entity type that is described in a database has its own table with the rows representing instances of that type of entity and the columns representing values attributed to that instance. Since each row in a table has its own unique key, rows in a table can be linked to rows in other tables by storing the unique key of the row to which it should be linked (where such unique key is known as a "foreign key"). Codd showed that data relationships of arbitrary complexity can be represented using this simple set of concepts.


Virtually all relational database systems use SQL (Structured Query Language) as the language for querying and maintaining the database.


The reasons for the dominance of relational databases are: simplicity, robustness, flexibility, performance, scalability and compatibility in managing generic data.


But to offer all of this, relational databases have to be incredibly complex internally. For example, a relatively simple SELECT statement could have dozens of potential query execution paths, which a query optimizer would evaluate at run time. All of this is hidden to users, but under the hood, the RDBMS determines the best “execution plan” to answer requests by using things like cost-based algorithms.


For large databases, especially ones used for web applications, the main concern is scalability. As more and more applications are created in environments that have massive workloads (i.e. Amazon), their scalability requirements can change very quickly and grow very large. Relational databases scale well, but usually only when that scaling happens on a single server (“scale-up”). When the capacity of that single server is reached, you need to “scale-out” and distribute that load across multiple servers, moving into so-called distributed computing. This is when the complexity of relational databases starts to cause problems with their potential to scale. If you try to scale to hundreds or thousands of servers the complexities become overwhelming.


Non-relational databases

A NoSQL database provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases.

Motivations for this approach include:

  • Simplicity of design. Not having to deal with the "impedance mismatch" between the object-oriented approach to write applications and the schema-based tables and rows of a relational database. For example, storing all the customer order info in one document as opposed to having to join many tables together, resulting in less code to write, debug, and maintain.
  • Better "horizontal" scaling to clusters of machines, which solves the problem when the number of concurrent users skyrockets for applications that are accessible via the web and mobile devices. Using documents makes it much easier to scale-out as all the info for that customer order is contained in one place as opposed to being spread out on multiple tables. NoSQL databases automatically spread data across servers without requiring application changes (auto-sharding), meaning that they natively and automatically spread data across an arbitrary number of servers, without requiring the application to even be aware of the composition of the server pool. Data and query load are automatically balanced across servers, and when a server goes down, it can be quickly and transparently replaced with no application disruption.
  • Finer control over availability. Servers can be added or removed without application downtime. Most NoSQL databases support data replication, storing multiple copies of data across the cluster or even across data centers, to ensure high availability and disaster recovery.
  • To easily capture all kinds of data "Big Data" which include unstructured and semi-structured data. Allowing for a flexible database that can easily and quickly accommodate any new type of data and is not disrupted by content structure changes. This is because document database are schemaless, allowing you to freely add fields to JSON documents without having to first define changes (schema-on-read instead of schema-on-write). You can have documents with a different number of fields than other documents. For example, a patient record that may or may not contain fields that list allergies.
  • Speed. The data structures used by NoSQL databases (i.e. JSON documents) differ from those used by default in relational databases, making many operations faster in NoSQL than relational databases due to not having to join tables (at the cost of increased storage space due to duplication of data – but storage space is so cheap nowadays so this is usually not an issue). In fact, most NoSQL databases do not even support joins.
  • Cost. NoSQL databases usually use clusters of cheap commodity servers, while RDBMS tend to rely on expensive proprietary servers and storage systems. Also, the licenses for RDBMS systems can be quite expensive while many NoSQL databases are open source and therefore free.


The particular suitability of a given NoSQL database depends on the problem it must solve.

  • NoSQL databases are increasingly used in big data and real-time web applications. They became popular with the introduction of the web, when databases went from a max of a few hundred users on an internal company application to thousands or millions of users on a web application. NoSQL systems are also called “Not only SQL” to emphasize that they may also support SQL-like query languages.
  • Many NoSQL stores compromise consistency (in the sense of the CAP theorem) in favor of availability and partition tolerance. Some reasons that block adoption of NoSQL stores include the use of low-level query languages, the lack of standardized interfaces, and huge investments in existing SQL. Also, most NoSQL stores lack true ACID transactions or only support transactions in certain circumstances and at certain levels (e.g., document level).


Comparing the two

  • One of the most severe limitations of relational databases is that each item can only contain one attribute. If we use a bank example, each aspect of a customer’s relationship with a bank is stored as separate row items in separate tables. So the customer’s master details are in one table, the account details are in another table, the loan details in yet another, investments in a different table, and so on. All these tables are linked to each other through the use of relations such as primary keys and foreign keys.
  • Non-relational databases, specifically a database’s key-value stores or key-value pairs, are radically different from this model. Key-value pairs allow you to store several related items in one “row” of data in the same table. We place the word “row” in quotes because a row here is not really the same thing as the row of a relational table. For instance, in a non-relational table for the same bank, each row would contain the customer’s details as well as their account, loan and investment details. All data relating to one customer would be conveniently stored together as one record.