Extremesalesforcedatavolumes final-130220113913-phpapp02

Preview:

Citation preview

Extreme Salesforce Data Volumes Force.com Architecture Best Practices

From salesforce.com’s Customer Centric Engineering – Technical Enablement team

Join the conversation: #forcewebinar

Safe harbor Safe harbor statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-looking statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services. The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of intellectual property and other litigation, risks associated with possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-Q for the most recent fiscal quarter ended July 31, 2012. This documents and others containing important disclosures are available on the SEC Filings section of the Investor Information section of our Web site. Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.

Join the conversation: #forcewebinar Join the conversation: #forcewebinar

Bud Vieira

Architect Evangelist @aavra

Steve Bobrowski

Architect Evangelist @sbob909

Speakers

Join the conversation: #forcewebinar

Follow Developer Force for the latest news

@forcedotcom / #forcewebinar

Developer Force group

Developer Force – Force.com Community

+Developer Force – Force.com Community

Developer Force

Join the conversation: #forcewebinar

Architect Core Resource page

•  Featured content for architects •  Articles, papers, blog posts, events

•  Follow us on Twitter

Updated weekly!

http://developer.force.com/architect

Join the conversation: #forcewebinar Join the conversation: #forcewebinar

Have questions?

§  We have an expert support team at the ready to answer your questions during the webinar.

§  Ask your questions via the GoToWebinar Questions Pane.

§  The speaker(s) will choose top questions to answer live at the end of the webinar.

§  Please post your questions as we go along!

§  Only post your question once; we’ll get to it as we go down the list.

Join the conversation: #forcewebinar Join the conversation: #forcewebinar

Today’s Learning Goal

AWARENESS

Join the conversation: #forcewebinar

You might be surprised!

How much data can the Salesforce Platform handle?

Join the conversation: #forcewebinar Join the conversation: #forcewebinar

Best practices Configure Maintain Load Design

Join the conversation: #forcewebinar Join the conversation: #forcewebinar

Design best practices

Join the conversation: #forcewebinar

Design phase best practices

Requirements� Data volume and growth�

Query �design�

Text �searching �

Join the conversation: #forcewebinar

Requirements

Join the conversation: #forcewebinar

Understand application and user requirements

How many records make

sense in each list view and report?�

How much operational data

is really necessary?�

Can you deem �certain data

historical or not useful for views

and reports?�

Join the conversation: #forcewebinar

Example: Design list views that make sense

How many pages of data records can a human process?

Join the conversation: #forcewebinar Join the conversation: #forcewebinar

Data volume and growth

Join the conversation: #forcewebinar

Estimate the growth and volume of data

At what rate will the data volume increase from transactions?

From data loads?�

Can you offset the data growth

by archiving data? Hard-

deletes? Recycle bin empties? �

Can you eliminate certain types of data from your schema? From

your data loads?�

Join the conversation: #forcewebinar

Example: Project monthly and annual growth

Large Object X (Monthly) Transaction growth rate •  Records •  GB Data load growth rate •  Records •  GB Archival offset •  Records •  GB

Join the conversation: #forcewebinar

Key success factor: Minimize data volume

Devise a data loading plan �

that meets, but doesn’t exceed, requirements�

After archiving, �hard-delete rows

or empty the recycle bin�

Devise a data offloading plan �that archives

unnecessary data�

Join the conversation: #forcewebinar Join the conversation: #forcewebinar

Query design

Join the conversation: #forcewebinar

Learn how to design efficient queries

Document available �indexes�

Design selective list views,

reports, and SOQL queries�

Understand �SOQL query optimization�

Join the conversation: #forcewebinar

Document available indexes

Join the conversation: #forcewebinar

Cheat Sheet: Indexed Fields

http://developer.force.com/architect

Join the conversation: #forcewebinar

Example: Design and profile selective SOQL

Join the conversation: #forcewebinar Join the conversation: #forcewebinar

Full-text search

Join the conversation: #forcewebinar

Learn how to design efficient searches

Document available �indexes�

Design selective list views,

reports, and SOSL queries�

Understand �SOSL query optimization�

Join the conversation: #forcewebinar

Document text fields with Search indexes

Join the conversation: #forcewebinar

Cheat Sheet: Search Fields

http://developer.force.com/architect

Join the conversation: #forcewebinar

Learn how Search retrieves rows

DB

INDEX

DB processing includes sharing access check

Millions of

records

Query across entire index for matches to search string

Record IDs of matches to query are sent to DB for processing

Join the conversation: #forcewebinar

Review: Design phase best practices

ü Know your requirements ü Estimate data growth rate ü Minimize data volume

ü Design efficient operations ü Plan an efficient sharing model

Join the conversation: #forcewebinar Join the conversation: #forcewebinar

Data load best practices

Join the conversation: #forcewebinar

Data load best practices

Clean and organize data before loading �

Use Bulk APIs for better

throughput�

Check out AppExchange

tools�

Disable and defer what you can�

Join the conversation: #forcewebinar

Prepare your data to avoid overhead

Join the conversation: #forcewebinar

Disable actions that fire on insert

Triggers

Workflow Rules

Validation Rules

Join the conversation: #forcewebinar

Understand the Force.com Bulk API

Join the conversation: #forcewebinar

Be aware of Bulk API limits

Join the conversation: #forcewebinar

Look for utilities to help get the job done easy

Join the conversation: #forcewebinar

Defer sharing calculations

Or … load with Public default sharing

Join the conversation: #forcewebinar

Review: Data load phase best practices

ü  Load cleansed data ü Use the Bulk API ü Consider loading utilities that use the Bulk API

ü Disable triggers, validations, and workflow ü Defer sharing calculations

Join the conversation: #forcewebinar Join the conversation: #forcewebinar

Configuration best practices

Join the conversation: #forcewebinar

Learn how to create an efficient sharing model

Distribute ownership and parenting of

records�

Streamline group nesting and your �role hierarchy�

Beware of locking on updates�

Don’t overprotect your data�

Join the conversation: #forcewebinar

Don’t overprotect your data

Join the conversation: #forcewebinar

Streamline your role Hierarchy

Complex hierarchies = longer sharing calculations Keep nesting below 10 levels Simplify sales branch if using territory management

Join the conversation: #forcewebinar

Avoid skewed data configurations

Ownership Parent-child

Join the conversation: #forcewebinar

Beware of locking on updates

Organization Lock

X

X

Record Lock

Single thread group updates Use Granular Locking

Avoid parent child skew Sequence updates by ParentID

Join the conversation: #forcewebinar

Review: Configuration phase best practices

ü Keep data public when possible ü Use a lean role hierarchy ü Avoid data skews ü Minimize record lock traps

Join the conversation: #forcewebinar Join the conversation: #forcewebinar

Maintenance best practices

Join the conversation: #forcewebinar

Maintenance phase best practices

Custom indexing �

Data partitioning �

Skinny tables�Application�partitioning �

Join the conversation: #forcewebinar Join the conversation: #forcewebinar

Custom indexes

Join the conversation: #forcewebinar

Create your own indexes

Join the conversation: #forcewebinar

Request non-standard indexes

Create a Support request to implement custom one and two-field indexes

Join the conversation: #forcewebinar Join the conversation: #forcewebinar

Skinny tables

Join the conversation: #forcewebinar

Query tuning with skinny tables

Join the conversation: #forcewebinar Join the conversation: #forcewebinar

Data partitioning

Join the conversation: #forcewebinar

Test and implement divisions

Join the conversation: #forcewebinar Join the conversation: #forcewebinar

Application partitioning

Join the conversation: #forcewebinar

Leverage Salesforce Platform components

100010010

ETL process

Heroku app & database manages historical data

Force.com Canvas facilitates seamless, transparent integration of

operational & historical data

Lean Salesforce org manages operational data

Join the conversation: #forcewebinar Join the conversation: #forcewebinar

Demo

Integrated best practices

Join the conversation: #forcewebinar Join the conversation: #forcewebinar

Demo: Integrated best practices

ü Lean Salesforce database ü Archive historical data

ü Hard-delete archived records

ü  Leverage external application (Heroku) for analytics ü  Integrate UIs using Force.com Canvas

Join the conversation: #forcewebinar

Additional Resources

More Best Practices @

Architect Core Resources

http://developer.force.com/architect