Administrivia Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications

Similar documents
Administrivia Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications

Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications. Administrivia. Administrivia. Faloutsos/Pavlo CMU /615

CMU SCS CMU SCS Who: What: When: Where: Why: CMU SCS

Cost-based Query Sub-System. Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications. Last Class.

Administrivia. Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications. Relational Model: Keys. Correction: Implied FDs

Lecture #16 (Physical DB Design)

Fundamentals of Physical Design: State of Art

CS317 File and Database Systems

CS317 File and Database Systems

Physical DB design and tuning: outline

Discuss physical db design and workload What choises we have for tuning a database How to tune queries and views

Query Processing. Lecture #10. Andy Pavlo Computer Science Carnegie Mellon Univ. Database Systems / Fall 2018

Physical Design. Elena Baralis, Silvia Chiusano Politecnico di Torino. Phases of database design D B M G. Database Management Systems. Pag.

Physical Database Design and Tuning. Review - Normal Forms. Review: Normal Forms. Introduction. Understanding the Workload. Creating an ISUD Chart

Rajiv GandhiCollegeof Engineering& Technology, Kirumampakkam.Page 1 of 10

Introduction to Data Management. Lecture #17 (Physical DB Design!)

D.K.M COLLEGE FOR WOMEN(AUTONOMOUS),VELLORE DATABASE MANAGEMENT SYSTEM QUESTION BANK

Friday Nights with Databases!

Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications. Administrivia Final Exam. Administrivia Final Exam

Administrivia. CS186 Class Wrap-Up. News. News (cont) Top Decision Support DBs. Lessons? (from the survey and this course)

CSE 344 Final Review. August 16 th

Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications. Today's Party. Example Database. Faloutsos/Pavlo CMU /615

CSE 544 Principles of Database Management Systems

Faloutsos 1. Carnegie Mellon Univ. Dept. of Computer Science Database Applications. Outline

Administrivia. Physical Database Design. Review: Optimization Strategies. Review: Query Optimization. Review: Database Design

Database Systems CSE 414

Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications

Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications. Outline. We ll learn: Faloutsos/Pavlo CMU /615

Outline. Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications. We ll learn: We ll learn (cnt d) Faloutsos/Pavlo CMU /615

Database Management

Last Class Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications

Physical Database Design and Tuning. Chapter 20

Databasesystemer, forår 2005 IT Universitetet i København. Forelæsning 8: Database effektivitet. 31. marts Forelæser: Rasmus Pagh

Last Class Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications

OBJECTIVES. How to derive a set of relations from a conceptual data model. How to validate these relations using the technique of normalization.

Physical Database Design and Tuning

DATABASE MANAGEMENT SYSTEMS

MIDTERM EXAMINATION Spring 2010 CS403- Database Management Systems (Session - 4) Ref No: Time: 60 min Marks: 38

Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications. Last Class. Last Class. Faloutsos/Pavlo CMU /615

CPSC 421 Database Management Systems. Lecture 19: Physical Database Design Concurrency Control and Recovery

CS317 File and Database Systems

Introduction to Database Systems CSE 344

Last Class Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications

OLTP vs. OLAP Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications

Copyright 2007 Ramez Elmasri and Shamkant B. Navathe Slide 16-1

Today's Class. Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications. Example Database. Query Plan Example

CSE544: Principles of Database Systems. Lectures 5-6 Database Architecture Storage and Indexes

15-415/615 Faloutsos 1

Where Are We? Next Few Lectures. Integrity Constraints Motivation. Constraints in E/R Diagrams. Keys in E/R Diagrams

A7-R3: INTRODUCTION TO DATABASE MANAGEMENT SYSTEMS

CSE 544 Principles of Database Management Systems. Magdalena Balazinska Winter 2009 Lecture 4 - Schema Normalization

Database Systems CSE 414

Schema And Draw The Dependency Diagram

Homework 6. Question Points Score Query Optimization 20 Functional Dependencies 20 Decompositions 30 Normal Forms 30 Total: 100

Last Class. Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications. Why do we need to sort? Today's Class

CGS 3066: Spring 2017 SQL Reference

Course Modules for MCSA: SQL Server 2016 Database Development Training & Certification Course:

Database Systems CSE 414

The DBMS accepts requests for data from the application program and instructs the operating system to transfer the appropriate data.

DATABASE PERFORMANCE AND INDEXES. CS121: Relational Databases Fall 2017 Lecture 11

CSE 344 FEBRUARY 14 TH INDEXING

Web Traffic - pct of Page Views

Distributed DBMS. Concepts. Concepts. Distributed DBMS. Concepts. Concepts 9/8/2014

CS/INFO 4154: Analytics-driven Game Design

CMPE 131 Software Engineering. Database Introduction

Techno India Batanagar Computer Science and Engineering. Model Questions. Subject Name: Database Management System Subject Code: CS 601

CSE 344 Final Examination

Who, where, when. Database Management Systems (LIX022B05) Literature. Evaluation. Lab Sessions. About this course. After this course...

CSCB20 Week 4. Introduction to Database and Web Application Programming. Anna Bretscher Winter 2017

6.830 Lecture PS1 Due Next Time (Tuesday!) Lab 1 Out end of week start early!

CMSC 461 Final Exam Study Guide

Introduction to Data Management. Lecture #2 (Big Picture, Cont.)

Lecture Notes CPSC 321 (Fall 2018) Today... Survey. Course Overview. Homework. HW1 (out) S. Bowers 1 of 8

CS 4604: Introduction to Database Management Systems. B. Aditya Prakash Lecture #10: Query Processing

Elementary IR: Scalable Boolean Text Search. (Compare with R & G )

Lecture #15 Optimizer Implementation (Part II)

EECS 647: Introduction to Database Systems

Lecture2: Database Environment

Carnegie Mellon Univ. Dept. of Computer Science Database Applications. Outline. We ll learn: Faloutsos CMU SCS

Announcements. Multi-column Keys. Multi-column Keys (3) Multi-column Keys. Multi-column Keys (2) Introduction to Data Management CSE 414

Database Design and Tuning

Announcements. Two Classes of Database Applications. Class Overview. NoSQL Motivation. RDBMS Review: Serverless

Distributed KIDS Labs 1

Data about data is database Select correct option: True False Partially True None of the Above

Announcements. Multi-column Keys. Multi-column Keys. Multi-column Keys (3) Multi-column Keys (2) Introduction to Data Management CSE 414

Interview Questions on DBMS and SQL [Compiled by M V Kamal, Associate Professor, CSE Dept]

Principles of Data Management

systems & research project

Database Design Process Entity / Relationship Diagrams

Today s Class. Carnegie Mellon Univ. Dept. of Computer Science /615 - DB Applications. Formal Properties of Schedules. Conflicting Operations

Course Outline Faculty of Computing and Information Technology

Query Evaluation Overview, cont.

CS108 Lecture 18: Databases and SQL

CSE 344 AUGUST 1 ST ENTITIES

CSE 544 Principles of Database Management Systems. Magdalena Balazinska Fall 2009 Lecture 3 - Schema Normalization

COGS 121 HCI Programming Studio. Week 03 - Tech Lecture

Practical Database Design Methodology and Use of UML Diagrams Design & Analysis of Database Systems

Constraints, Views & Indexes. Running Example. Kinds of Constraints INTEGRITY CONSTRAINTS. Keys Foreign key or referential integrity constraints

CSE 562 Database Systems

Database Management Systems Paper Solution

Transcription:

Administrivia Carnegie Mellon Univ. Dept. of Computer Science 15-415/615 - DB Applications C. Faloutsos A. Pavlo Lecture#18: Physical Database Design HW6 is due right now. HW7 is out today Phase 1: Wed Nov 11 th Phase 2: Mon Nov 30th Recitations (WEH 5302 ): Tue Nov 10 th Tue Nov 17 th Faloutsos/Pavlo 15-415/615 2 HW7: CMU YikYak Last Class PHP Web Application Postgres Database Phase 1: Design Spec Phase 2: Implementation Decomposition Lossless Dependency Preserving Normal Forms 3NF BCNF Faloutsos/Pavlo 15-415/615 3 Faloutsos/Pavlo 15-415/615 4

Today s Class Introduction Introduction Index Selection Denormalization Decomposition Partitioning Advanced Topics After ER design, schema refinement, and the view definitions, we have a conceptual and external schema for our database. The next step is to create the physical design of the database. Faloutsos/Pavlo 15-415/615 5 Faloutsos/Pavlo 15-415/615 6 Physical Database Design Physical Database Design Physical design is tightly linked to query optimization Query optimization is usually a top down concept. But in this lecture we ll discuss this from the bottom up It is important to understand the application s workload: What kind of queries/updates does it execute? How fast is the database growing? What is the desired performance metric? Faloutsos/Pavlo 15-415/615 7 Faloutsos/Pavlo 15-415/615 8

Understanding Queries Understanding Updates For each query in the workload: Which relations does it access? Which attributes are retrieved? Which attributes are involved in selection/join conditions? How selective are these conditions likely to be? For each update in the workload: Which attributes are involved in predicates? How selective are these conditions likely to be? What types of update operations and what attributes do they affect? How often are records inserted/updated/deleted? Faloutsos/Pavlo 15-415/615 9 Faloutsos/Pavlo 15-415/615 10 Consequences General DBA Advice Changing a database s design does not magically make every query run faster. May require you to modify your queries and/or application logic. APIs hide implementation details and can help prevent upstream apps from breaking when things change. Modifying the physical design of a database is expensive. DBA s usually do this when the application demand is low Typically Sunday mornings. May have to do it whenever the application changes. Faloutsos/Pavlo 15-415/615 11 Faloutsos/Pavlo 15-415/615 12

Today s Class Index Selection Introduction Index Selection Denormalization Decomposition Partitioning Advanced Topics Which relations should have indexes? What attributes(s) or expressions should be the search key? What order to use for attributes in index? How many indexes should we create? For each index, what kind of an index should it be? Faloutsos/Pavlo 15-415/615 13 Faloutsos/Pavlo 15-415/615 14 Example #1 Example #1: Join Clause CREATE TABLE users ( userid INT, servid VARCHAR, data VARCHAR, updated DATETIME, PRIMARY KEY (userid) CREATE TABLE locations ( locationid INT, servid VARCHAR, coordx FLOAT, coordy FLOAT Examine the attributes in the join clause Is there an index? What is the cardinality of the attributes? SELECT U.*, L.coordX, L.coordY FROM users AS U INNER JOIN locations AS L Get the location coordinates of a service for any ON (U.servID user with an = L.servID) id greater than some value and whose record was updated on a Tuesday. WHERE U.userID > $1 AND EXTRACT(dow FROM U.updated) = 2; SELECT U.*, L.coordX, L.coordY FROM users AS U INNER JOIN locations AS L ON (U.servID = L.servID) WHERE U.userID > $1 AND EXTRACT(dow FROM U.updated) = 2; Faloutsos/Pavlo 15-415/615 15 Faloutsos/Pavlo 15-415/615 16

Example #1: Where Clause Example #1: Output Clause Examine the attributes in the where clause Is there an index? How are they be accessed? Examine the query s output clause What attributes from what tables are needed? SELECT U.*, L.coordX, L.coordY FROM users AS U INNER JOIN locations AS L ON (U.servID = L.servID) WHERE U.userID > $1 AND EXTRACT(dow FROM U.updated) = 2; SELECT U.*, L.coordX, L.coordY FROM users AS U INNER JOIN locations AS L ON (U.servID = L.servID) WHERE U.userID > $1 AND EXTRACT(dow FROM U.updated) = 2; Faloutsos/Pavlo 15-415/615 17 Faloutsos/Pavlo 15-415/615 18 Example #1: Summary Index Selection Join: U.servID, L.servID Where: U.userID, U.updated Output: U.userID, U.servID, U.data, U.updated, L.coordX, L.coordY SELECT U.*, L.coordX, L.coordY FROM users AS U INNER JOIN locations AS L ON (U.servID = L.servID) WHERE U.userID > $1 AND EXTRACT(dow FROM U.updated) = 2; We already have an index on U.userID. Why? What if we created separate indexes for U.servID and L.servID? CREATE INDEX idx_u_servid ON users (servid CREATE INDEX idx_l_servid ON locations (servid Faloutsos/Pavlo 15-415/615 19 Faloutsos/Pavlo 15-415/615 20

Index Selection (2) Index Selection (3) We still have to look up U.updated. What if we created another index? This doesn t help our query. Why? SELECT U.*, L.coordX, L.coordY FROM users AS U INNER JOIN locations AS L CREATE ON INDEX (U.servID idx_u_servid = L.servID) ON users (servid WHERE U.userID > $1 CREATE AND INDEX EXTRACT(dow idx_l_servid FROM ON U.updated) locations = (servid 2; CREATE INDEX idx_u_updated ON users (updated EXTRACT(dow FROM updated) Faloutsos/Pavlo 15-415/615 21 The query outputs L.coordX and L.coordX. This means that we have to fetch the location record. We can create a covering index. CREATE INDEX idx_u_servid ON users (servid CREATE INDEX idx_l_servid ON locations (servid servid, coordx, coordy CREATE INDEX idx_u_updated ON users ( CREATE INDEX idx_l_servid EXTRACT(dow ON locations FROM updated) (servid) INCLUDE (coordx, coordy Only MSSQL Faloutsos/Pavlo 15-415/615 22 Index Selection (4) Index Selection (5) Can we do any better? Is the index U.servID necessary? Create a partial index Repeat for the other six days of the week! CREATE INDEX idx_u_servid ON users (servid WHERE EXTRACT(dow FROM updated) = 2; CREATE INDEX idx_l_servid ON locations ( servid, coordx, coordy CREATE INDEX idx_u_updated ON users ( EXTRACT(dow FROM updated) Faloutsos/Pavlo 15-415/615 23 Should we make the index on users a covering index? What if U.data is large? Should userid come before servid? Do we still need the primary key index? CREATE INDEX idx_u_everything ON users (servid, (userid, userid, userid) servid) data) WHERE EXTRACT(dow FROM updated) = 2; Faloutsos/Pavlo 15-415/615 24

Other Index Decisions Today s Class What type of index to use? B+Tree, Hash table, Bitmap, R-Tree, Full Text Introduction Index Selection Denormalization Decomposition Partitioning Advanced Topics Faloutsos/Pavlo 15-415/615 25 Faloutsos/Pavlo 15-415/615 26 Denormalization Game Example #1 Joins can be expensive, so it might be better to denormalize two tables back into one. This is goes against all of the BCNF goodness that we talked about it. But we have bills to pay, so this is an example where reality conflicts with the theory CREATE TABLE players ( playerid INT PRIMARY KEY, CREATE TABLE prefs ( playerid INT PRIMARY KEY REFERENCES player (playerid), data VARBINARY Faloutsos/Pavlo 15-415/615 27 Faloutsos/Pavlo 15-415/615 28

Game Example #1 Game Example #1 Get player preferences (1:1) SELECT P1.*, P2.* FROM players AS P1 INNER JOIN prefs AS P2 ON P1.playerID = P2.playerID WHERE P1.playerID = $1 CREATE TABLE players ( playerid INT PRIMARY KEY, data VARBINARY, Denormalize into parent table CREATE TABLE prefs ( SELECT playerid P1.* FROM INT PRIMARY players KEY AS P1 WHERE P1.playerID REFERENCES = $1 player (playerid), data VARBINARY Faloutsos/Pavlo 15-415/615 29 Faloutsos/Pavlo 15-415/615 30 Denormalization (1:n) Game Example #2 It s harder to denormalize tables with a 1:n relationship. Why? Example: There are multiple game instances in our application that players participate in. We need to keep track of each player s score per game. CREATE TABLE players ( playerid INT PRIMARY KEY, CREATE TABLE games ( gameid INT PRIMARY KEY, CREATE TABLE scores ( gameid INT REFERENCES games (gameid), playerid INT REFERENCES players (playerid), score INT, PRIMARY KEY (gameid, playerid) Faloutsos/Pavlo 15-415/615 31 Faloutsos/Pavlo 15-415/615 32

Game Example #2 Game Example #2 Get the list of playerids for a particular game sorted by their score. SELECT S.gameID, S.score, G.*, P.* FROM players AS P, games AS G, scores AS S WHERE G.gameID = $1 AND G.gameID = S.gameID AND S.playerID = P.playerID ORDER BY S.score DESC CREATE TABLE players ( playerid INT PRIMARY KEY, CREATE TABLE games ( gameid INT PRIMARY KEY, playerid1 INT REFERENCES players (playerid), score1 INT, playerid2 INT REFERENCES players (playerid), CREATE score2 TABLE INT, scores ( playerid3 gameid INT INT REFERENCES games players (gameid), (playerid), score3 playerid INT, INT REFERENCES players (playerid), score INT, PRIMARY KEY (gameid, playerid) Faloutsos/Pavlo 15-415/615 33 Faloutsos/Pavlo 15-415/615 34 Arrays Game Example #2 Denormalize 1:n relationships by storing multiple values in a single attribute. Oracle: VARRAY Postgres: ARRAY DB2/MSSQL/SQLite: UDTs MySQL: Fake it with VARBINARY Requires you to modify your application to manage these arrays. DBMS will not enforce foreign key constraints. Faloutsos/Pavlo 15-415/615 35 CREATE TABLE players ( playerid INT PRIMARY KEY, CREATE TABLE games ( gameid INT PRIMARY KEY, playerids INT[], ARRAY, scores INT[], ARRAY, Not a standard SQL function See: https://wiki.postgresql.org/wiki/array_index SELECT INSERT P.*, G.* INTO games VALUES ( G.scores[idx(G.playerIDs, 1, --gameid P.playerID)] AS score FROM players '{4, 3, AS 1, P 5, JOIN 2}', games --playerids AS G ON P.playerID '{900, 800, = 700, ANY(G.playerIDs) 600, 500}' --scores WHERE G.gameID = $1 36 ORDER BY score DESC;

Game Example #2 Today s Class CREATE TABLE players ( playerid INT PRIMARY KEY, CREATE TABLE games ( gameid INT PRIMARY KEY, playerscores INT[][], -- (playerid, score) No easy way to query this in pure SQL Introduction Index Selection Denormalization Decomposition Partitioning Advanced Topics Faloutsos/Pavlo 15-415/615 37 Faloutsos/Pavlo 15-415/615 38 Decomposition Wikipedia Example Split physical tables up to reduce the overhead of reading data during query execution. Vertical: Break off attributes from a table. Horizontal: Split data from a single table into multiple tables. CREATE TABLE pages ( pageid INT PRIMARY KEY, title VARCHAR UNIQUE, latest INT REFERENCES revisions (revid), updated DATETIME CREATE TABLE revisions ( revid INT PRIMARY KEY, pageid INT REFERENCES pages (pageid), content TEXT, updated DATETIME This is an application of normalization. Faloutsos/Pavlo 15-415/615 39 Faloutsos/Pavlo 15-415/615 40

Wikipedia Example Wikipedia Example Load latest revision for page SELECT P.*, R.* FROM pages AS P INNER JOIN revisions AS R ON P.latest = R.revID WHERE P.pageID = $1 Get all revision history for page SELECT R.revID, R.updated,... FROM revisions AS R WHERE R.pageID = $1 CREATE TABLE pages ( pageid INT PRIMARY KEY, title VARCHAR UNIQUE, latest INT REFERENCES revisions (revid), updated DATETIME Avg. Size of Wikipedia Revision: ~16KB CREATE TABLE revisions ( revid INT PRIMARY KEY, pageid INT REFERENCES pages (pageid), content TEXT, updated DATETIME Faloutsos/Pavlo 15-415/615 41 Faloutsos/Pavlo 15-415/615 42 Vertical Decomposition Vertical Decomposition Split out large attributes into a separate table (aka normalize ). Trade-offs: Some queries will have to perform a join to get the data that they need. But other queries will read less data. Faloutsos/Pavlo 15-415/615 43 CREATE TABLE pages ( pageid INT PRIMARY KEY, title VARCHAR UNIQUE, latest INT REFERENCES revisions (revid), updated DATETIME CREATE TABLE revisions ( SELECT revid P.*, INT PRIMARY R.*, RD.* KEY, FROM pageid pages INT REFERENCES AS P, revisions pages (pageid), AS R, content updated revdata TEXT, DATETIME AS RD updated DATETIME WHERE P.pageID = $1 CREATE AND TABLE P.latest revdata = ( R.revID revid AND R.revID INT REFERENCES = RD.revID revisions (revid), content TEXT Faloutsos/Pavlo 15-415/615 44

Horizontal Decomposition Horizontal Decomposition Replace a single table with multiple tables where tuples are assigned to a table based on some condition. Can mask the changes to the application using views and triggers. Faloutsos/Pavlo 15-415/615 45 CREATE TABLE revisions ( revid INT PRIMARY KEY, pageid INT REFERENCES pages (pageid), updated DATETIME All new revisions are first added to this table. SELECT R.revID, CREATE TABLE R.updated, revdatanew... ( Then a revision FROM is moved revisions revid INT AS REFERENCES R revisions (revid), to this table WHERE when it is R.pageID no content = TEXT $1 longer the latest. CREATE VIEW revdata AS CREATE TABLE (SELECT revdataold * FROM ( revdatanew) revid UNION INT REFERENCES revisions (revid), content (SELECT TEXT * FROM revdataold) Faloutsos/Pavlo 15-415/615 46 Today s Class Partitioning Introduction Index Selection Denormalization Decomposition Partitioning Advanced Topics Split single logical table into disjoint physical segments that are stored/managed separately. Ideally partitioning is transparent to the application. The application accesses logical tables and doesn t care how things are stored. Not always true. Faloutsos/Pavlo 15-415/615 47 Faloutsos/Pavlo 15-415/615 48

Vertical Partitioning Horizontal Partitioning Tuple#1 Tuple#2 Tuple#3 Store a table s attributes in a separate location (e.g., file, disk volume). Have to store tuple information to reconstruct the original record. Partition #1 Partition #2 revid pageid updated revid pageid updated revid pageid updated content Tuple#1... content Tuple#2... content Tuple#3... Divide the tuples of a table up into disjoint segments based on some partitioning key. Hash Partitioning Range Partitioning Predicate Partitioning We will cover this more in depth when we talk about distributed databases. Tuple#4 revid pageid updated content Tuple#4... 49 Faloutsos/Pavlo 15-415/615 50 Horizontal Partitioning (Postgres) Today s Class CREATE TABLE revisions ( revid INT PRIMARY KEY, pageid INT REFERENCES pages (pageid), updated DATETIME CREATE TABLE CREATE revdata TABLE ( revdatanew ( revid INT revid REFERENCES INT REFERENCES revisions revisions (revid), (revid), content TEXT, content TEXT islatest BOOLEAN DEFAULT true Still need triggers to move data between partitions on update. CREATE TABLE revdataold ( CREATE revid TABLE INT revdatanew REFERENCES ( revisions CREATE (revid), TABLE revdataold ( CHECK content (islatest TEXT = true) CHECK (islatest = false) ) INHERITS revdata; ) INHERITS revdata; 51 Introduction Index Selection Denormalization Decomposition Partitioning Advanced Topics Faloutsos/Pavlo 15-415/615 52

Caching Auto-Tuning Queries for content that does not change often slow down the database. Use external cache to store objects. Memcached, Facebook Tao Application has to maintain consistency. Vendors include tools that can help with the physical design process: IBM DB2 Advisor Microsoft AutoAdmin Oracle SQL Tuning Advisor Random MySQL/Postgres tools Still a very manual process. We are working on something better Faloutsos/Pavlo 15-415/615 53 Faloutsos/Pavlo 15-415/615 54 Next Three Weeks Database System Internals Concurrency Control Logging & Recovery Distributed DBMSs Column Store DBMSs Faloutsos/Pavlo 15-415/615 56