get your database under control

39
Grant Fritchey | Red Gate Software Team-based Development with Version Control

Upload: grant-fritchey

Post on 15-Nov-2014

229 views

Category:

Software


3 download

DESCRIPTION

Developers don’t even question the need for source control as part of their application life cycle management. But DBAs and database developers just don’t look at their databases in the same way as code. However, if you want to get good coordination between your application code and database, if you want to start to automate your database deployments, you need to treat your database like code. This session will demonstrate different mechanisms for getting a database into source control in order to begin to control your database in the same way you control your code.

TRANSCRIPT

Page 1: Get Your Database Under Control

Grant Fritchey | Red Gate Software

Team-based Development with

Version Control

Page 2: Get Your Database Under Control

Get in touch Grant Fritchey

scarydba.com

[email protected]

@gfritchey

2

Page 3: Get Your Database Under Control

Goals

• Understand the value of version/source control for databases

• Learn the tools, standards, patterns and best practices needed to manage a database from source control

• Identify the necessary flow within a team needed to develop a database with source control

3

Page 4: Get Your Database Under Control

HOW MANY OF YOU USE VERSION CONTROL FOR YOURAPPLICATION CODE?

C#, ASP.NET, Javascript, VB.NET, etc.

4

Page 5: Get Your Database Under Control

HOW MANY OF YOU USE VERSION CONTROL FOR YOURAPPLICATION CODE?database

5

Page 6: Get Your Database Under Control

Developers who refuse to use source/version

control should be fired, simple as that.

6

Page 7: Get Your Database Under Control

Isn’t this too much trouble for my crappy

experimental program?

7

Page 8: Get Your Database Under Control

Use source control because neither you nor

your developers are perfect.

8

Page 9: Get Your Database Under Control

There are no excuses where you should

not use it.

9

Page 10: Get Your Database Under Control

If it’s not in source control, it doesn’t exist.

10

Page 11: Get Your Database Under Control

“…your database should always

be under source control right

next to your application code.”

11

Page 12: Get Your Database Under Control

12

Page 13: Get Your Database Under Control

Reducing Risk

13

Page 14: Get Your Database Under Control

You’re using version control

14

Page 15: Get Your Database Under Control

You’re using version control

15

Page 16: Get Your Database Under Control

Use Something

16

Page 17: Get Your Database Under Control

GETTING STARTED WITH DATABASES IN VCS

Demo

17

Page 18: Get Your Database Under Control

Additional Reasons for Source Control

• Backup & Restore

• Undo

• Audit changes

• Sandbox

• Branching/Merging

18

Page 19: Get Your Database Under Control

Rules for Database Development

19

Never use a shared database for development.

Always Have a Single, Authoritative Source

For Your Schema.

Always Version Your Database.

Page 20: Get Your Database Under Control

Dedicated or Shared Databases?

20

Page 21: Get Your Database Under Control

Shared databases are not wrong

21

Page 22: Get Your Database Under Control

The Ideal

• Each developer has a dedicated environment with a copy of the schema and minimal data.

• A shared integration environment where all developers’ changes are merged, available for developer testing.

22

Page 23: Get Your Database Under Control

Naming Standards

• Usually vary by company

• ISO 1179

• Be consistent

• Use tools for enforcement (SQLCop)

• Document these lightly and JIT

23

Page 24: Get Your Database Under Control

Style Standards

• Vary by individual

• Make code more readable.

• Use tools to re-format code to your liking.

– SQL Prompt

– SSMS Tools Pack

– Others

24

Page 25: Get Your Database Under Control

Teamwork

25

Page 26: Get Your Database Under Control

Teamwork

• Communication

– Team members need to be aware of (easily) what

others are doing.

• Coordination

– Teams need to work in a way that complements

each other.

26

Page 27: Get Your Database Under Control

THE FLOW WITHIN TEAMSDemo

27

Page 28: Get Your Database Under Control

Automation is Best

28

Page 29: Get Your Database Under Control

Use Automation

• Development systems and tools need to work

for the team, not against them.

• Many IDEs and tools work well in team

environments, if you configure them.

29

Page 30: Get Your Database Under Control

Get All Your Code

• Object DDL

• Assembly code

• Security code

• Configuration settings

• Jobs

• Lookup data

30

Page 31: Get Your Database Under Control

AUTOMATIONDemo

31

Page 32: Get Your Database Under Control

Best Practices

• Use version control for all code (including tests)

• Commit early, commit often

• Use tools

– If it’s hard, people don’t do it

• Train people

• Build often

32

Page 33: Get Your Database Under Control

Automation

Page 34: Get Your Database Under Control

Automation

deployment package

Page 35: Get Your Database Under Control

deployment package

1

2

3Back to

Development

FAIL

FAIL

FAIL

Page 36: Get Your Database Under Control

References

• http://stackoverflow.com/questions/115369/do-you-use-source-control-for-your-database-items

• http://www.codinghorror.com/blog/archives/001050.html

• http://www.codinghorror.com/blog/2008/02/get-your-database-under-version-control.html

• http://www.ssw.com.au/ssw/Standards/Rules/RulesToBetterSQLServerDatabases.aspx

• http://odetocode.com/blogs/scott/archive/2008/01/30/three-rules-for-database-work.aspx

• Check in early, check in often -http://www.codinghorror.com/blog/2008/08/check-in-early-check-in-often.html

• http://betterexplained.com/articles/a-visual-guide-to-version-control/

36

Page 39: Get Your Database Under Control

Get in touch Grant Fritchey

scarydba.com

[email protected]

@gfritchey

39