Database extensions for fun and profit. Andrew Dalke Andrew Dalke Scientific, AB Gothenburg, Sweden
|
|
- Lilian Pearson
- 6 years ago
- Views:
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 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 informationSQL (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 informationProgramming 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 informationrazi 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 informationIntroduction 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 informationMySQL 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 informationPYPL - 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 informationUsing 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 informationSQL 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 informationSubstructure 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 informationPointer 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 informationSYSC 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 informationNCSS: 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 informationEmbedding 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 informationRelational 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 informationThe 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 informationChapter 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 informationprocessing 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 informationDistributed 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 informationCOMP283-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 informationMySQL: 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 informationCSC 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 informationInstructor: 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 informationThis 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 informationOral 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 informationWeek - 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 informationLooping 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 informationLooping 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 informationCSE 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 informationModule 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 informationRoom 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 informationHardware: 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 informationA 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
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 informationRocking 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 informationFile 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 informationModern 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 informationA 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 informationDATABASE 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 informationOperating 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 informationBash 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 informationIntroduction 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 informationCS 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 informationTransbase 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 informationSetup 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 informationHKTA 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 informationBasic 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 informationPostgreSQL, 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 informationC 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 informationPostgres 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 informationCSCI-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 informationgcc 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 informationCS 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 informationCSE 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 informationWelcome 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 informationTail 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 informationCS 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 informationCompare 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 informationCIB 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 informationBooks 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 informationSQL: 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 informationCS-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 informationProgramming 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 informationCareerarm.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 informationComp 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 informationSQL 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 informationMySQL 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 informationIntroduction 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 informationModel 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 informationInformation 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 informationOperator 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 informationAnnouncements. 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 informationThe 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 informationDb2 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 informationDATABASE 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 informationBy 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 informationCIS 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 information1. 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 informationC++ 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 informationLearn 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 informationCrit-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 informationPointers 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 informationPOINTERS - 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 informationData 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 informationIntroduction 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 informationExploring 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 informationSpatial 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 informationLet'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 information8/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 informationT 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 informationExact 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 informationOracle 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 informationCSCI-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 informationArrays. 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 informationLarge 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 informationCrit-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 informationHustle 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 informationFeatures 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 informationCS143: 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 informationImplementing 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