Database extensions for fun and profit. Andrew Dalke Andrew Dalke Scientific, AB Gothenburg, Sweden

Size: px
Start display at page:

Download "Database extensions for fun and profit. Andrew Dalke Andrew Dalke Scientific, AB Gothenburg, Sweden"

Transcription

1 Database extensions for fun and profit Andrew Dalke Andrew Dalke Scientific, AB Gothenburg, Sweden

2 Set the Wayback Machine to 1997!

3 Relational databases - strings and numbers - SQL - clients written in any language Object databases - complex data types - no standard query language - single client language (Smalltalk) Object-relational databases

4 Object-Relational database Domain-specific database extensions Select cid From structures Where smarts_match(smiles, "c1ccccc1o") Create Function tanimoto(bit, bit) Returns Real As 'Select nbits_set($1 & $2)::real / (nbits_set($1) + nbits_set($2) - nbits_set($1 & $2))::real;' Language SQL; Second example from TJ O Donnell

5 Uses PostgreSQL Teaches SQL for queries, constraints and triggers. Examples schemas for LIMS and PubChem substructure matches, fingerprints, 3D and reactions PostgreSQL extensions using C, pgsql, Perl, Python Client examples CHORD database

6 Oracle Data Cartridge Informix Data Blade

7 And the winner is...? MySQL Good enough Fast, free, well-understood, widely used, scalable Used by YouTube, Flickr, Digg, Wikipedia and other popular sites Supported by every web application framework. (On 20 April, Oracle agreed to buy Sun for US $7.4 billion. On 16 Jan 2008, Sun acquired MySQL for US $1 billion.)

8 Client Scenario - Internal web application - Several data sets, each O(10,000) compounds - Search based on simple properties (MW, source) and chemistry (similarity, substructure) - Other in-house tools based on OEChem (aromaticity) - In-house similarity fingerprints, available as a library - Corporate database using Oracle, controlled by IS - Okay to use MySQL; existing in-house experience I asked: no other RDBMS was acceptable - Did not want to pay annual support fees

9 MySQL Good enough Supports user-defined functions and aggregates. Does not support user-defined data types. Select cid From structures Where smarts_match(smiles, "c1ccccc1o") Order By tanimoto(fp, similarity_fp("c1ccccc1o")) Limit 25

10 valid_smiles(smiles) Return 1 if it was valid, otherwise 0

11 mysql_oechem.cc 1/3 #include <mysql.h> #include <oechem.h> using namespace OEChem; // OEChem requires C++ but MySQL can only call C functions // Tell the C++ compiler to generate a C function interface extern "C" { // MySQL's security model requires that the function and // at least one of "*_init" or "*_deinit" must be defined. my_bool valid_smiles_init(udf_init *initid, UDF_ARGS *args, char *message); long long valid_smiles(udf_init *initid, UDF_ARGS *args, char *is_null, char *error); void valid_smiles_deinit(udf_init *initid); Different prototypes if the function returns a string or a double.

12 mysql_oechem.cc 2/3 // This is called once, at the start of a table search my_bool valid_smiles_init(udf_init *initid, UDF_ARGS *args, char *message) { if (args->arg_count!= 1 args->arg_type[0]!= STRING_RESULT) { strcpy(message, "valid_smiles takes a single SMILES string"); return 1; return 0; // This is called once, at the end of a table search void valid_smiles_deinit(udf_init *initid) { // I don't need to do anything.

13 mysql_oechem.cc 3/3 long long valid_smiles(udf_init *initid, UDF_ARGS *args, char *is_null, char *error) { OEGraphMol mol; // Get the SMILES string and its length. const char *smiles = args->args[0]; int smiles_len = args->lengths[0]; if (smiles == NULL) { // This row contains a SQL NULL. It's not valid. return 0; // The MySQL string might not be NUL-terminated. // OEParseSmiles takes either a 'char *' or a 'string&' // but not a (char *, int length). Convert to a string. std::string smiles_s(smiles, smiles_len); // Parse the string and return its result return OEParseSmiles(mol, smiles_s);

14 How to compile g++ -Wall -O3 -I/usr/local/openeye/toolkits/include \ `/usr/local/mysql/bin/mysql_config --cflags` \ -I. -c -o mysql_oechem.o mysql_oechem.cc Linux shared library: g++ -shared -o mysql_oechem.so mysql_oechem.o \ -L/usr/local/openeye/toolkits/lib \ -loeiupac -loechem -loesystem -loeplatform -lz Mac shared library: g++ -bundle -bundle_loader /usr/local/mysql/bin/mysqld \ -o mysql_oechem.so mysql_oechem.o \ -L/usr/local/openeye/toolkits/lib \ -loeiupac -loechem -loesystem -loeplatform -lz The result is the shared library mysql_oechem.so

15 How to install In MySQL 4: in the server s LD_LIBRARY_PATH In MySQL 5: in the server s plug-in directory % mysql Welcome to the MySQL monitor. Commands end with ; or \g.... mysql> SHOW VARIABLES LIKE 'plugin_dir'; Variable_name Value plugin_dir /usr/local/mysql osx10.4-i686/lib/plugin row in set (0.90 sec) mysql> cp mysql_oechem.so /usr/local/mysql osx10.4-i686/lib/plugin

16 mysqld needs OEChem settings Make sure that its LD_LIBRARY_PATH includes the OEChem shared libraries and that OE_DIR points to the OEChem directory with the license file.

17 Tell MySQL to load the new functions mysql> Select valid_smiles("c"); ERROR 1305 (42000): FUNCTION valid_smiles does not exist mysql> Create Function valid_smiles Returns INT SONAME "mysql_oechem.so"; Query OK, 0 rows affected (0.03 sec) mysql> Select valid_smiles("c"); valid_smiles("c") row in set (0.01 sec) Can be INT, STRING or FLOAT mysql> Select valid_smiles("q"); valid_smiles("q") row in set (0.00 sec)

18 Which functions are loaded? Available from the special mysql.func table. mysql> Select * From mysql.func; name ret dl type valid_smiles 2 mysql_oechem.so function row in set (0.00 sec)

19 Create a new database using the MySQL shell mysql> Create Database pubchem; mysql> Use Database pubchem; mysql> Create Table Compounds ( -> cid INTEGER PRIMARY KEY, -> mw FLOAT, -> smiles TEXT); Query OK, 0 rows affected (0.76 sec)

20 import MySQLdb from openeye.oechem import * Populate the database using a Python client db = MySQLdb.connect(user="skroob", passwd="12345", db="pubchem") cur = db.cursor() ifs = oemolistream() if not ifs.open("/users/dalke/databases/compound_ _ sdf.gz"): raise IOError("Cannot open file") for mol in ifs.getoegraphmols(): cid = OEGetSDData(mol, "PUBCHEM_COMPOUND_CID") mw = OEGetSDData(mol, "PUBCHEM_EXACT_MASS") if not cid or not mw: # any missing values? continue OEAssignAromaticFlags(mol) smiles = OECreateCanSmiString(mol) cur.execute(""" INSERT INTO Compounds (cid, mw, smiles) VALUES (%s, %s, %s)""", (cid, mw, smiles)) cur.execute("select count(*) FROM Compounds") n = cur.fetchone()[0] print "Database table contains", n, "compounds" 24,983 compounds 19s to load (14s sending 1000 records/insert)

21 Searching for invalid SMILES mysql> Select cid, smiles From Compounds Where valid_smiles(smiles) = 0; Empty set (1.08 sec) mysql> Insert Into Compounds (cid, mw, smiles) Values (12345, 0.0, "Q"); Query OK, 1 row affected (0.00 sec) mysql> Select cid, smiles From Compounds Where valid_smiles(smiles) = 0; cid smiles Q row in set (0.97 sec) mysql> Best search time after 5 tests was 0.94 seconds

22 Need for Speed! Parsing 27,000/sec is great. I want it faster. Each row test creates a new OEGraphMol. What about reusing the same OEGraphMol, calling Clear() each time?

23 Store arbitrary data in initid->ptr my_bool valid_smiles_init(udf_init *initid, UDF_ARGS *args, char *message) { if (args->arg_count!= 1 args->arg_type[0]!= STRING_RESULT) { strcpy(message, "valid_smiles takes a single SMILES string"); return 1; // Create a molecule once for the entire query initid->ptr = reinterpret_cast<char *>(new OEGraphMol); return 0; void valid_smiles_deinit(udf_init *initid) { delete reinterpret_cast<oegraphmol *>(initid->ptr);

24 Reuse the OEGraphMol from initid->ptr long long valid_smiles(udf_init *initid, UDF_ARGS *args, char *is_null, char *error) { OEGraphMol *mol = reinterpret_cast<oegraphmol *>(initid->ptr); const char *smiles = args->args[0]; int smiles_len = args->lengths[0]; if (smiles == NULL) { return 0; std::string smiles_s(smiles, smiles_len); // Remember, each SMILES adds to the existing molecule mol->clear(); return OEParseSmiles(*mol, smiles_s); Search time goes to 0.87s, or 29,000/second; 7% faster. (Before going further: Delete From Structures Where cid = 12345; )

25 SMARTS searches Select count(*) from Compounds Where smarts_match(smiles, "c1ccccc1o"); #include <mysql.h> #include <oechem.h> using namespace OEChem; extern "C" { my_bool smarts_match_init(udf_init *initid, UDF_ARGS *args, char *message); long long smarts_match(udf_init *initid, UDF_ARGS *args, char *is_null, char *error); void smarts_match_deinit(udf_init *initid);

26 my_bool smarts_match_init(udf_init *initid, UDF_ARGS *args, char *message) { if (args->arg_count!= 2) { strcpy(message, "smarts_match take two arguments (smiles, smarts)"); return 1; if (args->arg_type[0]!= STRING_RESULT) { strcpy(message, "smarts_match: SMILES parameter must be a string"); return 1; if (args->arg_type[1]!= STRING_RESULT) { strcpy(message, "smarts_match: SMARTS parameter must be a string"); return 1; return 0; void smarts_match_deinit(udf_init *initid) {

27 long long smarts_match(udf_init *initid, UDF_ARGS *args, char *is_null, char *error) { // Get the SMILES and SMARTS strings const char *smiles = args->args[0]; int smiles_len = args->lengths[0]; const char *smarts = args->args[1]; int smarts_len = args->lengths[1]; // Check for NULLs and convert to strings if (smiles == NULL smarts == NULL) { return 0; std::string smiles_s(smiles, smiles_len); std::string smarts_s(smarts, smarts_len); OEGraphMol mol; OESubSearch pat; // If the string isn't a valid SMILES or SMARTS // then regard it as an error. if (!OEParseSmiles(mol, smiles_s)!pat.init(smarts_s.c_str(), true)) { *error = 1; return 0; return pat.singlematch(mol)!= 0;

28 Does it work? mysql> select smarts_match("c#n", "*#*"); smarts_match("c#n", "*#*") row in set (0.00 sec) mysql> select smarts_match("c#n", "O#*"); smarts_match("c#n", "O#*") row in set (0.00 sec) mysql> select count(*) from Compounds where smarts_match(smiles, "c1ccccc1o"); count(*) row in set (2.90 sec) 8,600 SMARTS tests/second

29 I feel the need the need for speed! - Reuse the OEGraphMol - The SMARTS pattern is constant; compile it once? The *_init function knows about all parameters which are constant values my_bool smarts_match_init(udf_init *initid, UDF_ARGS *args, char *message) {... verify that there are 2 inputs and both are strings... const char *smarts = args->args[1]; if (smarts) {... this is constant for all rows... else {... the SMARTS may be different for each row return 0;

30 struct SmartsMatchState { OEGraphMol mol; int pattern_is_constant; OESubSearch pattern; ; my_bool smarts_match_init(udf_init *initid, UDF_ARGS *args, char *message) {... verify that the two input fields are strings... SmartsMatchState *state = new SmartsMatchState; const char *smarts = args->args[1]; if (smarts) { // use the same SMARTS for every match int smarts_len = args->lengths[1]; std::string smarts_s(smarts, smarts_len); if (!state->pattern.init(smarts_s.c_str(), true)) { delete state; strcpy(message, "Could not parse SMARTS"); return 1; state->pattern_is_constant = 1; else { state->pattern_is_constant = 0; initid->ptr = reinterpret_cast<char *>(state); return 0; void smarts_match_deinit(udf_init *initid) { delete reinterpret_cast<smartsmatchstate *>(initid->ptr);

31 long long smarts_match(udf_init *initid, UDF_ARGS *args, char *is_null, char *error) { SmartsMatchState *state = reinterpret_cast<smartsmatchstate *>(initid->ptr); // Get the SMILES strings const char *smiles = args->args[0]; int smiles_len = args->lengths[0]; std::string smiles_s(smiles, smiles_len); state->mol.clear(); if (!OEParseSmiles(state->mol, smiles_s)) { *error = 1; return 0; if (!state->pattern_is_constant) { // Compile the new SMARTS string const char *smarts = args->args[1]; int smarts_len = args->lengths[1]; std::string smarts_s(smarts, smarts_len); if (!state->pattern.init(smarts_s.c_str(), true)) { *error = 1; return 0; return state->pattern.singlematch(state->mol)!= 0;

32 Is it faster? mysql> Select count(*) from Compounds -> Where smarts_match(smiles, "c1ccccc1o"); count(*) row in set (1.11 sec) (was 2.90 sec) 22,500 SMARTS tests/sec (was 8,600) About 2.6x faster

33 Going to Plaid

34 Next trick up our collective sleeves... Fingerprint Screens My client wanted substructure tests, not SMARTS matching. (SMILES canonical SMILES treated as SMARTS is good enough) - Compute and store substructure fingerprints for each compound in the database. - Compound the query substructure fingerprint - Screen out targets where target_fp does not contain query_fp - Do the SMARTS test on the remaining targets Screening seems to remove about 85% of the targets. 6-7x faster

35 Which fingerprints? Substructure keys MACCS SMARTS from TJ O Donnell and from RDKit CACTVS definitions from PubChem Hash keys Implementation in RDKit and OpenBabel I implemented a subset of the 881 CACTVS keys.

36 Assume a substructure_fp(smiles) function Alter Table Compounds Add fp Text; Update Compounds Set fp = substructure_fp(smiles); Depends on how you implement fingerprints Select count(*) from Compounds Where fp_contains(fp, substructure_fp("c1ccccc1o")) And smarts_match(smiles, "c1ccccc1o"); substructure_fp(fixed_smarts) is common. The *_init function must check for it and cache the result.

37 Fingerprint implementations PostgreSQL has a built-in bitset data type (See TJ s book) Create Function tanimoto(bit, bit) Returns Real As 'Select nbits_set($1 & $2)::real / (nbits_set($1) + nbits_set($2) - nbits_set($1 & $2))::real;' Language SQL;

38 Fingerprint implementations PostgreSQL has a built-in bitset data type Use multiple integer fields Create Table Compounds ( cid INTEGER PRIMARY KEY, mw FLOAT, smiles TEXT, fp1 INTEGER, fp2 INTEGER, fp3 INTEGER, fp4 INTEGER,... fp28 INTEGER); Select cid from Compounds Where (qfp1 & fp1 = qfp1 and qfp2 & fp2 = qfp2 and qfp3 & fp3 = qfp3 and... qfp28 & fp28 = qfp28); Need bit integers to store 881 bits

39 Fingerprint implementations PostgreSQL has a built-in bitset data type Use multiple integer fields Store the fingerprints as raw bytes Text fields store characters, not bytes! Unicode encoding problems. Could use a blob, but Python libraries access them through file-like interface.

40 Fingerprint implementations PostgreSQL has a built-in bitset data type Use multiple integer fields Store the fingerprints as raw bytes Encode the fingerprint as characters I used a hex encoding: 881 bits 222 hex chars CDE00 Requires twice as much memory

41 substructure_fp, fp_contains, and tanimoto work in hex space mysql> Select count(*) from Compounds -> Where fp_contains(fp, substructure_fp("c1ccccc1o")); count(*) row in set (0.20 sec) mysql> Select count(*) from Compounds -> Where fp_contains(fp, substructure_fp("c1ccc(c)cc1o")); count(*) row in set (0.19 sec) 130,000 tests per second

42 Estimated average performance (Are there any good benchmark data sets?) compounds (1.11s full search)*20% + (0.19s screening) 60,000 compounds / sec 6 minutes to search PubChem (assuming you had ~7GB of memory)

43 Availability My client owns the code I wrote for them. I reimplemented the plugin, to be released soon. It will be announced on my writings blog at I ll include a section on using relational databases at my training course, next week in Leipzig:

44 Conclusions Databases are commodities; what you do with data is not. Get TJ s book to learn how to use databases in chemistry Modern machines + OpenEye = fast If only OEParseSmiles and OESubSearch.Init took: (char *s, int s_len)... A hash fingerprint for OEMols would be so useful. Why pay a lot of money when DIY (or DIWithAConsultant) is so much fun?

45 SQLite In-memory relational database. Comes with recent Pythons. Used in Apple s Mail.app and other applications. Supports user-defined extensions.

Migrating by using User Defined Functions. Jan Kneschke

Migrating by using User Defined Functions. Jan Kneschke Migrating by using User Defined Functions Jan Kneschke Consulting, MySQL AB jan@mysql.com MySQL UC 2005 Santa Clara 1 Overview User Defined Functions (UDF) Use of UDFs Writing UDFs Using UDFs Limitations

More information

SQL (and MySQL) Useful things I have learnt, borrowed and stolen

SQL (and MySQL) Useful things I have learnt, borrowed and stolen SQL (and MySQL) Useful things I have learnt, borrowed and stolen MySQL truncates data MySQL truncates data CREATE TABLE pets ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, type CHAR(3) NOT NULL, PRIMARY KEY

More information

Programming for Chemical and Life Science Informatics

Programming for Chemical and Life Science Informatics Programming for Chemical and Life Science Informatics I573 - Week 9 (Databases for Chemistry) Rajarshi Guha 10 th & 12 th March, 2009 Part I Chemical Databases An Example Scenario We can extend our previous

More information

razi Documentation Release 2.0.0b0 Riccardo Vianello

razi Documentation Release 2.0.0b0 Riccardo Vianello razi Documentation Release 2.0.0b0 Riccardo Vianello Dec 23, 2017 Contents 1 Introduction 3 1.1 Installation................................................ 3 1.2 Documentation..............................................

More information

Introduction to pysqlite

Introduction to pysqlite Introduction to pysqlite A crash course to accessing SQLite from within your Python programs. Based on pysqlite 2.0. SQLite basics SQLite is embedded, there is no server Each SQLite database is stored

More information

MySQL Introduction. By Prof. B.A.Khivsara

MySQL Introduction. By Prof. B.A.Khivsara MySQL Introduction By Prof. B.A.Khivsara Note: The material to prepare this presentation has been taken from internet and are generated only for students reference and not for commercial use. Introduction

More information

PYPL - A cartridge enabling RDKit in Oracle PL/SQL - The tiniest Oracle cartridge ever? Jan Holst Jensen Biochemfusion ApS

PYPL - A cartridge enabling RDKit in Oracle PL/SQL - The tiniest Oracle cartridge ever? Jan Holst Jensen Biochemfusion ApS PYPL - A cartridge enabling RDKit in Oracle PL/SQL - The tiniest Oracle cartridge ever? Jan Holst Jensen Biochemfusion ApS jan@biochemfusion.com RDKit UGM 2014 1 Why I am a big fan of RDKit BSD licensed

More information

Using the List management features can be a useful way of collecting a set of results ready for export.

Using the List management features can be a useful way of collecting a set of results ready for export. Exporting Data Exporting Data Specifying details Monitoring progress Relational data export Exporting to new local DB Data from database tables can be exported from IJC to various common file formats.

More information

SQL Commands & Mongo DB New Syllabus

SQL Commands & Mongo DB New Syllabus Chapter 15 : Computer Science Class XI ( As per CBSE Board) SQL Commands & Mongo DB New Syllabus 2018-19 SQL SQL is an acronym of Structured Query Language.It is a standard language developed and used

More information

Substructure Searching Face-off. John May and Roger Sayle NextMove Software Cambridge, UK

Substructure Searching Face-off. John May and Roger Sayle NextMove Software Cambridge, UK Substructure Searching Face-off John May and Roger Sayle NextMove Software Cambridge, UK Cambridge Cheminformatics Network Meeting, Cambridge, 27th May 2015 Molecular Identity is foo the same as bar? Substructure

More information

Pointer Basics. Lecture 13 COP 3014 Spring March 28, 2018

Pointer Basics. Lecture 13 COP 3014 Spring March 28, 2018 Pointer Basics Lecture 13 COP 3014 Spring 2018 March 28, 2018 What is a Pointer? A pointer is a variable that stores a memory address. Pointers are used to store the addresses of other variables or memory

More information

SYSC 2006 C Winter String Processing in C. D.L. Bailey, Systems and Computer Engineering, Carleton University

SYSC 2006 C Winter String Processing in C. D.L. Bailey, Systems and Computer Engineering, Carleton University SYSC 2006 C Winter 2012 String Processing in C D.L. Bailey, Systems and Computer Engineering, Carleton University References Hanly & Koffman, Chapter 9 Some examples adapted from code in The C Programming

More information

NCSS: Databases and SQL

NCSS: Databases and SQL NCSS: Databases and SQL Tim Dawborn Lecture 2, January, 2017 Python/sqlite3 DB Design API JOINs 2 Outline 1 Connecting to an SQLite database using Python 2 What is a good database design? 3 A nice API

More information

Embedding Python in Your C Programs

Embedding Python in Your C Programs 1 of 7 6/18/2006 9:05 PM Embedding Python in Your C Programs William Nagel Abstract C, meet Python. Python, this is C. With surprisingly little effort, the Python interpreter can be integrated into your

More information

Relational databases and SQL

Relational databases and SQL Relational databases and SQL Relational Database Management Systems Most serious data storage is in RDBMS Oracle, MySQL, SQL Server, PostgreSQL Why so popular? Based on strong theory, well-understood performance

More information

The Top 20 Design Tips

The Top 20 Design Tips The Top 20 Design Tips For MySQL Enterprise Data Architects Ronald Bradford COO PrimeBase Technologies April 2008 Presented Version By: 1.1 Ronald 10.Apr.2008 Bradford 1. Know Your Technology Tools Generics

More information

Chapter 1 Getting Started

Chapter 1 Getting Started Chapter 1 Getting Started The C# class Just like all object oriented programming languages, C# supports the concept of a class. A class is a little like a data structure in that it aggregates different

More information

processing data with a database

processing data with a database processing data with a database 1 MySQL and MySQLdb MySQL: an open source database running MySQL for database creation MySQLdb: an interface to MySQL for Python 2 CTA Tables in MySQL files in GTFS feed

More information

Distributed Systems. 29. Distributed Caching Paul Krzyzanowski. Rutgers University. Fall 2014

Distributed Systems. 29. Distributed Caching Paul Krzyzanowski. Rutgers University. Fall 2014 Distributed Systems 29. Distributed Caching Paul Krzyzanowski Rutgers University Fall 2014 December 5, 2014 2013 Paul Krzyzanowski 1 Caching Purpose of a cache Temporary storage to increase data access

More information

COMP283-Lecture 6 Applied Database Management

COMP283-Lecture 6 Applied Database Management Applied Database Management Introduction Database Administration More Optimisation Maintaining Data Integrity Improving Performance 1 DB Administration: Full-text index Full Text Index Index large text

More information

MySQL: an application

MySQL: an application Data Types and other stuff you should know in order to amaze and dazzle your friends at parties after you finally give up that dream of being a magician and stop making ridiculous balloon animals and begin

More information

CSC 337. Relational Databases and SQL. Rick Mercer

CSC 337. Relational Databases and SQL. Rick Mercer CSC 337 Relational Databases and SQL Rick Mercer Relational databases Relational database: A method of structuring data as tables associated to each other by shared attributes A table row corresponds to

More information

Instructor: Craig Duckett. Lecture 14: Tuesday, May 15 th, 2018 Stored Procedures (SQL Server) and MySQL

Instructor: Craig Duckett. Lecture 14: Tuesday, May 15 th, 2018 Stored Procedures (SQL Server) and MySQL Instructor: Craig Duckett Lecture 14: Tuesday, May 15 th, 2018 Stored Procedures (SQL Server) and MySQL 1 Assignment 3 is due LECTURE 20, Tuesday, June 5 th Database Presentation is due LECTURE 20, Tuesday,

More information

This manual is for Libffi, a portable foreign-function interface library. Copyright c 2008, 2010, 2011 Red Hat, Inc. Permission is granted to copy,

This manual is for Libffi, a portable foreign-function interface library. Copyright c 2008, 2010, 2011 Red Hat, Inc. Permission is granted to copy, Libffi This manual is for Libffi, a portable foreign-function interface library. Copyright c 2008, 2010, 2011 Red Hat, Inc. Permission is granted to copy, distribute and/or modify this document under the

More information

Oral Questions and Answers (DBMS LAB) Questions & Answers- DBMS

Oral Questions and Answers (DBMS LAB) Questions & Answers- DBMS Questions & Answers- DBMS https://career.guru99.com/top-50-database-interview-questions/ 1) Define Database. A prearranged collection of figures known as data is called database. 2) What is DBMS? Database

More information

Week - 01 Lecture - 04 Downloading and installing Python

Week - 01 Lecture - 04 Downloading and installing Python Programming, Data Structures and Algorithms in Python Prof. Madhavan Mukund Department of Computer Science and Engineering Indian Institute of Technology, Madras Week - 01 Lecture - 04 Downloading and

More information

Looping and Counting. Lecture 3 Hartmut Kaiser hkaiser/fall_2012/csc1254.html

Looping and Counting. Lecture 3 Hartmut Kaiser  hkaiser/fall_2012/csc1254.html Looping and Counting Lecture 3 Hartmut Kaiser hkaiser@cct.lsu.edu http://www.cct.lsu.edu/ hkaiser/fall_2012/csc1254.html Abstract First we ll discuss types and type safety. Then we will modify the program

More information

Looping and Counting. Lecture 3. Hartmut Kaiser hkaiser/fall_2011/csc1254.html

Looping and Counting. Lecture 3. Hartmut Kaiser  hkaiser/fall_2011/csc1254.html Hartmut Kaiser hkaiser@cct.lsu.edu http://www.cct.lsu.edu/ hkaiser/fall_2011/csc1254.html 2 Abstract First we ll discuss types and type safety. Then we will modify the program we developed last time (Framing

More information

CSE Database Management Systems. York University. Parke Godfrey. Winter CSE-4411M Database Management Systems Godfrey p.

CSE Database Management Systems. York University. Parke Godfrey. Winter CSE-4411M Database Management Systems Godfrey p. CSE-4411 Database Management Systems York University Parke Godfrey Winter 2014 CSE-4411M Database Management Systems Godfrey p. 1/16 CSE-3421 vs CSE-4411 CSE-4411 is a continuation of CSE-3421, right?

More information

Module 3 MySQL Database. Database Management System

Module 3 MySQL Database. Database Management System Module 3 MySQL Database Module 3 Contains 2 components Individual Assignment Group Assignment BOTH are due on Mon, Feb 19th Read the WIKI before attempting the lab Extensible Networking Platform 1 1 -

More information

Room 3P16 Telephone: extension ~irjohnson/uqc146s1.html

Room 3P16 Telephone: extension ~irjohnson/uqc146s1.html UQC146S1 Introductory Image Processing in C Ian Johnson Room 3P16 Telephone: extension 3167 Email: Ian.Johnson@uwe.ac.uk http://www.csm.uwe.ac.uk/ ~irjohnson/uqc146s1.html Ian Johnson 1 UQC146S1 What is

More information

Hardware: Logical View

Hardware: Logical View Hardware: Logical View CPU Memory Bus Disks Net USB Etc. 1 Hardware: Physical View USB I/O controller Storage connections CPU Memory 2 Hardware: 351 View (version 0) instructions? Memory CPU data CPU executes

More information

A heap, a stack, a bottle and a rack. Johan Montelius HT2017

A heap, a stack, a bottle and a rack. Johan Montelius HT2017 Introduction A heap, a stack, a bottle and a rack. Johan Montelius HT2017 In this assignment you re going to investigate the layout of a process; where are the different areas located and which data structures

More information

<Insert Picture Here> Introduction to MySQL

<Insert Picture Here> Introduction to MySQL Introduction to MySQL Giuseppe Maxia MySQL Community Team Lead at Oracle about me -Giuseppe Maxia a.k.a. The Data Charmer MySQL Community Team Lead Long time hacking with MySQL features

More information

Rocking with Racket. Marc Burns Beatlight Inc

Rocking with Racket. Marc Burns Beatlight Inc Rocking with Racket Marc Burns Beatlight Inc What am I doing here? My first encounter with Racket was in 2010 I wanted to use Racket in industry The opportunity arose in June 2014: Loft What am I doing

More information

File System Interface. ICS332 Operating Systems

File System Interface. ICS332 Operating Systems File System Interface ICS332 Operating Systems Files and Directories Features A file system implements the file abstraction for secondary storage It also implements the directory abstraction to organize

More information

Modern Database Systems CS-E4610

Modern Database Systems CS-E4610 Modern Database Systems CS-E4610 Aristides Gionis Michael Mathioudakis Spring 2017 what is a database? a collection of data what is a database management system?... a.k.a. database system software to store,

More information

A brief introduction to C++

A brief introduction to C++ A brief introduction to C++ Rupert Nash r.nash@epcc.ed.ac.uk 13 June 2018 1 References Bjarne Stroustrup, Programming: Principles and Practice Using C++ (2nd Ed.). Assumes very little but it s long Bjarne

More information

DATABASE SYSTEMS. Database programming in a web environment. Database System Course, 2016

DATABASE SYSTEMS. Database programming in a web environment. Database System Course, 2016 DATABASE SYSTEMS Database programming in a web environment Database System Course, 2016 AGENDA FOR TODAY Advanced Mysql More than just SELECT Creating tables MySQL optimizations: Storage engines, indexing.

More information

Operating systems fundamentals - B07

Operating systems fundamentals - B07 Operating systems fundamentals - B07 David Kendall Northumbria University David Kendall (Northumbria University) Operating systems fundamentals - B07 1 / 33 What is SQL? Structured Query Language Used

More information

Bash command shell language interpreter

Bash command shell language interpreter Principles of Programming Languages Bash command shell language interpreter Advanced seminar topic Louis Sugy & Baptiste Thémine Presentation on December 8th, 2017 Table of contents I. General information

More information

Introduction to Column Stores with MemSQL. Seminar Database Systems Final presentation, 11. January 2016 by Christian Bisig

Introduction to Column Stores with MemSQL. Seminar Database Systems Final presentation, 11. January 2016 by Christian Bisig Final presentation, 11. January 2016 by Christian Bisig Topics Scope and goals Approaching Column-Stores Introducing MemSQL Benchmark setup & execution Benchmark result & interpretation Conclusion Questions

More information

CS 11 java track: lecture 1

CS 11 java track: lecture 1 CS 11 java track: lecture 1 Administrivia need a CS cluster account http://www.cs.caltech.edu/ cgi-bin/sysadmin/account_request.cgi need to know UNIX www.its.caltech.edu/its/facilities/labsclusters/ unix/unixtutorial.shtml

More information

Transbase R PHP Module

Transbase R PHP Module Transbase R PHP Module Transaction Software GmbH Willy-Brandt-Allee 2 D-81829 München Germany Phone: +49-89-62709-0 Fax: +49-89-62709-11 Email: info@transaction.de http://www.transaction.de Version 7.1.2.30

More information

Setup of PostgreSQL, pgadmin and importing data. CS3200 Database design (sp18 s2) Version 2/9/2018

Setup of PostgreSQL, pgadmin and importing data. CS3200 Database design (sp18 s2)   Version 2/9/2018 Setup of PostgreSQL, pgadmin and importing data CS3200 Database design (sp18 s2) https://course.ccs.neu.edu/cs3200sp18s2/ Version 2/9/2018 1 Overview This document covers 2 issues: 1) How to install PostgreSQL:

More information

HKTA TANG HIN MEMORIAL SECONDARY SCHOOL SECONDARY 3 COMPUTER LITERACY. Name: ( ) Class: Date: Databases and Microsoft Access

HKTA TANG HIN MEMORIAL SECONDARY SCHOOL SECONDARY 3 COMPUTER LITERACY. Name: ( ) Class: Date: Databases and Microsoft Access Databases and Microsoft Access Introduction to Databases A well-designed database enables huge data storage and efficient data retrieval. Term Database Table Record Field Primary key Index Meaning A organized

More information

Basic program The following is a basic program in C++; Basic C++ Source Code Compiler Object Code Linker (with libraries) Executable

Basic program The following is a basic program in C++; Basic C++ Source Code Compiler Object Code Linker (with libraries) Executable Basic C++ Overview C++ is a version of the older C programming language. This is a language that is used for a wide variety of applications and which has a mature base of compilers and libraries. C++ is

More information

PostgreSQL, Python, and Squid.

PostgreSQL, Python, and Squid. PostgreSQL, Python, and Squid. Christophe Pettus PostgreSQL Experts, Inc. thebuild.com pgexperts.com Let s Talk Squid. What is a squid, anyway? For our purposes, a squid has three attributes: length in

More information

C Pointers. 6th April 2017 Giulio Picierro

C Pointers. 6th April 2017 Giulio Picierro C Pointers 6th April 07 Giulio Picierro Functions Return type Function name Arguments list Function body int sum(int a, int b) { return a + b; } Return statement (return keyword

More information

Postgres Copy Table From One Schema To Another

Postgres Copy Table From One Schema To Another Postgres Copy Table From One Schema To Another PostgreSQL: how to periodically copy many tables from one database to another but am free to export a copy of both to another server and do whatever I want

More information

CSCI-UA: Database Design & Web Implementation. Professor Evan Sandhaus Lecture #23: SQLite

CSCI-UA: Database Design & Web Implementation. Professor Evan Sandhaus  Lecture #23: SQLite CSCI-UA:0060-02 Database Design & Web Implementation Professor Evan Sandhaus sandhaus@cs.nyu.edu evan@nytimes.com Lecture #23: SQLite Database Design and Web Implementation Administrivia! Homework HW 8

More information

gcc o driver std=c99 -Wall driver.c bigmesa.c

gcc o driver std=c99 -Wall driver.c bigmesa.c C Programming Simple Array Processing This assignment consists of two parts. The first part focuses on array read accesses and computational logic. The second part focuses on array read/write access and

More information

CS 33. Introduction to C. Part 5. CS33 Intro to Computer Systems V 1 Copyright 2017 Thomas W. Doeppner. All rights reserved.

CS 33. Introduction to C. Part 5. CS33 Intro to Computer Systems V 1 Copyright 2017 Thomas W. Doeppner. All rights reserved. CS 33 Introduction to C Part 5 CS33 Intro to Computer Systems V 1 Copyright 2017 Thomas W. Doeppner. All rights reserved. Basic Data Types int short char -2,147,483,648 2,147,483,647-32,768 32,767-128

More information

CSE 565 Computer Security Fall 2018

CSE 565 Computer Security Fall 2018 CSE 565 Computer Security Fall 2018 Lecture 15: Software Security II Department of Computer Science and Engineering University at Buffalo 1 Software Vulnerabilities Buffer overflow vulnerabilities account

More information

Welcome to Lab! Feel free to get started until we start talking! The lab document is located on the course website:

Welcome to Lab! Feel free to get started until we start talking! The lab document is located on the course website: Welcome to Lab! Feel free to get started until we start talking! The lab document is located on the course website: https://users.wpi.edu/~sjarvis/ece2049_smj/ece2049_labs.html You do not need to keep

More information

Tail Calls. CMSC 330: Organization of Programming Languages. Tail Recursion. Tail Recursion (cont d) Names and Binding. Tail Recursion (cont d)

Tail Calls. CMSC 330: Organization of Programming Languages. Tail Recursion. Tail Recursion (cont d) Names and Binding. Tail Recursion (cont d) CMSC 330: Organization of Programming Languages Tail Calls A tail call is a function call that is the last thing a function does before it returns let add x y = x + y let f z = add z z (* tail call *)

More information

CS 103 Lab - Party Like A Char Star

CS 103 Lab - Party Like A Char Star 1 Introduction In this lab you will implement a "hangman" game where the user is shown blanks representing letter of a word and then tries to guess and fill in the letters with a limited number of guesses.

More information

Compare Two Identical Tables Data In Different Oracle Databases

Compare Two Identical Tables Data In Different Oracle Databases Compare Two Identical Tables Data In Different Oracle Databases Suppose I have two tables, t1 and t2 which are identical in layout but which may You may try dbforge Data Compare for Oracle, a **free GUI

More information

CIB Session 12th NoSQL Databases Structures

CIB Session 12th NoSQL Databases Structures CIB Session 12th NoSQL Databases Structures By: Shahab Safaee & Morteza Zahedi Software Engineering PhD Email: safaee.shx@gmail.com, morteza.zahedi.a@gmail.com cibtrc.ir cibtrc cibtrc 2 Agenda What is

More information

Books by Michael R. Ault

Books by Michael R. Ault Michael R. Ault Oracle Guru The Myth of Database Independence Mike Ault Oracle Guru Texas Memory Systems - Nuclear Navy 6 years - Nuclear Chemist/Programmer 10 years - Kennedy Western University Graduate

More information

SQL: Concepts. Todd Bacastow IST 210: Organization of Data 2/17/ IST 210

SQL: Concepts. Todd Bacastow IST 210: Organization of Data 2/17/ IST 210 SQL: Concepts Todd Bacastow IST 210: Organization of Data 2/17/2004 1 Design questions How many entities are there? What are the major entities? What are the attributes of each entity? Is there a unique

More information

CS-201 Introduction to Programming with Java

CS-201 Introduction to Programming with Java CS-201 Introduction to Programming with Java California State University, Los Angeles Computer Science Department Lecture X: Methods II Passing Arguments Passing Arguments methods can accept outside information

More information

Programming and Database Fundamentals for Data Scientists

Programming and Database Fundamentals for Data Scientists Programming and Database Fundamentals for Data Scientists Database Fundamentals Varun Chandola School of Engineering and Applied Sciences State University of New York at Buffalo Buffalo, NY, USA chandola@buffalo.edu

More information

Careerarm.com. 1. What is MySQL? MySQL is an open source DBMS which is built, supported and distributed by MySQL AB (now acquired by Oracle)

Careerarm.com. 1. What is MySQL? MySQL is an open source DBMS which is built, supported and distributed by MySQL AB (now acquired by Oracle) 1. What is MySQL? MySQL is an open source DBMS which is built, supported and distributed by MySQL AB (now acquired by Oracle) 2. What are the technical features of MySQL? MySQL database software is a client

More information

Comp 11 Lectures. Mike Shah. June 26, Tufts University. Mike Shah (Tufts University) Comp 11 Lectures June 26, / 57

Comp 11 Lectures. Mike Shah. June 26, Tufts University. Mike Shah (Tufts University) Comp 11 Lectures June 26, / 57 Comp 11 Lectures Mike Shah Tufts University June 26, 2017 Mike Shah (Tufts University) Comp 11 Lectures June 26, 2017 1 / 57 Please do not distribute or host these slides without prior permission. Mike

More information

SQL Data Definition Language: Create and Change the Database Ray Lockwood

SQL Data Definition Language: Create and Change the Database Ray Lockwood Introductory SQL SQL Data Definition Language: Create and Change the Database Pg 1 SQL Data Definition Language: Create and Change the Database Ray Lockwood Points: DDL statements create and alter the

More information

MySQL Cluster An Introduction

MySQL Cluster An Introduction MySQL Cluster An Introduction Geert Vanderkelen O Reilly MySQL Conference & Expo 2010 Apr. 13 2010 In this presentation we'll introduce you to MySQL Cluster. We ll go through the MySQL server, the storage

More information

Introduction to C: Pointers

Introduction to C: Pointers Introduction to C: Pointers Nils Moschüring PhD Student (LMU) Nils Moschüring PhD Student (LMU), Introduction to C: Pointers 1 1 Introduction 2 Pointers Basics Useful: Function

More information

Model Question Paper. Credits: 4 Marks: 140

Model Question Paper. Credits: 4 Marks: 140 Model Question Paper Subject Code: BT0075 Subject Name: RDBMS and MySQL Credits: 4 Marks: 140 Part A (One mark questions) 1. MySQL Server works in A. client/server B. specification gap embedded systems

More information

Information Systems Engineering. SQL Structured Query Language DDL Data Definition (sub)language

Information Systems Engineering. SQL Structured Query Language DDL Data Definition (sub)language Information Systems Engineering SQL Structured Query Language DDL Data Definition (sub)language 1 SQL Standard Language for the Definition, Querying and Manipulation of Relational Databases on DBMSs Its

More information

Operator overloading

Operator overloading 1 Introduction 2 The copy constructor 3 Operator Overloading 4 Eg 1: Adding two vectors 5 The -> operator 6 The this pointer 7 Overloading = 8 Unary operators 9 Overloading for the matrix class 10 The

More information

Announcements. PS 3 is out (see the usual place on the course web) Be sure to read my notes carefully Also read. Take a break around 10:15am

Announcements. PS 3 is out (see the usual place on the course web) Be sure to read my notes carefully Also read. Take a break around 10:15am Announcements PS 3 is out (see the usual place on the course web) Be sure to read my notes carefully Also read SQL tutorial: http://www.w3schools.com/sql/default.asp Take a break around 10:15am 1 Databases

More information

The Blackhole and Federated Storage Engines: The Coolest Kids on the Block

The Blackhole and Federated Storage Engines: The Coolest Kids on the Block The Blackhole and Federated Storage Engines: The Coolest Kids on the Block Kai Voigt, kai@mysql.com Senior Instructor, MySQL AB Giuseppe Maxia, giuseppe@mysql.com QA Developer, MySQL AB Kai Voigt Mister

More information

Db2 9.7 Create Table If Not Exists >>>CLICK HERE<<<

Db2 9.7 Create Table If Not Exists >>>CLICK HERE<<< Db2 9.7 Create Table If Not Exists The Explain tables capture access plans when the Explain facility is activated. You can create them using one of the following methods: for static SQL, The SYSTOOLS schema

More information

DATABASE SYSTEMS. Introduction to MySQL. Database System Course, 2018

DATABASE SYSTEMS. Introduction to MySQL. Database System Course, 2018 DATABASE SYSTEMS Introduction to MySQL Database System Course, 2018 CAUTION! *This class is NOT a recitation* We will NOT discuss the course material relevant to the exam and homework assignment We have

More information

By Lucas Marshall. All materials Copyright Developer Shed, Inc. except where otherwise noted.

By Lucas Marshall. All materials Copyright Developer Shed, Inc. except where otherwise noted. By Lucas Marshall All materials Copyright 1997 2002 Developer Shed, Inc. except where otherwise noted. Using XML RPC with PHP Table of Contents Introduction...1 Compiling PHP with XML RPC Support...2 Dissection

More information

CIS 2107 Computer Systems and Low-Level Programming Fall 2010 Midterm

CIS 2107 Computer Systems and Low-Level Programming Fall 2010 Midterm Fall 2010 Name: Page Points Score 1 8 2 9 3 11 4 10 5 11 6 1 7 9 8 21 9 10 10 10 Total: 100 Instructions The exam is closed book, closed notes. You may not use a calculator, cell phone, etc. For each of

More information

1. Describe History of C++? 2. What is Dev. C++? 3. Why Use Dev. C++ instead of C++ DOS IDE?

1. Describe History of C++? 2. What is Dev. C++? 3. Why Use Dev. C++ instead of C++ DOS IDE? 1. Describe History of C++? The C++ programming language has a history going back to 1979, when Bjarne Stroustrup was doing work for his Ph.D. thesis. One of the languages Stroustrup had the opportunity

More information

C++ Modern and Lucid C++ for Professional Programmers

C++ Modern and Lucid C++ for Professional Programmers Informatik C++ Modern and Lucid C++ for Professional Programmers Part 1 Self-study for Introduction to C++ Prof. Peter Sommerlad Director IFS Institute for Software Rapperswil, HS 2017 Thomas Corbat Additional

More information

Learn SQL by Calculating Customer Lifetime Value

Learn SQL by Calculating Customer Lifetime Value Learn SQL Learn SQL by Calculating Customer Lifetime Value Setup, Counting and Filtering 1 Learn SQL CONTENTS Getting Started Scenario Setup Sorting with ORDER BY FilteringwithWHERE FilteringandSorting

More information

Crit-bit Trees. Adam Langley (Version )

Crit-bit Trees. Adam Langley (Version ) CRITBIT CWEB OUTPUT 1 Crit-bit Trees Adam Langley (agl@imperialviolet.org) (Version 20080926) 1. Introduction This code is taken from Dan Bernstein s qhasm and implements a binary crit-bit (alsa known

More information

Pointers and References

Pointers and References Steven Zeil October 2, 2013 Contents 1 References 2 2 Pointers 8 21 Working with Pointers 8 211 Memory and C++ Programs 11 212 Allocating Data 15 22 Pointers Can Be Dangerous 17 3 The Secret World of Pointers

More information

POINTERS - Pointer is a variable that holds a memory address of another variable of same type. - It supports dynamic allocation routines. - It can improve the efficiency of certain routines. C++ Memory

More information

Data Warehouse Tutorial For Beginners Sql Server 2008 Book

Data Warehouse Tutorial For Beginners Sql Server 2008 Book Data Warehouse Tutorial For Beginners Sql Server 2008 Book You've read some of the content of well-known Data Warehousing books now what? How do. Implementing a Data Warehouse with Microsoft SQL Server.

More information

Introduction to Databases and SQL

Introduction to Databases and SQL Introduction to Databases and SQL Files vs Databases In the last chapter you learned how your PHP scripts can use external files to store and retrieve data. Although files do a great job in many circumstances,

More information

Exploring Popular SQL Implementations. Query the database to retrieve the data stored therein.

Exploring Popular SQL Implementations. Query the database to retrieve the data stored therein. Exploring Popular SQL Implementations Any tour into the realm of writing SQL functions should begin with a solid foundation of the basic principles of SQL. In this chapter, we will be discussing the ins

More information

Spatial Databases by Open Standards and Software 3.

Spatial Databases by Open Standards and Software 3. Spatial Databases by Open Standards and Software 3. Gábor Nagy Spatial Databases by Open Standards and Software 3.: Advanced features in PostgreSQL Gábor Nagy Lector: Zoltán Siki This module was created

More information

Let's Play... Try to name the databases described on the following slides...

Let's Play... Try to name the databases described on the following slides... Database Software Let's Play... Try to name the databases described on the following slides... "World's most popular" Free relational database system (RDBMS) that... the "M" in "LAMP" and "XAMP" stacks

More information

8/30/2016. In Binary, We Have A Binary Point. ECE 120: Introduction to Computing. Fixed-Point Representations Support Fractions

8/30/2016. In Binary, We Have A Binary Point. ECE 120: Introduction to Computing. Fixed-Point Representations Support Fractions University of Illinois at Urbana-Champaign Dept. of Electrical and Computer Engineering ECE 120: Introduction to Computing Fixed- and Floating-Point Representations In Binary, We Have A Binary Point Let

More information

T H E I N T E R A C T I V E S H E L L

T H E I N T E R A C T I V E S H E L L 3 T H E I N T E R A C T I V E S H E L L The Analytical Engine has no pretensions whatever to originate anything. It can do whatever we know how to order it to perform. Ada Lovelace, October 1842 Before

More information

Exact Numeric Data Types

Exact Numeric Data Types SQL Server Notes for FYP SQL data type is an attribute that specifies type of data of any object. Each column, variable and expression has related data type in SQL. You would use these data types while

More information

Oracle Create Table Foreign Key On Delete No

Oracle Create Table Foreign Key On Delete No Oracle Create Table Foreign Key On Delete No Action Can I create a foreign key against only part of a composite primary key? For example, if you delete a row from the ProductSubcategory table, it could

More information

CSCI-1680 RPC and Data Representation. Rodrigo Fonseca

CSCI-1680 RPC and Data Representation. Rodrigo Fonseca CSCI-1680 RPC and Data Representation Rodrigo Fonseca Administrivia TCP: talk to the TAs if you still have questions! ursday: HW3 out Final Project (out 4/21) Implement a WebSockets server an efficient

More information

Arrays. Example: Run the below program, it will crash in Windows (TurboC Compiler)

Arrays. Example: Run the below program, it will crash in Windows (TurboC Compiler) 1 Arrays General Questions 1. What will happen if in a C program you assign a value to an array element whose subscript exceeds the size of array? A. The element will be set to 0. B. The compiler would

More information

Large Scale MySQL Migration

Large Scale MySQL Migration to PostgreSQL! May 17, 2012 Content 1 Presentation Former Architecture A Wind of Change 2 PostgreSQL Architecture 3 4 In production Any question? Content 1 Presentation Former Architecture A Wind of Change

More information

Crit-bit Trees. Adam Langley (Version )

Crit-bit Trees. Adam Langley (Version ) Crit-bit Trees Adam Langley (agl@imperialviolet.org) (Version 20080926) 1. Introduction This code is taken from Dan Bernstein s qhasm and implements a binary crit-bit (alsa known as PATRICA) tree for NUL

More information

Hustle Documentation. Release 0.1. Tim Spurway

Hustle Documentation. Release 0.1. Tim Spurway Hustle Documentation Release 0.1 Tim Spurway February 26, 2014 Contents 1 Features 3 2 Getting started 5 2.1 Installing Hustle............................................. 5 2.2 Hustle Tutorial..............................................

More information

Features of C. Portable Procedural / Modular Structured Language Statically typed Middle level language

Features of C. Portable Procedural / Modular Structured Language Statically typed Middle level language 1 History C is a general-purpose, high-level language that was originally developed by Dennis M. Ritchie to develop the UNIX operating system at Bell Labs. C was originally first implemented on the DEC

More information

CS143: Relational Model

CS143: Relational Model CS143: Relational Model Book Chapters (4th) Chapters 1.3-5, 3.1, 4.11 (5th) Chapters 1.3-7, 2.1, 3.1-2, 4.1 (6th) Chapters 1.3-6, 2.105, 3.1-2, 4.5 Things to Learn Data model Relational model Database

More information

Implementing a Logical-to-Physical Mapping

Implementing a Logical-to-Physical Mapping Implementing a Logical-to-Physical Mapping Computer Science E-66 Harvard University David G. Sullivan, Ph.D. Logical-to-Physical Mapping Recall our earlier diagram of a DBMS, which divides it into two

More information