SlideShare a Scribd company logo
HOWDAH
                             A tutorial




Tuesday, October 20, 2009
Why?
                 Howdah is for people who really “get” databases

                 Howdah treats your database as code. Procedures,
                 and hand-written SQL.

                 Would you automate python generation? Then why
                 SQL?

                 Just because it’s not code you’re comfortable with,
                 doesn’t make it any less code.


                                         2

Tuesday, October 20, 2009
What shall we build?


                 Today, we’ll be talking about designing and
                 implementing a Wiki.




                                         3

Tuesday, October 20, 2009
Why a Wiki?

                 Canonical example

                 Simple enough to define in an afternoon

                 Complex enough to require in-depth exploration




                                       4

Tuesday, October 20, 2009
Why a Wiki?


                 Public and Private permissions/users

                 Read/write collaborative model




                                         5

Tuesday, October 20, 2009
Design vs. Code


                 Speaking more on Design than on Code

                 Why is more important than How.

                 How is still important




                                          6

Tuesday, October 20, 2009
STEP 1:
                            DESIGN


                               7

Tuesday, October 20, 2009
Database



                 What do we need?




                                    8

Tuesday, October 20, 2009
Application



                 What do we need?




                                    9

Tuesday, October 20, 2009
Application


                 What do we need?

                 Anything else? Did we miss anything?




                                        10

Tuesday, October 20, 2009
STEP 2:
                            REVISIT


                               11

Tuesday, October 20, 2009
Database


                 Based on our Application design, what expansions do
                 we need?




                                        12

Tuesday, October 20, 2009
Database


                 Based on our Application design, what expansions do
                 we need?

                 Why do we need them?




                                        13

Tuesday, October 20, 2009
Application



                 With the new DB features, what changes?




                                       14

Tuesday, October 20, 2009
Application


                 With the new DB features, what changes?

                 What new ideas are evident?




                                       15

Tuesday, October 20, 2009
Application


                 With the new DB features, what changes?

                 What new ideas are evident?

                 Do the changes make things easier?




                                        16

Tuesday, October 20, 2009
STEP 3:
                       API CONTRACTS


                             17

Tuesday, October 20, 2009
Database
                            Defining our API


                 What stored procedures do we need?




                                       18

Tuesday, October 20, 2009
Database
                            Defining our API


                 What stored procedures do we need?

                 What should they do?




                                        19

Tuesday, October 20, 2009
Database
                            Defining our API


                 What exceptions do we need?




                                      20

Tuesday, October 20, 2009
Database
                            Defining our API

                 What exceptions do we need?

                     Null data

                     Bad data

                     No such record




                                      21

Tuesday, October 20, 2009
Application
                            Defining our API


                 What models do we need?




                                      22

Tuesday, October 20, 2009
Application
                            Defining our API


                 What exceptions do we need?




                                      23

Tuesday, October 20, 2009
Application
                            Defining our API

                 What exceptions do we need?

                     What do DB exceptions become?

                     What HTTP responses should the exceptions
                     raise?




                                        24

Tuesday, October 20, 2009
Application
                            Defining our API


                 What views do we need?




                                      25

Tuesday, October 20, 2009
Application
                            Defining our API


                 What views do we need?

                     What views are read-only? Read-write? Write-only?




                                          26

Tuesday, October 20, 2009
STEP 4:
                    FIRST EXPANSION
                         USERS


                            27

Tuesday, October 20, 2009
Database
                                 Users


                 User system!




                                   28

Tuesday, October 20, 2009
Database
                                 Users


                 User system!

                 VerticallyChallenged for users




                                         29

Tuesday, October 20, 2009
Database
                                 Users

                 User system!

                 VerticallyChallenged for users

                     How to set up VC




                                         30

Tuesday, October 20, 2009
Database
                                Users


                 Stored Procedures - How do we adapt them?

                 How does this affect our API contract?




                                       31

Tuesday, October 20, 2009
Application
                              Users


                 Using @needs to define permissions

                 How should views be protected?




                                       32

Tuesday, October 20, 2009
Application
                               Users

                 Using @needs to define permissions

                 How should views be protected?

                 Should anonymous users have write permission?




                                       33

Tuesday, October 20, 2009
Application
                                 Users

                 Permissions violations

                     What should no user return?

                     What should a bad user return?

                     What should insufficient permissions return?




                                          34

Tuesday, October 20, 2009
Application
                              Users


                 Why - Are there better mechanisms?




                                       35

Tuesday, October 20, 2009
STEP 5:
                    ADMINISTRATIVE
                        USERS


                            36

Tuesday, October 20, 2009
Database
                            Administrators

                 What delineates an admin?

                 What special things can an admin do?

                 Should admins be otherwise normal users?




                                       37

Tuesday, October 20, 2009
Database
                            Administrators

                 Root-level permissions:

                 Should the database superuser ever be allowed to log
                 in from the web app?




                                           38

Tuesday, October 20, 2009
Database
                            Administrators

                 Root-level permissions:

                 Should the database superuser ever be allowed to log
                 in from the web app?

                     Why?




                                           39

Tuesday, October 20, 2009
Application
                            Administrators


                 What delineates an Admin?




                                      40

Tuesday, October 20, 2009
Application
                            Administrators
                 Design

                     Are there special admin-only views?

                     How do we protect admin privileges?

                     Are there user-specific views? Do admins have
                     permission to access those?

                     Is anything changed by the DB layer?


                                          41

Tuesday, October 20, 2009
Application
                            Administrators


                 Should administrators be able to view everything?




                                       42

Tuesday, October 20, 2009
Application
                            Administrators

                 Should administrators be able to view everything?

                     What about privileged information?

                     HIPAA, lawyer confidentiality




                                         43

Tuesday, October 20, 2009
Application
                            Administrators
                 Should administrators be able to view everything?

                     What about privileged information?

                     HIPAA, lawyer confidentiality

                 How can we protect privileged information like this?

                 Can we ever guarantee protection? How?



                                         44

Tuesday, October 20, 2009
STEP 6:
                        A NEW FEATURE


                              45

Tuesday, October 20, 2009
A New Feature


                 Let’s add a user profile page

                     Specifically list the pages that a user has edited




                                           46

Tuesday, October 20, 2009
Database
                            A New Feature


                 Design first!




                                  47

Tuesday, October 20, 2009
Database
                            A New Feature
                 Design first!

                 Do we need new stored procedures?

                     What are they?

                     Who has access to them?

                 Does this require write access?



                                         48

Tuesday, October 20, 2009
Application
                            A New Feature


                 What does the app need to support this?




                                       49

Tuesday, October 20, 2009
Application
                            A New Feature


                 What does the app need to support this?

                 What views do we need?




                                       50

Tuesday, October 20, 2009
Application
                            A New Feature

                 What does the app need to support this?

                 What views do we need?

                     Who has access to the views?

                     Logged-in users only?




                                             51

Tuesday, October 20, 2009
Application
                            A New Feature


                 What about security and data confidentiality?

                 What security issues could be present?




                                        52

Tuesday, October 20, 2009
Application
                            A New Feature

                 What about security and data confidentiality?

                 What security issues could be present?

                     Do we list entries that a user may not have read
                     access to?




                                           53

Tuesday, October 20, 2009
Application
                            A New Feature
                 What about security and data confidentiality?

                 What security issues could be present?

                     Do we list entries that a user may not have read
                     access to?

                     Should we list nothing, instead?

                 Why do it like this? Are there better solutions?


                                           54

Tuesday, October 20, 2009

More Related Content

PDF
Making everything better with OSGi - a happy case study in building a really ...
PDF
Chad Udell - Developers are from Mars, Designers are from Venus
PDF
RIAction 2010 - Love hate relationship of Zopim and Flex
PDF
Informativo "Atitude Jovem" - 2ª edição
PDF
Efectes de l'abús tecnològic en la psique humana pdf
PPTX
Brand Launch Jolly Mac Valino
PDF
Jornal_Plural
PDF
Jornal Atitude Jovem 3ª edição
Making everything better with OSGi - a happy case study in building a really ...
Chad Udell - Developers are from Mars, Designers are from Venus
RIAction 2010 - Love hate relationship of Zopim and Flex
Informativo "Atitude Jovem" - 2ª edição
Efectes de l'abús tecnològic en la psique humana pdf
Brand Launch Jolly Mac Valino
Jornal_Plural
Jornal Atitude Jovem 3ª edição

Similar to Howdah (20)

PDF
Vertically Challenged
PDF
Exceptable
PDF
Lowering IT Costs with a Standards-based Platform for Web 2.0 Initiatives: A...
PDF
Webhooks - glue for the web
KEY
Investing in open source hw
PDF
The Future Of Dm
KEY
Nanite (And An Introduction To Cloud Computing)
PDF
Open Video And Metadata Presentation
PDF
Why Architecture Matters
PDF
Cloudera Desktop
PDF
MATI 2009 Conference: CAT Tools
PDF
Holland Exibition Promotion
PDF
Don Schwarz App Engine Talk
PDF
Content Management Selection and Strategy
PDF
Ibuildings Cms Talk
PDF
Why Web Projects Fail
PDF
Joi's talk at the QRCE
PDF
Spring Integration
PDF
Rabo Ridderkerk
PDF
Vincent Everts @rabobank RMIJ
Vertically Challenged
Exceptable
Lowering IT Costs with a Standards-based Platform for Web 2.0 Initiatives: A...
Webhooks - glue for the web
Investing in open source hw
The Future Of Dm
Nanite (And An Introduction To Cloud Computing)
Open Video And Metadata Presentation
Why Architecture Matters
Cloudera Desktop
MATI 2009 Conference: CAT Tools
Holland Exibition Promotion
Don Schwarz App Engine Talk
Content Management Selection and Strategy
Ibuildings Cms Talk
Why Web Projects Fail
Joi's talk at the QRCE
Spring Integration
Rabo Ridderkerk
Vincent Everts @rabobank RMIJ
Ad

Recently uploaded (20)

PPTX
A Presentation on Artificial Intelligence
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
Encapsulation theory and applications.pdf
PDF
Accuracy of neural networks in brain wave diagnosis of schizophrenia
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Web App vs Mobile App What Should You Build First.pdf
PPTX
OMC Textile Division Presentation 2021.pptx
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
project resource management chapter-09.pdf
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
August Patch Tuesday
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PDF
Enhancing emotion recognition model for a student engagement use case through...
PDF
A comparative study of natural language inference in Swahili using monolingua...
A Presentation on Artificial Intelligence
SOPHOS-XG Firewall Administrator PPT.pptx
Encapsulation theory and applications.pdf
Accuracy of neural networks in brain wave diagnosis of schizophrenia
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Group 1 Presentation -Planning and Decision Making .pptx
Web App vs Mobile App What Should You Build First.pdf
OMC Textile Division Presentation 2021.pptx
NewMind AI Weekly Chronicles - August'25-Week II
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
project resource management chapter-09.pdf
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
Building Integrated photovoltaic BIPV_UPV.pdf
Assigned Numbers - 2025 - Bluetooth® Document
August Patch Tuesday
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
Enhancing emotion recognition model for a student engagement use case through...
A comparative study of natural language inference in Swahili using monolingua...
Ad

Howdah

  • 1. HOWDAH A tutorial Tuesday, October 20, 2009
  • 2. Why? Howdah is for people who really “get” databases Howdah treats your database as code. Procedures, and hand-written SQL. Would you automate python generation? Then why SQL? Just because it’s not code you’re comfortable with, doesn’t make it any less code. 2 Tuesday, October 20, 2009
  • 3. What shall we build? Today, we’ll be talking about designing and implementing a Wiki. 3 Tuesday, October 20, 2009
  • 4. Why a Wiki? Canonical example Simple enough to define in an afternoon Complex enough to require in-depth exploration 4 Tuesday, October 20, 2009
  • 5. Why a Wiki? Public and Private permissions/users Read/write collaborative model 5 Tuesday, October 20, 2009
  • 6. Design vs. Code Speaking more on Design than on Code Why is more important than How. How is still important 6 Tuesday, October 20, 2009
  • 7. STEP 1: DESIGN 7 Tuesday, October 20, 2009
  • 8. Database What do we need? 8 Tuesday, October 20, 2009
  • 9. Application What do we need? 9 Tuesday, October 20, 2009
  • 10. Application What do we need? Anything else? Did we miss anything? 10 Tuesday, October 20, 2009
  • 11. STEP 2: REVISIT 11 Tuesday, October 20, 2009
  • 12. Database Based on our Application design, what expansions do we need? 12 Tuesday, October 20, 2009
  • 13. Database Based on our Application design, what expansions do we need? Why do we need them? 13 Tuesday, October 20, 2009
  • 14. Application With the new DB features, what changes? 14 Tuesday, October 20, 2009
  • 15. Application With the new DB features, what changes? What new ideas are evident? 15 Tuesday, October 20, 2009
  • 16. Application With the new DB features, what changes? What new ideas are evident? Do the changes make things easier? 16 Tuesday, October 20, 2009
  • 17. STEP 3: API CONTRACTS 17 Tuesday, October 20, 2009
  • 18. Database Defining our API What stored procedures do we need? 18 Tuesday, October 20, 2009
  • 19. Database Defining our API What stored procedures do we need? What should they do? 19 Tuesday, October 20, 2009
  • 20. Database Defining our API What exceptions do we need? 20 Tuesday, October 20, 2009
  • 21. Database Defining our API What exceptions do we need? Null data Bad data No such record 21 Tuesday, October 20, 2009
  • 22. Application Defining our API What models do we need? 22 Tuesday, October 20, 2009
  • 23. Application Defining our API What exceptions do we need? 23 Tuesday, October 20, 2009
  • 24. Application Defining our API What exceptions do we need? What do DB exceptions become? What HTTP responses should the exceptions raise? 24 Tuesday, October 20, 2009
  • 25. Application Defining our API What views do we need? 25 Tuesday, October 20, 2009
  • 26. Application Defining our API What views do we need? What views are read-only? Read-write? Write-only? 26 Tuesday, October 20, 2009
  • 27. STEP 4: FIRST EXPANSION USERS 27 Tuesday, October 20, 2009
  • 28. Database Users User system! 28 Tuesday, October 20, 2009
  • 29. Database Users User system! VerticallyChallenged for users 29 Tuesday, October 20, 2009
  • 30. Database Users User system! VerticallyChallenged for users How to set up VC 30 Tuesday, October 20, 2009
  • 31. Database Users Stored Procedures - How do we adapt them? How does this affect our API contract? 31 Tuesday, October 20, 2009
  • 32. Application Users Using @needs to define permissions How should views be protected? 32 Tuesday, October 20, 2009
  • 33. Application Users Using @needs to define permissions How should views be protected? Should anonymous users have write permission? 33 Tuesday, October 20, 2009
  • 34. Application Users Permissions violations What should no user return? What should a bad user return? What should insufficient permissions return? 34 Tuesday, October 20, 2009
  • 35. Application Users Why - Are there better mechanisms? 35 Tuesday, October 20, 2009
  • 36. STEP 5: ADMINISTRATIVE USERS 36 Tuesday, October 20, 2009
  • 37. Database Administrators What delineates an admin? What special things can an admin do? Should admins be otherwise normal users? 37 Tuesday, October 20, 2009
  • 38. Database Administrators Root-level permissions: Should the database superuser ever be allowed to log in from the web app? 38 Tuesday, October 20, 2009
  • 39. Database Administrators Root-level permissions: Should the database superuser ever be allowed to log in from the web app? Why? 39 Tuesday, October 20, 2009
  • 40. Application Administrators What delineates an Admin? 40 Tuesday, October 20, 2009
  • 41. Application Administrators Design Are there special admin-only views? How do we protect admin privileges? Are there user-specific views? Do admins have permission to access those? Is anything changed by the DB layer? 41 Tuesday, October 20, 2009
  • 42. Application Administrators Should administrators be able to view everything? 42 Tuesday, October 20, 2009
  • 43. Application Administrators Should administrators be able to view everything? What about privileged information? HIPAA, lawyer confidentiality 43 Tuesday, October 20, 2009
  • 44. Application Administrators Should administrators be able to view everything? What about privileged information? HIPAA, lawyer confidentiality How can we protect privileged information like this? Can we ever guarantee protection? How? 44 Tuesday, October 20, 2009
  • 45. STEP 6: A NEW FEATURE 45 Tuesday, October 20, 2009
  • 46. A New Feature Let’s add a user profile page Specifically list the pages that a user has edited 46 Tuesday, October 20, 2009
  • 47. Database A New Feature Design first! 47 Tuesday, October 20, 2009
  • 48. Database A New Feature Design first! Do we need new stored procedures? What are they? Who has access to them? Does this require write access? 48 Tuesday, October 20, 2009
  • 49. Application A New Feature What does the app need to support this? 49 Tuesday, October 20, 2009
  • 50. Application A New Feature What does the app need to support this? What views do we need? 50 Tuesday, October 20, 2009
  • 51. Application A New Feature What does the app need to support this? What views do we need? Who has access to the views? Logged-in users only? 51 Tuesday, October 20, 2009
  • 52. Application A New Feature What about security and data confidentiality? What security issues could be present? 52 Tuesday, October 20, 2009
  • 53. Application A New Feature What about security and data confidentiality? What security issues could be present? Do we list entries that a user may not have read access to? 53 Tuesday, October 20, 2009
  • 54. Application A New Feature What about security and data confidentiality? What security issues could be present? Do we list entries that a user may not have read access to? Should we list nothing, instead? Why do it like this? Are there better solutions? 54 Tuesday, October 20, 2009