rapid data modeling for mobile – connect silicon valley 2017
TRANSCRIPT
![Page 1: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/1.jpg)
Rapid Data Modeling and Testing
AARON BENTON
![Page 3: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/3.jpg)
![Page 4: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/4.jpg)
+
Couchbase Server Couchbase Mobile
![Page 5: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/5.jpg)
Use Cases
• Mobile
• Caching
• User Tracking
• Media
• Short Urls
• Products
• Session Management
![Page 6: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/6.jpg)
• How is data represented?
• How are models
communicated?
• How are models
documented?
• How are data types
defined?
![Page 7: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/7.jpg)
First, solve the problem. Then, write the code.“ ”- John Johnson
![Page 8: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/8.jpg)
Data Modeling
![Page 9: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/9.jpg)
Conceptual Data Modeling
Entity Names
Entity Relationships
Users Products
Line Items
Orders
![Page 10: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/10.jpg)
Logical Data Modeling
Entity Names
Entity Attributes
Entity Relationships
UsersUser ID (PK)
Username
Password
First Name
Last Name
Address
City
State
Zip Code
Country
Phone
OrdersOrder ID (PK)
Order Number
User ID (FK)
Order Date
Address
City
State
Zip Code
Country
Phone
Credit Card
Expiration Date
Order Line
ItemsOrder ID (FK)
Product ID (FK)
Quantity
Total
Products
Product ID (PK)
Product Name
Description
Price
![Page 11: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/11.jpg)
Physical Data ModelingEntity Names -> Table NamesEntity Attributes -> Field NamesEntity Relationships -> KeysPrimary / Foreign KeysData Types
![Page 12: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/12.jpg)
NoSql Modeling
• How do you represent a model?
• What tools do you use?
• How do you show relationships?
• Does code define the model?
• What key patterns should be used?
![Page 13: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/13.jpg)
JSON
![Page 14: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/14.jpg)
JSON Schema
![Page 15: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/15.jpg)
YAML
![Page 16: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/16.jpg)
Now What?
![Page 17: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/17.jpg)
START DEVELOPMENT!
![Page 18: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/18.jpg)
FAKE DATA
![Page 19: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/19.jpg)
WASTED TIME
![Page 20: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/20.jpg)
![Page 21: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/21.jpg)
Fake Data Generators• FakerJS
• ChanceJS
• json-generator.com
• objgen.com/json
• mockaroo.com
• jsonschema.net
![Page 22: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/22.jpg)
Relationships are Hard
![Page 23: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/23.jpg)
FakeIT
![Page 24: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/24.jpg)
Fakeit
• CLI Tool inspired by Swagger
• Models defined in YAML
• Generates JSON, CSON, YAML, CSV
• Exports to Couchbase, Sync Gateway, Zip,
Console
![Page 25: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/25.jpg)
Fakeit Data
• Exposes FakerJS and ChanceJS
• Custom Build Functions w/ Pre and Post
• Multiple Models
• Dependencies
• Definitions
*fakeit is for structure, cbworkloadgen is for sizing
![Page 26: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/26.jpg)
npm install fakeit -g
![Page 27: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/27.jpg)
Original YAML Model
![Page 28: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/28.jpg)
Simple Model
28
Data Attribute
![Page 29: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/29.jpg)
Console Output
![Page 30: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/30.jpg)
File Output
![Page 31: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/31.jpg)
Output Formats
![Page 32: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/32.jpg)
CSV Output
![Page 33: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/33.jpg)
Zip Archive
![Page 34: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/34.jpg)
![Page 35: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/35.jpg)
Couchbase
![Page 36: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/36.jpg)
What about Mobile…?
![Page 37: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/37.jpg)
Sync Gateway
![Page 38: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/38.jpg)
Channel Property
![Page 39: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/39.jpg)
Sync Gateway with Auth
![Page 40: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/40.jpg)
How does it Work?
![Page 41: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/41.jpg)
Property Data:
value
• A static value to be used
• Executed at build time
fake
• A FakerJS template string
• Executed at build time
pre_build
• Function body used to initialize
a property
• Property is set to the returned
value
build
• Function body used to set a
property
• Property is set to the returned
value
post_build
• Function body used to
manipulate a property after it
has been set
• Property is set to the returned
value
pre_run
• Function body that is executed
before any models are
generated
post_run
• Function body that is executed
before after all models have
been generated
![Page 42: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/42.jpg)
![Page 43: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/43.jpg)
Flow
Model
Pre_RUNModel
PRE_BUILD
Initialize
Property
Value
(EACH)
Start
Document
Run
Property
PRE_BUILD
+ BUILD
(EACH)
PROPERTY
POST_BUIL
D (EACH)
MODEL
POST_BUIL
D
MODEL
POST_RUN
![Page 44: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/44.jpg)
Flow
![Page 45: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/45.jpg)
Flow
![Page 46: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/46.jpg)
![Page 47: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/47.jpg)
Multiple Models
![Page 48: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/48.jpg)
Multiple Models
![Page 49: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/49.jpg)
Dependencies
Users Products Reviews Orders
![Page 50: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/50.jpg)
Dependencies
![Page 51: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/51.jpg)
Dependencies
![Page 52: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/52.jpg)
Dependencies with Single Output
![Page 53: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/53.jpg)
Definitions
![Page 54: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/54.jpg)
Definitions
![Page 55: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/55.jpg)
![Page 56: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/56.jpg)
continents.json countries.csv
Inputs
![Page 57: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/57.jpg)
continents.json countries.csv
Inputs
![Page 58: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/58.jpg)
![Page 59: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/59.jpg)
Require
![Page 60: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/60.jpg)
Require
![Page 61: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/61.jpg)
![Page 62: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/62.jpg)
Seeds
![Page 63: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/63.jpg)
Seeds
![Page 64: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/64.jpg)
![Page 65: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/65.jpg)
JS API
![Page 66: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/66.jpg)
JS API Options
![Page 67: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/67.jpg)
How we use FakeIt• YAML models store in the repository
• Make commands to generate data
• Docker Compose:
• Couchbase
• Sync Gateway
• Testing / QA
![Page 68: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/68.jpg)
Demos
![Page 69: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/69.jpg)
Fakeit Examples• Contacts
• Ecommerce
• Flat
• Flight Data
• Music
• Simple
• Social
bit.ly/fakeit-examples
![Page 70: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/70.jpg)
Questions?
![Page 71: Rapid data modeling for mobile – Connect Silicon Valley 2017](https://reader034.vdocuments.us/reader034/viewer/2022051710/5a64880b7f8b9a94568b4993/html5/thumbnails/71.jpg)
HOW TO CONTACT MEDon’t hesitate to contact with me.
I will be happy to answer your questions.
TWITTER: @bentonam
github.com/bentonam
EMAIL: [email protected]
Thank You!