-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathoutput.txt
15 lines (15 loc) · 655 KB
/
output.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
({'is_archived': 1, 'all': ['1', '0', 'admin', '[email protected]', '1', 'sales.and.marketing', 'sales', 'sales-and-marketing', 'sales', '0', '14012', 'Business development vs sales: What’s the difference and which should you hire first?', 'https://blog.close.com/business-development-vs-sales', '<img src="https://blog.close.com/hs-fs/hubfs/Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg?width=700&name=Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg" alt="business-development-vs-sales" width="700" srcset="https://blog.close.com/hs-fs/hubfs/Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg?width=350&name=Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg 350w, https://blog.close.com/hs-fs/hubfs/Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg?width=700&name=Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg 700w, https://blog.close.com/hs-fs/hubfs/Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg?width=1050&name=Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg 1050w, https://blog.close.com/hs-fs/hubfs/Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg?width=1400&name=Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg 1400w, https://blog.close.com/hs-fs/hubfs/Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg?width=1750&name=Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg 1750w, https://blog.close.com/hs-fs/hubfs/Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg?width=2100&name=Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg 2100w" /><p>What’s the difference between business development and sales? Many founders we talk to believe the terms are interchangeable—simply two different ways to describe the same function… right? Not quite. Today, we’re talking <strong>business development vs sales</strong>.</p><p>Let’s start by clearly defining both <strong>business development and sales</strong>. Then, we’ll dig deeper into the differences, how they support each other, and which function needs to be your focus based on the stage your company is at today.</p><p><strong>Want to take your sales game to a new level? Get free access to our ultimate sales resource library today.</strong></p><p><a href="https://close.com/resources/startup-sales-resource-bundle/" class="button small primary" target="_blank">ACCESS THE COMPLETE SALES LIBRARY NOW</a></p><h3><strong>What is business development?</strong></h3><p><strong>The definition of business development is generating qualified new leads.</strong> The purpose of business development (in the context of a sales team—NOT in terms of product validation) is to research, prospect and create a pipeline of targeted potential customers to pass off to sales for further vetting and closing.</p><h3><strong>What is sales?</strong></h3><p><strong>The definition of sales is generating transactions.</strong> The sole focus of a mature sales team is to close deals with the qualified leads that are coming from either your business development efforts or other <a href="https://blog.close.com/lead-generation" rel="noopener" target="_blank">lead generation strategies</a> that are designed to start conversations with the right potential customers.</p><h3><strong>So… what’s the difference between business development and sales?</strong></h3><p>Put simply, business development comes first. It’s the act of generating well-researched, qualified leads to hand off to your sales team. <strong>Business development is all about generating leads</strong>, and the job titles most often associated with business development are roles like, Business Development Rep (BDR) or Sales Development Rep (SDR).</p><p>Sales comes second, and is wholly concerned with <a href="https://blog.close.com/close-sale" rel="noopener" target="_blank">closing a winning deal</a> with the qualified prospects that come from your organization’s business development activities. <strong>Sales is all about transactions.</strong> Titles for sales roles vary widely, but typically form around phrases like Sales Representative, Account Manager or Account Executive.\xa0</p><p>Moreover, when you’re <a href="https://blog.close.com/sales-management-new-managers-guide-to-building-a-sales-team" rel="noopener" target="_blank">building a sales team</a> from the ground up, it can be difficult to decide which role (business development vs sales) you should hire first—or to bring on more of in the early days.</p><p>The answer, as with most things in business, is… well, <em>it depends</em>.</p><p>Now that you’ve got a clear definition of the difference between business development and sales, start by first asking yourself which one sounds like a higher priority within your organization right now. Which role do you truly need today?\xa0</p><p>If you’ve gotten clear market validation for your solution and are consistently closing a high proportion of the prospects you speak with, but just need a higher volume of leads to continue flowing through your pipeline, then hiring a business development rep and training them on how to prospect for the right leads should be your number one priority.</p><p>If you have more qualified inbound leads than you know what to do with, but you simply don’t have enough time to follow up with every lead, schedule a meeting, do a demo and close the deal, then your focus should be on getting more sales reps on board who can help close more of your hot leads.</p><p>Sounds pretty straightforward, but the reality is that it can take a while to get to this stage.</p><p>In the earlier phases of your business (or before acquiring funding as a startup), it’s natural for founders and other members of the team to take on both business development and sales-related responsibilities while resources are constrained before <a href="https://blog.close.com/sales-hiring-101-for-startups">sales hiring</a> becomes a viable option.</p><p>As long as the founder-driven sales stage is working well and your revenue is growing, that’s ok for a while.\xa0</p><p>Over time though, the separation of the two roles should become more pronounced and specialized as your business begins to scale and you can afford to invest in better solving your bigger problem—generating more leads or bringing on salespeople to close more of the leads you already have.</p><h2><strong>Why you need to separate business development and sales</strong></h2><p>Let’s examine a few of the critical reasons why your business stands to benefit immensely by separating the roles of business development and sales.</p><h3><strong>Creating domain expertise in your organization</strong></h3><p>Since the advent of the world’s first automobile manufacturing lines in the early 1900’s, <a href="https://www.investopedia.com/terms/s/specialization.asp" rel="noopener" target="_blank">labor specialization</a> has proliferated into countless other industries with massively positive effects.</p><p><strong>Division of labor:</strong> Known as the separation of tasks within any system, the primary goal of clearly dividing tasks within your sales team, is to allow individuals to specialize within their roles.</p><p>Anyone who spends the majority of their day executing the same sets of tasks (that ladder up to a very clear goal) is likely going to build expertise much quicker than their counterparts who spend the day task-switching between multiple different roles and goals.\xa0</p><p>Separating business development and sales within your organization is no exception. When you allow members of your sales team to focus solely on either prospecting or closing, they’ll develop a level of expertise at their role that’s otherwise very difficult to achieve.</p><p>Instead of splitting their time (and mental capacity), or task-switching throughout their entire day, your business development reps are able to focus on doing everything they can to bring more qualified prospects into the company’s pipeline. Conversely, your sales reps are empowered to work on nothing but the key activities in <a href="https://blog.close.com/how-to-build-a-sales-process-that-gets-results" rel="noopener" target="_blank">your sales process</a> that are proven to close more deals and generate transactions.\xa0</p><p>Creating an environment that accelerates the development of expertise is priceless in terms of organizational benefits—you’ll be able to generate more leads <em>and</em> close more of them.</p><h3><strong>Individual productivity gains</strong></h3><p>We touched on this briefly in the context of rapidly building expertise within your sales organization as a result of separating business development and sales, but it’s worth highlighting the productivity gains your team will experience at the individual level too.</p><p>When you have salespeople that are also doing their own prospecting (researching, qualifying, initial outreach), their calendars can quickly fill up with a myriad of different activities like conducting research, <a href="https://blog.close.com/b2b-cold-calling-tips" rel="noopener" target="_blank">cold calling</a> from a list of inbound leads and <a href="https://blog.close.com/5-cold-email-templates-that-will-generate-warm-leads-for-your-sales-team" rel="noopener" target="_blank">sending cold emails</a> to prospects. Their calendars can quickly look like…</p><p><img src="https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg?width=800&name=Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg" alt="sales-cognitive-switching" width="800" srcset="https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg?width=400&name=Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg 400w, https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg?width=800&name=Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg 800w, https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg?width=1200&name=Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg 1200w, https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg?width=1600&name=Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg 1600w, https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg?width=2000&name=Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg 2000w, https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg?width=2400&name=Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg 2400w" /></p><p>Known as <a href="https://en.wikipedia.org/wiki/Cognitive_shifting" rel="noopener" target="_blank">cognitive switching</a>, the act of consciously switching from one task to another within your day can leave you mentally exhausted. On top of that, studies <a href="http://www.apa.org/research/action/multitask.aspx" rel="noopener" target="_blank">have shown</a> the quality of your work declines dramatically the more frequently you switch between tasks.</p><p>Psychologist <a href="https://lsa.umich.edu/psych/people/faculty/demeyer.html" rel="noopener" target="_blank">David Meyer, PhD</a>, director of the University of Michigan\'s Brain, Cognition, and Action Laboratory explains, “Although switching costs may be relatively small, sometimes just a few tenths of a second per switch, they can add up to large amounts when people switch repeatedly back and forth between tasks. Thus, multitasking may seem efficient on the surface, but may actually take more time in the end and involve more error.”\xa0</p><p>Meyer reports that even brief mental blocks created by shifting between tasks <strong>can cost as much as 40%</strong> of someone\'s productive time in a given day—time that you can’t afford to lose in a startup or SMB.</p><p>When you separate the responsibilities of business development and sales within your organization, you’re grouping similar activities together and making individuals responsible for a limited set of goals that are directly impacted by the activities they’re expected to do on a daily basis (having a clear connection to impact being <a href="https://open.buffer.com/meaningful-work/" rel="noopener" target="_blank">one of the three things</a> that make work most meaningful).</p><p>That elimination of multiple different types of goals allows members of your sales team to work on fewer tasks—thus empowering them to execute on single tasks for focused blocks of time. Which allows their calendars to look much more like…\xa0\xa0</p><p><img src="https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg?width=1000&name=Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg" alt="dream-calendar-for-business-dev-rep" width="1000" srcset="https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg?width=500&name=Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg 500w, https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg?width=1000&name=Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg 1000w, https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg?width=1500&name=Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg 1500w, https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg?width=2000&name=Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg 2000w, https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg?width=2500&name=Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg 2500w, https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg?width=3000&name=Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg 3000w" /></p><p>The fewer objectives your individual contributors (both in business development and sales roles) are responsible for delivering against, the more they’ll be able to focus on excelling and being more productive on the limited tasks at hand.</p><h3><strong>Business development requires more effort than it used to</strong></h3><p>The core functions of business development haven’t changed much in recent years, but the process of prospecting and qualifying leads<em> has</em> become much more nuanced.\xa0\xa0\xa0</p><p>Business development roles are still charged with two main responsibilities:</p><ul><li><strong>Prospecting:</strong> Identifying companies and people that may be interested in purchasing your product or service</li>\n<li><strong>Qualifying:</strong> Determining if your prospect is ready, willing and able to buy\xa0</li>\n</ul><p>Once a lead is qualified and has a strong likelihood of converting into becoming a paying customer, they’re passed off to the sales team for closing (and if need be <a href="https://blog.close.com/negotiate" rel="noopener" target="_blank">negotiating</a> the terms of the contract).</p><p>This means that business development reps do not <em>ideally</em> have quotas. They’re responsible for bringing in enough qualified leads to generate a certain amount of revenue, but actually <a href="https://blog.close.com/close-sale" rel="noopener" target="_blank">closing the sale</a> and turning leads into customers is beyond their direct control.</p><p><strong>So, what’s changed in the world of business development?</strong></p><p>It’s become increasingly difficult to reach decision-makers and to engage them the way they want, when they want. Hell, I can’t even remember the last time I answered a call from a number I didn’t recognize—let alone respond to unsolicited sales emails.\xa0</p><p>The proliferation of conversational sales and marketing tools like <a href="https://www.drift.com/" rel="noopener" target="_blank">Drift</a> are proof of this dramatic shift. Your customers time is valuable, and giving them the ability to control when and how they interact with you is a serious experience upgrade, therefore your <a href="https://blog.close.com/create-sales-plan" rel="noopener" target="_blank">sales plan</a> needs to grow and adapt with this shift.\xa0</p><p>Beyond just better managing the experience of your inbound leads, it also takes more time to adequately research prospects, and requires more touch points on a lead in order to capture their attention.</p><p>Business development is more about relationship-building than ever, making it a standalone full-time position on any sales team.</p><p>At the end of the day, it’s not a smart investment to have someone responsible for a new deal quota, shifting gears between prospecting, demoing and closing within their work day.</p><h2><strong>How business development and sales work together (4 common questions)</strong></h2><p>Now that we’re clear about the separation between business development vs sales, let’s talk about how the two roles should best work collaboratively together, for maximum effectiveness on your sales team.</p><h3><strong>1. When should business development pass a lead on to sales?</strong></h3><p>Your sales team has quotas they need to hit, which means they can’t waste time talking to prospects that aren’t already <a href="https://blog.close.com/qualify" rel="noopener" target="_blank">well-qualified.</a> Otherwise, they\'ll be wasting time and energy chasing the wrong leads and diluting their close rate.</p><p>Business development reps should pass a lead on to sales <strong>as soon as they’re qualified</strong>. However, that doesn’t mean business development teams and sales teams shouldn’t have a collaborative work relationship.</p><p><a href="https://www.wework.com/" rel="noopener" target="_blank">WeWork</a> VP of Business Development, <a href="http://startofthedeal.com/" rel="noopener" target="_blank">Scott Pollack</a> explains, “business development teams should be identifying, evaluating, and pursuing opportunities to create long-term value for a company. This means BD teams and sales teams should happily coexist—the sales team gets to work on closing opportunities that can drive revenue <em>today</em>, while the BD team focuses their attention on opportunities to open new channels and drive a flood of new leads for tomorrow.”</p><p>As Pollack suggests, it’s incredibly important that business development teams focus their time, effort and energy on building relationships only with the most qualified leads that stand a chance of becoming happy customers. Then, they’re worthy of being handed off to sales.</p><p>How do you know when a lead is fully qualified and ready to be closed? That can vary a bit based on the type of product you’re selling and the market you’re serving, but starting with choosing from these <a href="https://resources.close.com/qualifying-questions" rel="noopener" target="_blank">42 B2B qualifying questions</a> to ask your prospects won’t hurt.\xa0</p><p>In order to qualify your prospects, you’ll want to accurately gauge how well they match your <a href="https://sixteenventures.com/ideal-customer-profile" rel="noopener" target="_blank">ideal customer profile</a> with key information around company size, location and industry.\xa0</p><p>Next, you want to assess their needs to make sure there’s a true use case for your product, develop an understanding of their purchasing process to make sure it’s a match with your selling process, and assess other competitive options they may be considering.</p><p>If everything checks out and the prospect still appears to be a strong potential customer, then they’re qualified—and ready to be closed by your sales team.</p><h3><strong>2. Should there be overlap between business development and sales?</strong></h3><p>In terms of day-to-day activities? <strong>No, not really</strong>.</p><p>Business development should be wholly tasked with prospecting and qualifying. Sales should be focused only on closing those qualified leads and generating transactions.</p><p>However, your business development reps and sales reps <em>do</em> need to be on the same page about who your ideal customers are—their characteristics, qualities and the kinds of problems your offering can best help them with.</p><p>Due to the rapidly changing environment in startups, this requires frequent cross-team collaboration.</p><p>As <a href="https://www.creativelive.com/" rel="noopener" target="_blank">CreativeLive</a> Director of Partnerships and Business Development, <a href="https://www.linkedin.com/in/kimberlyannmurphy/" rel="noopener" target="_blank">Kimberly Pousman</a> explains, “there not only <em>should be</em> overlap between business development and sales, but there <em>needs to be</em> overlap, whether you personally want it or not.”\xa0</p><p>Pousman continues, “One of the keys to being great in either a business development or sales role, is asking the right questions. When you’re looking to grow and expand, you need to ask the right questions, experiment and actively source feedback from others—so if your teams are operating in a silo, they’ll miss out on valuable opportunities to learn from each other and advance your growth rate.”</p><p>Furthermore, the downstream effect is that if this alignment between business development and sales teams isn’t up to par, your sales reps are going to have a difficult time closing enough deals with the leads they’ve got, which leads to frustration and a close rate below the <a href="https://www.pointclear.com/blog/what-should-the-sales-close-rate-be" rel="noopener" target="_blank">20-30% industry average</a> for SaaS.</p><p>If your sales team’s close rate is below 20%, they’re either not closing as well as they should, or your leads aren’t qualified enough.</p><h3><strong>3. What’s the difference in the day-to-day activities of business development reps and sales reps?</strong></h3><p>While the responsibilities of a business development rep can vary a bit based on the unique needs and internal demands of an organization, in general they’re responsible for two main tasks that sit at the core of this role:</p><ul><li><strong>Managing inbound leads:</strong> This translates into working through an internal list, <a href="https://blog.close.com/qualify" rel="noopener" target="_blank">qualifying leads</a> from various marketing campaigns and classifying the right ones as sales opportunities to be passed on to the sales team for further vetting and closing.</li>\n<li><strong>Leading outbound prospecting:</strong> On the flip side, this kind of outreach involves researching and contacting potential customers that haven’t proactively expressed interest in your product through cold calls and cold emails—with the goal of qualifying sales opportunities for your sales team.\xa0</li>\n</ul><p>On the inbound side of things, business development reps sit metaphorically between marketing and sales, filtering marketing leads and qualifying them before assigning them to the right sales rep that can move on to <a href="https://blog.close.com/close-sale" rel="noopener" target="_blank">close the sale</a>.</p><p>When it comes to outbound, business development reps need to first go through your organization’s <a href="https://blog.close.com/unstoppable-sales-team" rel="noopener" target="_blank">sales training</a> process so that they have a clear picture of who your ideal customers are before they go out and begin starting conversations with prospects. Depending upon the size of your company, your business development reps may or may not start with the beginning task of researching prospects before sending an email or calling.</p><p>Ultimately though, the goal of any outbound business development work is to start a conversation and <a href="https://www.forbes.com/sites/samanthaharrington/2017/05/26/how-to-create-strong-sales-relationships/" rel="noopener" target="_blank">develop a relationship</a> that can be passed on to sales for closing. Everything a business development rep does, should revolve around finding more prospects, qualifying the right ones and routing them to your sales team for closing.</p><p><strong>Now, let’s talk about the responsibilities of sales reps.</strong></p><p>Keeping in mind slight differences to match your unique internal needs, most sales representatives are charged with the following main responsibilities:</p><ul><li><strong>Selling:</strong> Closing deals (ideally with pre-qualified leads from your business development team to save time) using solid arguments and <a href="https://blog.close.com/10-objection-handling-techniques-every-b2b-salesperson-should-know" rel="noopener" target="_blank">objection management</a> with prospective customers.</li>\n<li><strong>Maintaining relationships:</strong> Although a prospect might not be a fit to purchase your product or service today, that doesn’t mean they won’t be in a completely different position 6 months or a year from now—so keeping in touch with leads to encourage future sales is a major part of a sales rep’s responsibilities.</li>\n</ul><p>Most sales representative roles work against a <a href="https://blog.close.com/end-of-year-sales" rel="noopener" target="_blank">sales quota</a>—a thoughtfully calculated monthly or quarterly minimum for the number of customers (or revenue figure) they’re responsible to close. Sales reps are often incentivized with increasing levels of bonus payouts for hitting and exceeding quota within a given period.</p><p>The intense focus on hitting specific customer or revenue benchmarks each quarter is very intentionally designed to encourage sales reps to spend all of their time only on revenue-driving activities. More meetings. More product demos. More sales calls with qualified leads. More contracts sent out for approval. More <a href="https://blog.close.com/follow-up" rel="noopener" target="_blank">follow up emails</a> delivered.</p><p>In a mature sales organization, that means sales reps are empowered to spend less (or zero) time researching prospects, qualifying leads, and booking meetings. Those are activities a business development rep should be helping out with.</p><h3><strong>4. How does a business development call (or email) differ from that of a sales rep?</strong></h3><p>The biggest difference between the calls and emails that business development reps send vs those of a sales rep, is that most business development activities are done toward either completely or relatively <em>cold</em> prospects—meaning that these prospects have likely had little to no interaction with the company before this initial contact is made.\xa0</p><p>That’s when brushing up on your <a href="https://blog.close.com/5-cold-email-templates-that-will-generate-warm-leads-for-your-sales-team" rel="noopener" target="_blank">cold emails</a> and <a href="https://blog.close.com/b2b-cold-calling-tips" rel="noopener" target="_blank">cold calling</a> skills come into play.</p><p>By the time a sales rep is brought on to an account, the relationship has already been established and the lead is qualified, making the communications much more <em>warm</em> than those of a business development rep. The conversation with a sales rep is about how to make a mutually beneficial deal happen, rather than gauging the initial interest or need.</p><h2><strong>Bonus: The key traits you need to look for in every business development (and sales) hire</strong></h2><p>Bringing the right business development and salespeople onto your sales team is crucial in making meaningful progress toward growing your business. If your candidates don’t exhibit these key traits, our advice is to keep searching for the right people that <em>will</em> have a positive impact on your team.</p><h3><strong>Communication and people skills</strong></h3><p>If you hope to cultivate strong relationships with prospects and customers alike, having strong communication and people skills—like the ability to lead a friendly <a href="https://blog.close.com/negotiate" rel="noopener" target="_blank">negotiation</a> from start to finish so that the new customers you bring on are pleased with their decision, is crucial.</p><p>Navigating the process of converting a lead into a paying customer requires the ability to empathize; to fully understand your prospect’s situation and the use case they’ll have for your product to make sure that they’ll truly benefit from your offering.</p><h3><strong>Hunger and drive</strong></h3><p>The most successful salespeople (and business development reps) have an internal drive that pushes them forward and propels them to achieve their sales goals.</p><p>\xa0In the face of a challenge, they’re not discouraged—rather, they look forward to the opportunity to excel, surpass previous expectations and move up to the next level. They’re often incentivized by the prospect of <a href="https://www.ryrob.com/make-money-online/" rel="noopener" target="_blank">earning more money</a>, and respond well to financial rewards for performance improvements.</p><h3><strong>Discipline and confidence</strong></h3><p>Discipline and the confidence in your process beats motivation every single day of the week when you’ve just gotten ten rejections in a row. No matter how skilled or experience you are, in sales there will be moments of defeat that can drain your motivation levels.</p><p>The best salespeople know that sales is a numbers game, and that the only way to recover from rejection & failure is to pick up the phone (or get back into your email) and keep executing. Having the right tools and systems, like our <a href="https://close.com/calling/automation/power-dialer/" rel="noopener" target="_blank">Power Dialer</a> will also help keep your team on track and reaching peak productivity levels each day.</p><h3><strong>They’re consultants at heart</strong></h3><p>Just because a salesperson has mastered every tactic in the book and can sell ice to an eskimo doesn’t mean they’re going to bring in customers that’ll <em>still be happy</em> with their purchase decision one, three, six months down the line.</p><p>When hiring a business development or sales rep, look for people that view their role as partnering with prospects to make sure there’s a mutual win-win in each potential deal—ensuring that the customer has a genuine need for the product and that they’re actually a fit for your ideal customer persona of people and companies you want to serve in the first place.</p><p><strong>Want to take your sales game to a new level? Get free access to our ultimate sales resource library today.</strong></p><p><a href="https://close.com/resources/startup-sales-resource-bundle/" class="button small primary" target="_blank">ACCESS THE COMPLETE SALES LIBRARY NOW</a></p>', "What’s the difference between business development and sales? Many founders we talk to believe the terms are interchangeable—simply two different ways to describe the same function… right? Not quite. Today, we’re talking business development vs sales . Let’s start by clearly defining both business development and sales . Then, we’ll dig deeper into the differences, how they support each other, and which function needs to be your focus based on the stage your company is at today. Want to take your sales game to a new level? Get free access to our ultimate sales resource library today. ACCESS THE COMPLETE SALES LIBRARY NOW What is business development? The definition of business development is generating qualified new leads. The purpose of business development (in the context of a sales team—NOT in terms of product validation) is to research, prospect and create a pipeline of targeted potential customers to pass off to sales for further vetting and closing. What is sales? The definition of sales is generating transactions. The sole focus of a mature sales team is to close deals with the qualified leads that are coming from either your business development efforts or other lead generation strategies that are designed to start conversations with the right potential customers. So… what’s the difference between business development and sales? Put simply, business development comes first. It’s the act of generating well-researched, qualified leads to hand off to your sales team. Business development is all about generating leads , and the job titles most often associated with business development are roles like, Business Development Rep (BDR) or Sales Development Rep (SDR). Sales comes second, and is wholly concerned with closing a winning deal with the qualified prospects that come from your organization’s business development activities. Sales is all about transactions. Titles for sales roles vary widely, but typically form around phrases like Sales Representative, Account Manager or Account Executive. Moreover, when you’re building a sales team from the ground up, it can be difficult to decide which role (business development vs sales) you should hire first—or to bring on more of in the early days. The answer, as with most things in business, is… well, it depends . Now that you’ve got a clear definition of the difference between business development and sales, start by first asking yourself which one sounds like a higher priority within your organization right now. Which role do you truly need today? If you’ve gotten clear market validation for your solution and are consistently closing a high proportion of the prospects you speak with, but just need a higher volume of leads to continue flowing through your pipeline, then hiring a business development rep and training them on how to prospect for the right leads should be your number one priority. If you have more qualified inbound leads than you know what to do with, but you simply don’t have enough time to follow up with every lead, schedule a meeting, do a demo and close the deal, then your focus should be on getting more sales reps on board who can help close more of your hot leads. Sounds pretty straightforward, but the reality is that it can take a while to get to this stage. In the earlier phases of your business (or before acquiring funding as a startup), it’s natural for founders and other members of the team to take on both business development and sales-related responsibilities while resources are constrained before sales hiring becomes a viable option. As long as the founder-driven sales stage is working well and your revenue is growing, that’s ok for a while. Over time though, the separation of the two roles should become more pronounced and specialized as your business begins to scale and you can afford to invest in better solving your bigger problem—generating more leads or bringing on salespeople to close more of the leads you already have. Why you need to separate business development and sales Let’s examine a few of the critical reasons why your business stands to benefit immensely by separating the roles of business development and sales. Creating domain expertise in your organization Since the advent of the world’s first automobile manufacturing lines in the early 1900’s, labor specialization has proliferated into countless other industries with massively positive effects. Division of labor: Known as the separation of tasks within any system, the primary goal of clearly dividing tasks within your sales team, is to allow individuals to specialize within their roles. Anyone who spends the majority of their day executing the same sets of tasks (that ladder up to a very clear goal) is likely going to build expertise much quicker than their counterparts who spend the day task-switching between multiple different roles and goals. Separating business development and sales within your organization is no exception. When you allow members of your sales team to focus solely on either prospecting or closing, they’ll develop a level of expertise at their role that’s otherwise very difficult to achieve. Instead of splitting their time (and mental capacity), or task-switching throughout their entire day, your business development reps are able to focus on doing everything they can to bring more qualified prospects into the company’s pipeline. Conversely, your sales reps are empowered to work on nothing but the key activities in your sales process that are proven to close more deals and generate transactions. Creating an environment that accelerates the development of expertise is priceless in terms of organizational benefits—you’ll be able to generate more leads and close more of them. Individual productivity gains We touched on this briefly in the context of rapidly building expertise within your sales organization as a result of separating business development and sales, but it’s worth highlighting the productivity gains your team will experience at the individual level too. When you have salespeople that are also doing their own prospecting (researching, qualifying, initial outreach), their calendars can quickly fill up with a myriad of different activities like conducting research, cold calling from a list of inbound leads and sending cold emails to prospects. Their calendars can quickly look like… Known as cognitive switching , the act of consciously switching from one task to another within your day can leave you mentally exhausted. On top of that, studies have shown the quality of your work declines dramatically the more frequently you switch between tasks. Psychologist David Meyer, PhD , director of the University of Michigan's Brain, Cognition, and Action Laboratory explains, “Although switching costs may be relatively small, sometimes just a few tenths of a second per switch, they can add up to large amounts when people switch repeatedly back and forth between tasks. Thus, multitasking may seem efficient on the surface, but may actually take more time in the end and involve more error.” Meyer reports that even brief mental blocks created by shifting between tasks can cost as much as 40% of someone's productive time in a given day—time that you can’t afford to lose in a startup or SMB. When you separate the responsibilities of business development and sales within your organization, you’re grouping similar activities together and making individuals responsible for a limited set of goals that are directly impacted by the activities they’re expected to do on a daily basis (having a clear connection to impact being one of the three things that make work most meaningful). That elimination of multiple different types of goals allows members of your sales team to work on fewer tasks—thus empowering them to execute on single tasks for focused blocks of time. Which allows their calendars to look much more like… The fewer objectives your individual contributors (both in business development and sales roles) are responsible for delivering against, the more they’ll be able to focus on excelling and being more productive on the limited tasks at hand. Business development requires more effort than it used to The core functions of business development haven’t changed much in recent years, but the process of prospecting and qualifying leads has become much more nuanced. Business development roles are still charged with two main responsibilities: Prospecting: Identifying companies and people that may be interested in purchasing your product or service Qualifying: Determining if your prospect is ready, willing and able to buy Once a lead is qualified and has a strong likelihood of converting into becoming a paying customer, they’re passed off to the sales team for closing (and if need be negotiating the terms of the contract). This means that business development reps do not ideally have quotas. They’re responsible for bringing in enough qualified leads to generate a certain amount of revenue, but actually closing the sale and turning leads into customers is beyond their direct control. So, what’s changed in the world of business development? It’s become increasingly difficult to reach decision-makers and to engage them the way they want, when they want. Hell, I can’t even remember the last time I answered a call from a number I didn’t recognize—let alone respond to unsolicited sales emails. The proliferation of conversational sales and marketing tools like Drift are proof of this dramatic shift. Your customers time is valuable, and giving them the ability to control when and how they interact with you is a serious experience upgrade, therefore your sales plan needs to grow and adapt with this shift. Beyond just better managing the experience of your inbound leads, it also takes more time to adequately research prospects, and requires more touch points on a lead in order to capture their attention. Business development is more about relationship-building than ever, making it a standalone full-time position on any sales team. At the end of the day, it’s not a smart investment to have someone responsible for a new deal quota, shifting gears between prospecting, demoing and closing within their work day. How business development and sales work together (4 common questions) Now that we’re clear about the separation between business development vs sales, let’s talk about how the two roles should best work collaboratively together, for maximum effectiveness on your sales team. 1. When should business development pass a lead on to sales? Your sales team has quotas they need to hit, which means they can’t waste time talking to prospects that aren’t already well-qualified. Otherwise, they'll be wasting time and energy chasing the wrong leads and diluting their close rate. Business development reps should pass a lead on to sales as soon as they’re qualified . However, that doesn’t mean business development teams and sales teams shouldn’t have a collaborative work relationship. WeWork VP of Business Development, Scott Pollack explains, “business development teams should be identifying, evaluating, and pursuing opportunities to create long-term value for a company. This means BD teams and sales teams should happily coexist—the sales team gets to work on closing opportunities that can drive revenue today , while the BD team focuses their attention on opportunities to open new channels and drive a flood of new leads for tomorrow.” As Pollack suggests, it’s incredibly important that business development teams focus their time, effort and energy on building relationships only with the most qualified leads that stand a chance of becoming happy customers. Then, they’re worthy of being handed off to sales. How do you know when a lead is fully qualified and ready to be closed? That can vary a bit based on the type of product you’re selling and the market you’re serving, but starting with choosing from these 42 B2B qualifying questions to ask your prospects won’t hurt. In order to qualify your prospects, you’ll want to accurately gauge how well they match your ideal customer profile with key information around company size, location and industry. Next, you want to assess their needs to make sure there’s a true use case for your product, develop an understanding of their purchasing process to make sure it’s a match with your selling process, and assess other competitive options they may be considering. If everything checks out and the prospect still appears to be a strong potential customer, then they’re qualified—and ready to be closed by your sales team. 2. Should there be overlap between business development and sales? In terms of day-to-day activities? No, not really . Business development should be wholly tasked with prospecting and qualifying. Sales should be focused only on closing those qualified leads and generating transactions. However, your business development reps and sales reps do need to be on the same page about who your ideal customers are—their characteristics, qualities and the kinds of problems your offering can best help them with. Due to the rapidly changing environment in startups, this requires frequent cross-team collaboration. As CreativeLive Director of Partnerships and Business Development, Kimberly Pousman explains, “there not only should be overlap between business development and sales, but there needs to be overlap, whether you personally want it or not.” Pousman continues, “One of the keys to being great in either a business development or sales role, is asking the right questions. When you’re looking to grow and expand, you need to ask the right questions, experiment and actively source feedback from others—so if your teams are operating in a silo, they’ll miss out on valuable opportunities to learn from each other and advance your growth rate.” Furthermore, the downstream effect is that if this alignment between business development and sales teams isn’t up to par, your sales reps are going to have a difficult time closing enough deals with the leads they’ve got, which leads to frustration and a close rate below the 20-30% industry average for SaaS. If your sales team’s close rate is below 20%, they’re either not closing as well as they should, or your leads aren’t qualified enough. 3. What’s the difference in the day-to-day activities of business development reps and sales reps? While the responsibilities of a business development rep can vary a bit based on the unique needs and internal demands of an organization, in general they’re responsible for two main tasks that sit at the core of this role: Managing inbound leads: This translates into working through an internal list, qualifying leads from various marketing campaigns and classifying the right ones as sales opportunities to be passed on to the sales team for further vetting and closing. Leading outbound prospecting: On the flip side, this kind of outreach involves researching and contacting potential customers that haven’t proactively expressed interest in your product through cold calls and cold emails—with the goal of qualifying sales opportunities for your sales team. On the inbound side of things, business development reps sit metaphorically between marketing and sales, filtering marketing leads and qualifying them before assigning them to the right sales rep that can move on to close the sale . When it comes to outbound, business development reps need to first go through your organization’s sales training process so that they have a clear picture of who your ideal customers are before they go out and begin starting conversations with prospects. Depending upon the size of your company, your business development reps may or may not start with the beginning task of researching prospects before sending an email or calling. Ultimately though, the goal of any outbound business development work is to start a conversation and develop a relationship that can be passed on to sales for closing. Everything a business development rep does, should revolve around finding more prospects, qualifying the right ones and routing them to your sales team for closing. Now, let’s talk about the responsibilities of sales reps. Keeping in mind slight differences to match your unique internal needs, most sales representatives are charged with the following main responsibilities: Selling: Closing deals (ideally with pre-qualified leads from your business development team to save time) using solid arguments and objection management with prospective customers. Maintaining relationships: Although a prospect might not be a fit to purchase your product or service today, that doesn’t mean they won’t be in a completely different position 6 months or a year from now—so keeping in touch with leads to encourage future sales is a major part of a sales rep’s responsibilities. Most sales representative roles work against a sales quota —a thoughtfully calculated monthly or quarterly minimum for the number of customers (or revenue figure) they’re responsible to close. Sales reps are often incentivized with increasing levels of bonus payouts for hitting and exceeding quota within a given period. The intense focus on hitting specific customer or revenue benchmarks each quarter is very intentionally designed to encourage sales reps to spend all of their time only on revenue-driving activities. More meetings. More product demos. More sales calls with qualified leads. More contracts sent out for approval. More follow up emails delivered. In a mature sales organization, that means sales reps are empowered to spend less (or zero) time researching prospects, qualifying leads, and booking meetings. Those are activities a business development rep should be helping out with. 4. How does a business development call (or email) differ from that of a sales rep? The biggest difference between the calls and emails that business development reps send vs those of a sales rep, is that most business development activities are done toward either completely or relatively cold prospects—meaning that these prospects have likely had little to no interaction with the company before this initial contact is made. That’s when brushing up on your cold emails and cold calling skills come into play. By the time a sales rep is brought on to an account, the relationship has already been established and the lead is qualified, making the communications much more warm than those of a business development rep. The conversation with a sales rep is about how to make a mutually beneficial deal happen, rather than gauging the initial interest or need. Bonus: The key traits you need to look for in every business development (and sales) hire Bringing the right business development and salespeople onto your sales team is crucial in making meaningful progress toward growing your business. If your candidates don’t exhibit these key traits, our advice is to keep searching for the right people that will have a positive impact on your team. Communication and people skills If you hope to cultivate strong relationships with prospects and customers alike, having strong communication and people skills—like the ability to lead a friendly negotiation from start to finish so that the new customers you bring on are pleased with their decision, is crucial. Navigating the process of converting a lead into a paying customer requires the ability to empathize; to fully understand your prospect’s situation and the use case they’ll have for your product to make sure that they’ll truly benefit from your offering. Hunger and drive The most successful salespeople (and business development reps) have an internal drive that pushes them forward and propels them to achieve their sales goals. In the face of a challenge, they’re not discouraged—rather, they look forward to the opportunity to excel, surpass previous expectations and move up to the next level. They’re often incentivized by the prospect of earning more money , and respond well to financial rewards for performance improvements. Discipline and confidence Discipline and the confidence in your process beats motivation every single day of the week when you’ve just gotten ten rejections in a row. No matter how skilled or experience you are, in sales there will be moments of defeat that can drain your motivation levels. The best salespeople know that sales is a numbers game, and that the only way to recover from rejection & failure is to pick up the phone (or get back into your email) and keep executing. Having the right tools and systems, like our Power Dialer will also help keep your team on track and reaching peak productivity levels each day. They’re consultants at heart Just because a salesperson has mastered every tactic in the book and can sell ice to an eskimo doesn’t mean they’re going to bring in customers that’ll still be happy with their purchase decision one, three, six months down the line. When hiring a business development or sales rep, look for people that view their role as partnering with prospects to make sure there’s a mutual win-win in each potential deal—ensuring that the customer has a genuine need for the product and that they’re actually a fit for your ideal customer persona of people and companies you want to serve in the first place. Want to take your sales game to a new level? Get free access to our ultimate sales resource library today. ACCESS THE COMPLETE SALES LIBRARY NOW", 'Fri Aug 02 21:45:12 UTC 2019', 'Fri Aug 02 21:45:18 UTC 2019', 'text/html', 'en', '17', 'blog.close.com', 'https://blog.close.com/hubfs/Business%20Development%20vs%20Sales%20What%27s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-1.jpg#keepProtocol', '200', '/api/entries/14012', '1641690266207256576'], 'is_starred': 0, 'user_name': 'admin', 'user_email': '[email protected]', 'user_id': 1, 'tags': ['sales.and.marketing', 'sales'], 'slugs': ['sales-and-marketing', 'sales'], 'is_public': False, 'id': '14012', 'title': 'Business development vs sales: What’s the difference and which should you hire first?', 'url': 'https://blog.close.com/business-development-vs-sales', 'content_text': "What’s the difference between business development and sales? Many founders we talk to believe the terms are interchangeable—simply two different ways to describe the same function… right? Not quite. Today, we’re talking business development vs sales . Let’s start by clearly defining both business development and sales . Then, we’ll dig deeper into the differences, how they support each other, and which function needs to be your focus based on the stage your company is at today. Want to take your sales game to a new level? Get free access to our ultimate sales resource library today. ACCESS THE COMPLETE SALES LIBRARY NOW What is business development? The definition of business development is generating qualified new leads. The purpose of business development (in the context of a sales team—NOT in terms of product validation) is to research, prospect and create a pipeline of targeted potential customers to pass off to sales for further vetting and closing. What is sales? The definition of sales is generating transactions. The sole focus of a mature sales team is to close deals with the qualified leads that are coming from either your business development efforts or other lead generation strategies that are designed to start conversations with the right potential customers. So… what’s the difference between business development and sales? Put simply, business development comes first. It’s the act of generating well-researched, qualified leads to hand off to your sales team. Business development is all about generating leads , and the job titles most often associated with business development are roles like, Business Development Rep (BDR) or Sales Development Rep (SDR). Sales comes second, and is wholly concerned with closing a winning deal with the qualified prospects that come from your organization’s business development activities. Sales is all about transactions. Titles for sales roles vary widely, but typically form around phrases like Sales Representative, Account Manager or Account Executive. Moreover, when you’re building a sales team from the ground up, it can be difficult to decide which role (business development vs sales) you should hire first—or to bring on more of in the early days. The answer, as with most things in business, is… well, it depends . Now that you’ve got a clear definition of the difference between business development and sales, start by first asking yourself which one sounds like a higher priority within your organization right now. Which role do you truly need today? If you’ve gotten clear market validation for your solution and are consistently closing a high proportion of the prospects you speak with, but just need a higher volume of leads to continue flowing through your pipeline, then hiring a business development rep and training them on how to prospect for the right leads should be your number one priority. If you have more qualified inbound leads than you know what to do with, but you simply don’t have enough time to follow up with every lead, schedule a meeting, do a demo and close the deal, then your focus should be on getting more sales reps on board who can help close more of your hot leads. Sounds pretty straightforward, but the reality is that it can take a while to get to this stage. In the earlier phases of your business (or before acquiring funding as a startup), it’s natural for founders and other members of the team to take on both business development and sales-related responsibilities while resources are constrained before sales hiring becomes a viable option. As long as the founder-driven sales stage is working well and your revenue is growing, that’s ok for a while. Over time though, the separation of the two roles should become more pronounced and specialized as your business begins to scale and you can afford to invest in better solving your bigger problem—generating more leads or bringing on salespeople to close more of the leads you already have. Why you need to separate business development and sales Let’s examine a few of the critical reasons why your business stands to benefit immensely by separating the roles of business development and sales. Creating domain expertise in your organization Since the advent of the world’s first automobile manufacturing lines in the early 1900’s, labor specialization has proliferated into countless other industries with massively positive effects. Division of labor: Known as the separation of tasks within any system, the primary goal of clearly dividing tasks within your sales team, is to allow individuals to specialize within their roles. Anyone who spends the majority of their day executing the same sets of tasks (that ladder up to a very clear goal) is likely going to build expertise much quicker than their counterparts who spend the day task-switching between multiple different roles and goals. Separating business development and sales within your organization is no exception. When you allow members of your sales team to focus solely on either prospecting or closing, they’ll develop a level of expertise at their role that’s otherwise very difficult to achieve. Instead of splitting their time (and mental capacity), or task-switching throughout their entire day, your business development reps are able to focus on doing everything they can to bring more qualified prospects into the company’s pipeline. Conversely, your sales reps are empowered to work on nothing but the key activities in your sales process that are proven to close more deals and generate transactions. Creating an environment that accelerates the development of expertise is priceless in terms of organizational benefits—you’ll be able to generate more leads and close more of them. Individual productivity gains We touched on this briefly in the context of rapidly building expertise within your sales organization as a result of separating business development and sales, but it’s worth highlighting the productivity gains your team will experience at the individual level too. When you have salespeople that are also doing their own prospecting (researching, qualifying, initial outreach), their calendars can quickly fill up with a myriad of different activities like conducting research, cold calling from a list of inbound leads and sending cold emails to prospects. Their calendars can quickly look like… Known as cognitive switching , the act of consciously switching from one task to another within your day can leave you mentally exhausted. On top of that, studies have shown the quality of your work declines dramatically the more frequently you switch between tasks. Psychologist David Meyer, PhD , director of the University of Michigan's Brain, Cognition, and Action Laboratory explains, “Although switching costs may be relatively small, sometimes just a few tenths of a second per switch, they can add up to large amounts when people switch repeatedly back and forth between tasks. Thus, multitasking may seem efficient on the surface, but may actually take more time in the end and involve more error.” Meyer reports that even brief mental blocks created by shifting between tasks can cost as much as 40% of someone's productive time in a given day—time that you can’t afford to lose in a startup or SMB. When you separate the responsibilities of business development and sales within your organization, you’re grouping similar activities together and making individuals responsible for a limited set of goals that are directly impacted by the activities they’re expected to do on a daily basis (having a clear connection to impact being one of the three things that make work most meaningful). That elimination of multiple different types of goals allows members of your sales team to work on fewer tasks—thus empowering them to execute on single tasks for focused blocks of time. Which allows their calendars to look much more like… The fewer objectives your individual contributors (both in business development and sales roles) are responsible for delivering against, the more they’ll be able to focus on excelling and being more productive on the limited tasks at hand. Business development requires more effort than it used to The core functions of business development haven’t changed much in recent years, but the process of prospecting and qualifying leads has become much more nuanced. Business development roles are still charged with two main responsibilities: Prospecting: Identifying companies and people that may be interested in purchasing your product or service Qualifying: Determining if your prospect is ready, willing and able to buy Once a lead is qualified and has a strong likelihood of converting into becoming a paying customer, they’re passed off to the sales team for closing (and if need be negotiating the terms of the contract). This means that business development reps do not ideally have quotas. They’re responsible for bringing in enough qualified leads to generate a certain amount of revenue, but actually closing the sale and turning leads into customers is beyond their direct control. So, what’s changed in the world of business development? It’s become increasingly difficult to reach decision-makers and to engage them the way they want, when they want. Hell, I can’t even remember the last time I answered a call from a number I didn’t recognize—let alone respond to unsolicited sales emails. The proliferation of conversational sales and marketing tools like Drift are proof of this dramatic shift. Your customers time is valuable, and giving them the ability to control when and how they interact with you is a serious experience upgrade, therefore your sales plan needs to grow and adapt with this shift. Beyond just better managing the experience of your inbound leads, it also takes more time to adequately research prospects, and requires more touch points on a lead in order to capture their attention. Business development is more about relationship-building than ever, making it a standalone full-time position on any sales team. At the end of the day, it’s not a smart investment to have someone responsible for a new deal quota, shifting gears between prospecting, demoing and closing within their work day. How business development and sales work together (4 common questions) Now that we’re clear about the separation between business development vs sales, let’s talk about how the two roles should best work collaboratively together, for maximum effectiveness on your sales team. 1. When should business development pass a lead on to sales? Your sales team has quotas they need to hit, which means they can’t waste time talking to prospects that aren’t already well-qualified. Otherwise, they'll be wasting time and energy chasing the wrong leads and diluting their close rate. Business development reps should pass a lead on to sales as soon as they’re qualified . However, that doesn’t mean business development teams and sales teams shouldn’t have a collaborative work relationship. WeWork VP of Business Development, Scott Pollack explains, “business development teams should be identifying, evaluating, and pursuing opportunities to create long-term value for a company. This means BD teams and sales teams should happily coexist—the sales team gets to work on closing opportunities that can drive revenue today , while the BD team focuses their attention on opportunities to open new channels and drive a flood of new leads for tomorrow.” As Pollack suggests, it’s incredibly important that business development teams focus their time, effort and energy on building relationships only with the most qualified leads that stand a chance of becoming happy customers. Then, they’re worthy of being handed off to sales. How do you know when a lead is fully qualified and ready to be closed? That can vary a bit based on the type of product you’re selling and the market you’re serving, but starting with choosing from these 42 B2B qualifying questions to ask your prospects won’t hurt. In order to qualify your prospects, you’ll want to accurately gauge how well they match your ideal customer profile with key information around company size, location and industry. Next, you want to assess their needs to make sure there’s a true use case for your product, develop an understanding of their purchasing process to make sure it’s a match with your selling process, and assess other competitive options they may be considering. If everything checks out and the prospect still appears to be a strong potential customer, then they’re qualified—and ready to be closed by your sales team. 2. Should there be overlap between business development and sales? In terms of day-to-day activities? No, not really . Business development should be wholly tasked with prospecting and qualifying. Sales should be focused only on closing those qualified leads and generating transactions. However, your business development reps and sales reps do need to be on the same page about who your ideal customers are—their characteristics, qualities and the kinds of problems your offering can best help them with. Due to the rapidly changing environment in startups, this requires frequent cross-team collaboration. As CreativeLive Director of Partnerships and Business Development, Kimberly Pousman explains, “there not only should be overlap between business development and sales, but there needs to be overlap, whether you personally want it or not.” Pousman continues, “One of the keys to being great in either a business development or sales role, is asking the right questions. When you’re looking to grow and expand, you need to ask the right questions, experiment and actively source feedback from others—so if your teams are operating in a silo, they’ll miss out on valuable opportunities to learn from each other and advance your growth rate.” Furthermore, the downstream effect is that if this alignment between business development and sales teams isn’t up to par, your sales reps are going to have a difficult time closing enough deals with the leads they’ve got, which leads to frustration and a close rate below the 20-30% industry average for SaaS. If your sales team’s close rate is below 20%, they’re either not closing as well as they should, or your leads aren’t qualified enough. 3. What’s the difference in the day-to-day activities of business development reps and sales reps? While the responsibilities of a business development rep can vary a bit based on the unique needs and internal demands of an organization, in general they’re responsible for two main tasks that sit at the core of this role: Managing inbound leads: This translates into working through an internal list, qualifying leads from various marketing campaigns and classifying the right ones as sales opportunities to be passed on to the sales team for further vetting and closing. Leading outbound prospecting: On the flip side, this kind of outreach involves researching and contacting potential customers that haven’t proactively expressed interest in your product through cold calls and cold emails—with the goal of qualifying sales opportunities for your sales team. On the inbound side of things, business development reps sit metaphorically between marketing and sales, filtering marketing leads and qualifying them before assigning them to the right sales rep that can move on to close the sale . When it comes to outbound, business development reps need to first go through your organization’s sales training process so that they have a clear picture of who your ideal customers are before they go out and begin starting conversations with prospects. Depending upon the size of your company, your business development reps may or may not start with the beginning task of researching prospects before sending an email or calling. Ultimately though, the goal of any outbound business development work is to start a conversation and develop a relationship that can be passed on to sales for closing. Everything a business development rep does, should revolve around finding more prospects, qualifying the right ones and routing them to your sales team for closing. Now, let’s talk about the responsibilities of sales reps. Keeping in mind slight differences to match your unique internal needs, most sales representatives are charged with the following main responsibilities: Selling: Closing deals (ideally with pre-qualified leads from your business development team to save time) using solid arguments and objection management with prospective customers. Maintaining relationships: Although a prospect might not be a fit to purchase your product or service today, that doesn’t mean they won’t be in a completely different position 6 months or a year from now—so keeping in touch with leads to encourage future sales is a major part of a sales rep’s responsibilities. Most sales representative roles work against a sales quota —a thoughtfully calculated monthly or quarterly minimum for the number of customers (or revenue figure) they’re responsible to close. Sales reps are often incentivized with increasing levels of bonus payouts for hitting and exceeding quota within a given period. The intense focus on hitting specific customer or revenue benchmarks each quarter is very intentionally designed to encourage sales reps to spend all of their time only on revenue-driving activities. More meetings. More product demos. More sales calls with qualified leads. More contracts sent out for approval. More follow up emails delivered. In a mature sales organization, that means sales reps are empowered to spend less (or zero) time researching prospects, qualifying leads, and booking meetings. Those are activities a business development rep should be helping out with. 4. How does a business development call (or email) differ from that of a sales rep? The biggest difference between the calls and emails that business development reps send vs those of a sales rep, is that most business development activities are done toward either completely or relatively cold prospects—meaning that these prospects have likely had little to no interaction with the company before this initial contact is made. That’s when brushing up on your cold emails and cold calling skills come into play. By the time a sales rep is brought on to an account, the relationship has already been established and the lead is qualified, making the communications much more warm than those of a business development rep. The conversation with a sales rep is about how to make a mutually beneficial deal happen, rather than gauging the initial interest or need. Bonus: The key traits you need to look for in every business development (and sales) hire Bringing the right business development and salespeople onto your sales team is crucial in making meaningful progress toward growing your business. If your candidates don’t exhibit these key traits, our advice is to keep searching for the right people that will have a positive impact on your team. Communication and people skills If you hope to cultivate strong relationships with prospects and customers alike, having strong communication and people skills—like the ability to lead a friendly negotiation from start to finish so that the new customers you bring on are pleased with their decision, is crucial. Navigating the process of converting a lead into a paying customer requires the ability to empathize; to fully understand your prospect’s situation and the use case they’ll have for your product to make sure that they’ll truly benefit from your offering. Hunger and drive The most successful salespeople (and business development reps) have an internal drive that pushes them forward and propels them to achieve their sales goals. In the face of a challenge, they’re not discouraged—rather, they look forward to the opportunity to excel, surpass previous expectations and move up to the next level. They’re often incentivized by the prospect of earning more money , and respond well to financial rewards for performance improvements. Discipline and confidence Discipline and the confidence in your process beats motivation every single day of the week when you’ve just gotten ten rejections in a row. No matter how skilled or experience you are, in sales there will be moments of defeat that can drain your motivation levels. The best salespeople know that sales is a numbers game, and that the only way to recover from rejection & failure is to pick up the phone (or get back into your email) and keep executing. Having the right tools and systems, like our Power Dialer will also help keep your team on track and reaching peak productivity levels each day. They’re consultants at heart Just because a salesperson has mastered every tactic in the book and can sell ice to an eskimo doesn’t mean they’re going to bring in customers that’ll still be happy with their purchase decision one, three, six months down the line. When hiring a business development or sales rep, look for people that view their role as partnering with prospects to make sure there’s a mutual win-win in each potential deal—ensuring that the customer has a genuine need for the product and that they’re actually a fit for your ideal customer persona of people and companies you want to serve in the first place. Want to take your sales game to a new level? Get free access to our ultimate sales resource library today. ACCESS THE COMPLETE SALES LIBRARY NOW", 'created_at': '2019-08-02T21:45:12Z', 'updated_at': '2019-08-02T21:45:18Z', 'mimetype': 'text/html', 'language': 'en', 'reading_time': 17, 'domain_name': 'blog.close.com', 'preview_picture': 'https://blog.close.com/hubfs/Business%20Development%20vs%20Sales%20What%27s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-1.jpg#keepProtocol', 'http_status': 200, '_links': ['/api/entries/14012'], 'content': '<img src="https://blog.close.com/hs-fs/hubfs/Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg?width=700&name=Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg" alt="business-development-vs-sales" width="700" srcset="https://blog.close.com/hs-fs/hubfs/Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg?width=350&name=Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg 350w, https://blog.close.com/hs-fs/hubfs/Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg?width=700&name=Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg 700w, https://blog.close.com/hs-fs/hubfs/Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg?width=1050&name=Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg 1050w, https://blog.close.com/hs-fs/hubfs/Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg?width=1400&name=Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg 1400w, https://blog.close.com/hs-fs/hubfs/Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg?width=1750&name=Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg 1750w, https://blog.close.com/hs-fs/hubfs/Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg?width=2100&name=Business%20Development%20vs%20Sales%20What\'s%20the%20Difference%20and%20Which%20Should%20You%20Hire%20First%20copy-2.jpg 2100w" /><p>What’s the difference between business development and sales? Many founders we talk to believe the terms are interchangeable—simply two different ways to describe the same function… right? Not quite. Today, we’re talking <strong>business development vs sales</strong>.</p><p>Let’s start by clearly defining both <strong>business development and sales</strong>. Then, we’ll dig deeper into the differences, how they support each other, and which function needs to be your focus based on the stage your company is at today.</p><p><strong>Want to take your sales game to a new level? Get free access to our ultimate sales resource library today.</strong></p><p><a href="https://close.com/resources/startup-sales-resource-bundle/" class="button small primary" target="_blank">ACCESS THE COMPLETE SALES LIBRARY NOW</a></p><h3><strong>What is business development?</strong></h3><p><strong>The definition of business development is generating qualified new leads.</strong> The purpose of business development (in the context of a sales team—NOT in terms of product validation) is to research, prospect and create a pipeline of targeted potential customers to pass off to sales for further vetting and closing.</p><h3><strong>What is sales?</strong></h3><p><strong>The definition of sales is generating transactions.</strong> The sole focus of a mature sales team is to close deals with the qualified leads that are coming from either your business development efforts or other <a href="https://blog.close.com/lead-generation" rel="noopener" target="_blank">lead generation strategies</a> that are designed to start conversations with the right potential customers.</p><h3><strong>So… what’s the difference between business development and sales?</strong></h3><p>Put simply, business development comes first. It’s the act of generating well-researched, qualified leads to hand off to your sales team. <strong>Business development is all about generating leads</strong>, and the job titles most often associated with business development are roles like, Business Development Rep (BDR) or Sales Development Rep (SDR).</p><p>Sales comes second, and is wholly concerned with <a href="https://blog.close.com/close-sale" rel="noopener" target="_blank">closing a winning deal</a> with the qualified prospects that come from your organization’s business development activities. <strong>Sales is all about transactions.</strong> Titles for sales roles vary widely, but typically form around phrases like Sales Representative, Account Manager or Account Executive.\xa0</p><p>Moreover, when you’re <a href="https://blog.close.com/sales-management-new-managers-guide-to-building-a-sales-team" rel="noopener" target="_blank">building a sales team</a> from the ground up, it can be difficult to decide which role (business development vs sales) you should hire first—or to bring on more of in the early days.</p><p>The answer, as with most things in business, is… well, <em>it depends</em>.</p><p>Now that you’ve got a clear definition of the difference between business development and sales, start by first asking yourself which one sounds like a higher priority within your organization right now. Which role do you truly need today?\xa0</p><p>If you’ve gotten clear market validation for your solution and are consistently closing a high proportion of the prospects you speak with, but just need a higher volume of leads to continue flowing through your pipeline, then hiring a business development rep and training them on how to prospect for the right leads should be your number one priority.</p><p>If you have more qualified inbound leads than you know what to do with, but you simply don’t have enough time to follow up with every lead, schedule a meeting, do a demo and close the deal, then your focus should be on getting more sales reps on board who can help close more of your hot leads.</p><p>Sounds pretty straightforward, but the reality is that it can take a while to get to this stage.</p><p>In the earlier phases of your business (or before acquiring funding as a startup), it’s natural for founders and other members of the team to take on both business development and sales-related responsibilities while resources are constrained before <a href="https://blog.close.com/sales-hiring-101-for-startups">sales hiring</a> becomes a viable option.</p><p>As long as the founder-driven sales stage is working well and your revenue is growing, that’s ok for a while.\xa0</p><p>Over time though, the separation of the two roles should become more pronounced and specialized as your business begins to scale and you can afford to invest in better solving your bigger problem—generating more leads or bringing on salespeople to close more of the leads you already have.</p><h2><strong>Why you need to separate business development and sales</strong></h2><p>Let’s examine a few of the critical reasons why your business stands to benefit immensely by separating the roles of business development and sales.</p><h3><strong>Creating domain expertise in your organization</strong></h3><p>Since the advent of the world’s first automobile manufacturing lines in the early 1900’s, <a href="https://www.investopedia.com/terms/s/specialization.asp" rel="noopener" target="_blank">labor specialization</a> has proliferated into countless other industries with massively positive effects.</p><p><strong>Division of labor:</strong> Known as the separation of tasks within any system, the primary goal of clearly dividing tasks within your sales team, is to allow individuals to specialize within their roles.</p><p>Anyone who spends the majority of their day executing the same sets of tasks (that ladder up to a very clear goal) is likely going to build expertise much quicker than their counterparts who spend the day task-switching between multiple different roles and goals.\xa0</p><p>Separating business development and sales within your organization is no exception. When you allow members of your sales team to focus solely on either prospecting or closing, they’ll develop a level of expertise at their role that’s otherwise very difficult to achieve.</p><p>Instead of splitting their time (and mental capacity), or task-switching throughout their entire day, your business development reps are able to focus on doing everything they can to bring more qualified prospects into the company’s pipeline. Conversely, your sales reps are empowered to work on nothing but the key activities in <a href="https://blog.close.com/how-to-build-a-sales-process-that-gets-results" rel="noopener" target="_blank">your sales process</a> that are proven to close more deals and generate transactions.\xa0</p><p>Creating an environment that accelerates the development of expertise is priceless in terms of organizational benefits—you’ll be able to generate more leads <em>and</em> close more of them.</p><h3><strong>Individual productivity gains</strong></h3><p>We touched on this briefly in the context of rapidly building expertise within your sales organization as a result of separating business development and sales, but it’s worth highlighting the productivity gains your team will experience at the individual level too.</p><p>When you have salespeople that are also doing their own prospecting (researching, qualifying, initial outreach), their calendars can quickly fill up with a myriad of different activities like conducting research, <a href="https://blog.close.com/b2b-cold-calling-tips" rel="noopener" target="_blank">cold calling</a> from a list of inbound leads and <a href="https://blog.close.com/5-cold-email-templates-that-will-generate-warm-leads-for-your-sales-team" rel="noopener" target="_blank">sending cold emails</a> to prospects. Their calendars can quickly look like…</p><p><img src="https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg?width=800&name=Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg" alt="sales-cognitive-switching" width="800" srcset="https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg?width=400&name=Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg 400w, https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg?width=800&name=Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg 800w, https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg?width=1200&name=Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg 1200w, https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg?width=1600&name=Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg 1600w, https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg?width=2000&name=Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg 2000w, https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg?width=2400&name=Business%20development%20vs%20sales%20task%20switching%20costs-1.jpg 2400w" /></p><p>Known as <a href="https://en.wikipedia.org/wiki/Cognitive_shifting" rel="noopener" target="_blank">cognitive switching</a>, the act of consciously switching from one task to another within your day can leave you mentally exhausted. On top of that, studies <a href="http://www.apa.org/research/action/multitask.aspx" rel="noopener" target="_blank">have shown</a> the quality of your work declines dramatically the more frequently you switch between tasks.</p><p>Psychologist <a href="https://lsa.umich.edu/psych/people/faculty/demeyer.html" rel="noopener" target="_blank">David Meyer, PhD</a>, director of the University of Michigan\'s Brain, Cognition, and Action Laboratory explains, “Although switching costs may be relatively small, sometimes just a few tenths of a second per switch, they can add up to large amounts when people switch repeatedly back and forth between tasks. Thus, multitasking may seem efficient on the surface, but may actually take more time in the end and involve more error.”\xa0</p><p>Meyer reports that even brief mental blocks created by shifting between tasks <strong>can cost as much as 40%</strong> of someone\'s productive time in a given day—time that you can’t afford to lose in a startup or SMB.</p><p>When you separate the responsibilities of business development and sales within your organization, you’re grouping similar activities together and making individuals responsible for a limited set of goals that are directly impacted by the activities they’re expected to do on a daily basis (having a clear connection to impact being <a href="https://open.buffer.com/meaningful-work/" rel="noopener" target="_blank">one of the three things</a> that make work most meaningful).</p><p>That elimination of multiple different types of goals allows members of your sales team to work on fewer tasks—thus empowering them to execute on single tasks for focused blocks of time. Which allows their calendars to look much more like…\xa0\xa0</p><p><img src="https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg?width=1000&name=Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg" alt="dream-calendar-for-business-dev-rep" width="1000" srcset="https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg?width=500&name=Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg 500w, https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg?width=1000&name=Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg 1000w, https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg?width=1500&name=Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg 1500w, https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg?width=2000&name=Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg 2000w, https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg?width=2500&name=Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg 2500w, https://blog.close.com/hs-fs/hubfs/Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg?width=3000&name=Business%20development%20vs%20sales%20dream%20calendar%20for%20business%20dev%20rep.jpg 3000w" /></p><p>The fewer objectives your individual contributors (both in business development and sales roles) are responsible for delivering against, the more they’ll be able to focus on excelling and being more productive on the limited tasks at hand.</p><h3><strong>Business development requires more effort than it used to</strong></h3><p>The core functions of business development haven’t changed much in recent years, but the process of prospecting and qualifying leads<em> has</em> become much more nuanced.\xa0\xa0\xa0</p><p>Business development roles are still charged with two main responsibilities:</p><ul><li><strong>Prospecting:</strong> Identifying companies and people that may be interested in purchasing your product or service</li>\n<li><strong>Qualifying:</strong> Determining if your prospect is ready, willing and able to buy\xa0</li>\n</ul><p>Once a lead is qualified and has a strong likelihood of converting into becoming a paying customer, they’re passed off to the sales team for closing (and if need be <a href="https://blog.close.com/negotiate" rel="noopener" target="_blank">negotiating</a> the terms of the contract).</p><p>This means that business development reps do not <em>ideally</em> have quotas. They’re responsible for bringing in enough qualified leads to generate a certain amount of revenue, but actually <a href="https://blog.close.com/close-sale" rel="noopener" target="_blank">closing the sale</a> and turning leads into customers is beyond their direct control.</p><p><strong>So, what’s changed in the world of business development?</strong></p><p>It’s become increasingly difficult to reach decision-makers and to engage them the way they want, when they want. Hell, I can’t even remember the last time I answered a call from a number I didn’t recognize—let alone respond to unsolicited sales emails.\xa0</p><p>The proliferation of conversational sales and marketing tools like <a href="https://www.drift.com/" rel="noopener" target="_blank">Drift</a> are proof of this dramatic shift. Your customers time is valuable, and giving them the ability to control when and how they interact with you is a serious experience upgrade, therefore your <a href="https://blog.close.com/create-sales-plan" rel="noopener" target="_blank">sales plan</a> needs to grow and adapt with this shift.\xa0</p><p>Beyond just better managing the experience of your inbound leads, it also takes more time to adequately research prospects, and requires more touch points on a lead in order to capture their attention.</p><p>Business development is more about relationship-building than ever, making it a standalone full-time position on any sales team.</p><p>At the end of the day, it’s not a smart investment to have someone responsible for a new deal quota, shifting gears between prospecting, demoing and closing within their work day.</p><h2><strong>How business development and sales work together (4 common questions)</strong></h2><p>Now that we’re clear about the separation between business development vs sales, let’s talk about how the two roles should best work collaboratively together, for maximum effectiveness on your sales team.</p><h3><strong>1. When should business development pass a lead on to sales?</strong></h3><p>Your sales team has quotas they need to hit, which means they can’t waste time talking to prospects that aren’t already <a href="https://blog.close.com/qualify" rel="noopener" target="_blank">well-qualified.</a> Otherwise, they\'ll be wasting time and energy chasing the wrong leads and diluting their close rate.</p><p>Business development reps should pass a lead on to sales <strong>as soon as they’re qualified</strong>. However, that doesn’t mean business development teams and sales teams shouldn’t have a collaborative work relationship.</p><p><a href="https://www.wework.com/" rel="noopener" target="_blank">WeWork</a> VP of Business Development, <a href="http://startofthedeal.com/" rel="noopener" target="_blank">Scott Pollack</a> explains, “business development teams should be identifying, evaluating, and pursuing opportunities to create long-term value for a company. This means BD teams and sales teams should happily coexist—the sales team gets to work on closing opportunities that can drive revenue <em>today</em>, while the BD team focuses their attention on opportunities to open new channels and drive a flood of new leads for tomorrow.”</p><p>As Pollack suggests, it’s incredibly important that business development teams focus their time, effort and energy on building relationships only with the most qualified leads that stand a chance of becoming happy customers. Then, they’re worthy of being handed off to sales.</p><p>How do you know when a lead is fully qualified and ready to be closed? That can vary a bit based on the type of product you’re selling and the market you’re serving, but starting with choosing from these <a href="https://resources.close.com/qualifying-questions" rel="noopener" target="_blank">42 B2B qualifying questions</a> to ask your prospects won’t hurt.\xa0</p><p>In order to qualify your prospects, you’ll want to accurately gauge how well they match your <a href="https://sixteenventures.com/ideal-customer-profile" rel="noopener" target="_blank">ideal customer profile</a> with key information around company size, location and industry.\xa0</p><p>Next, you want to assess their needs to make sure there’s a true use case for your product, develop an understanding of their purchasing process to make sure it’s a match with your selling process, and assess other competitive options they may be considering.</p><p>If everything checks out and the prospect still appears to be a strong potential customer, then they’re qualified—and ready to be closed by your sales team.</p><h3><strong>2. Should there be overlap between business development and sales?</strong></h3><p>In terms of day-to-day activities? <strong>No, not really</strong>.</p><p>Business development should be wholly tasked with prospecting and qualifying. Sales should be focused only on closing those qualified leads and generating transactions.</p><p>However, your business development reps and sales reps <em>do</em> need to be on the same page about who your ideal customers are—their characteristics, qualities and the kinds of problems your offering can best help them with.</p><p>Due to the rapidly changing environment in startups, this requires frequent cross-team collaboration.</p><p>As <a href="https://www.creativelive.com/" rel="noopener" target="_blank">CreativeLive</a> Director of Partnerships and Business Development, <a href="https://www.linkedin.com/in/kimberlyannmurphy/" rel="noopener" target="_blank">Kimberly Pousman</a> explains, “there not only <em>should be</em> overlap between business development and sales, but there <em>needs to be</em> overlap, whether you personally want it or not.”\xa0</p><p>Pousman continues, “One of the keys to being great in either a business development or sales role, is asking the right questions. When you’re looking to grow and expand, you need to ask the right questions, experiment and actively source feedback from others—so if your teams are operating in a silo, they’ll miss out on valuable opportunities to learn from each other and advance your growth rate.”</p><p>Furthermore, the downstream effect is that if this alignment between business development and sales teams isn’t up to par, your sales reps are going to have a difficult time closing enough deals with the leads they’ve got, which leads to frustration and a close rate below the <a href="https://www.pointclear.com/blog/what-should-the-sales-close-rate-be" rel="noopener" target="_blank">20-30% industry average</a> for SaaS.</p><p>If your sales team’s close rate is below 20%, they’re either not closing as well as they should, or your leads aren’t qualified enough.</p><h3><strong>3. What’s the difference in the day-to-day activities of business development reps and sales reps?</strong></h3><p>While the responsibilities of a business development rep can vary a bit based on the unique needs and internal demands of an organization, in general they’re responsible for two main tasks that sit at the core of this role:</p><ul><li><strong>Managing inbound leads:</strong> This translates into working through an internal list, <a href="https://blog.close.com/qualify" rel="noopener" target="_blank">qualifying leads</a> from various marketing campaigns and classifying the right ones as sales opportunities to be passed on to the sales team for further vetting and closing.</li>\n<li><strong>Leading outbound prospecting:</strong> On the flip side, this kind of outreach involves researching and contacting potential customers that haven’t proactively expressed interest in your product through cold calls and cold emails—with the goal of qualifying sales opportunities for your sales team.\xa0</li>\n</ul><p>On the inbound side of things, business development reps sit metaphorically between marketing and sales, filtering marketing leads and qualifying them before assigning them to the right sales rep that can move on to <a href="https://blog.close.com/close-sale" rel="noopener" target="_blank">close the sale</a>.</p><p>When it comes to outbound, business development reps need to first go through your organization’s <a href="https://blog.close.com/unstoppable-sales-team" rel="noopener" target="_blank">sales training</a> process so that they have a clear picture of who your ideal customers are before they go out and begin starting conversations with prospects. Depending upon the size of your company, your business development reps may or may not start with the beginning task of researching prospects before sending an email or calling.</p><p>Ultimately though, the goal of any outbound business development work is to start a conversation and <a href="https://www.forbes.com/sites/samanthaharrington/2017/05/26/how-to-create-strong-sales-relationships/" rel="noopener" target="_blank">develop a relationship</a> that can be passed on to sales for closing. Everything a business development rep does, should revolve around finding more prospects, qualifying the right ones and routing them to your sales team for closing.</p><p><strong>Now, let’s talk about the responsibilities of sales reps.</strong></p><p>Keeping in mind slight differences to match your unique internal needs, most sales representatives are charged with the following main responsibilities:</p><ul><li><strong>Selling:</strong> Closing deals (ideally with pre-qualified leads from your business development team to save time) using solid arguments and <a href="https://blog.close.com/10-objection-handling-techniques-every-b2b-salesperson-should-know" rel="noopener" target="_blank">objection management</a> with prospective customers.</li>\n<li><strong>Maintaining relationships:</strong> Although a prospect might not be a fit to purchase your product or service today, that doesn’t mean they won’t be in a completely different position 6 months or a year from now—so keeping in touch with leads to encourage future sales is a major part of a sales rep’s responsibilities.</li>\n</ul><p>Most sales representative roles work against a <a href="https://blog.close.com/end-of-year-sales" rel="noopener" target="_blank">sales quota</a>—a thoughtfully calculated monthly or quarterly minimum for the number of customers (or revenue figure) they’re responsible to close. Sales reps are often incentivized with increasing levels of bonus payouts for hitting and exceeding quota within a given period.</p><p>The intense focus on hitting specific customer or revenue benchmarks each quarter is very intentionally designed to encourage sales reps to spend all of their time only on revenue-driving activities. More meetings. More product demos. More sales calls with qualified leads. More contracts sent out for approval. More <a href="https://blog.close.com/follow-up" rel="noopener" target="_blank">follow up emails</a> delivered.</p><p>In a mature sales organization, that means sales reps are empowered to spend less (or zero) time researching prospects, qualifying leads, and booking meetings. Those are activities a business development rep should be helping out with.</p><h3><strong>4. How does a business development call (or email) differ from that of a sales rep?</strong></h3><p>The biggest difference between the calls and emails that business development reps send vs those of a sales rep, is that most business development activities are done toward either completely or relatively <em>cold</em> prospects—meaning that these prospects have likely had little to no interaction with the company before this initial contact is made.\xa0</p><p>That’s when brushing up on your <a href="https://blog.close.com/5-cold-email-templates-that-will-generate-warm-leads-for-your-sales-team" rel="noopener" target="_blank">cold emails</a> and <a href="https://blog.close.com/b2b-cold-calling-tips" rel="noopener" target="_blank">cold calling</a> skills come into play.</p><p>By the time a sales rep is brought on to an account, the relationship has already been established and the lead is qualified, making the communications much more <em>warm</em> than those of a business development rep. The conversation with a sales rep is about how to make a mutually beneficial deal happen, rather than gauging the initial interest or need.</p><h2><strong>Bonus: The key traits you need to look for in every business development (and sales) hire</strong></h2><p>Bringing the right business development and salespeople onto your sales team is crucial in making meaningful progress toward growing your business. If your candidates don’t exhibit these key traits, our advice is to keep searching for the right people that <em>will</em> have a positive impact on your team.</p><h3><strong>Communication and people skills</strong></h3><p>If you hope to cultivate strong relationships with prospects and customers alike, having strong communication and people skills—like the ability to lead a friendly <a href="https://blog.close.com/negotiate" rel="noopener" target="_blank">negotiation</a> from start to finish so that the new customers you bring on are pleased with their decision, is crucial.</p><p>Navigating the process of converting a lead into a paying customer requires the ability to empathize; to fully understand your prospect’s situation and the use case they’ll have for your product to make sure that they’ll truly benefit from your offering.</p><h3><strong>Hunger and drive</strong></h3><p>The most successful salespeople (and business development reps) have an internal drive that pushes them forward and propels them to achieve their sales goals.</p><p>\xa0In the face of a challenge, they’re not discouraged—rather, they look forward to the opportunity to excel, surpass previous expectations and move up to the next level. They’re often incentivized by the prospect of <a href="https://www.ryrob.com/make-money-online/" rel="noopener" target="_blank">earning more money</a>, and respond well to financial rewards for performance improvements.</p><h3><strong>Discipline and confidence</strong></h3><p>Discipline and the confidence in your process beats motivation every single day of the week when you’ve just gotten ten rejections in a row. No matter how skilled or experience you are, in sales there will be moments of defeat that can drain your motivation levels.</p><p>The best salespeople know that sales is a numbers game, and that the only way to recover from rejection & failure is to pick up the phone (or get back into your email) and keep executing. Having the right tools and systems, like our <a href="https://close.com/calling/automation/power-dialer/" rel="noopener" target="_blank">Power Dialer</a> will also help keep your team on track and reaching peak productivity levels each day.</p><h3><strong>They’re consultants at heart</strong></h3><p>Just because a salesperson has mastered every tactic in the book and can sell ice to an eskimo doesn’t mean they’re going to bring in customers that’ll <em>still be happy</em> with their purchase decision one, three, six months down the line.</p><p>When hiring a business development or sales rep, look for people that view their role as partnering with prospects to make sure there’s a mutual win-win in each potential deal—ensuring that the customer has a genuine need for the product and that they’re actually a fit for your ideal customer persona of people and companies you want to serve in the first place.</p><p><strong>Want to take your sales game to a new level? Get free access to our ultimate sales resource library today.</strong></p><p><a href="https://close.com/resources/startup-sales-resource-bundle/" class="button small primary" target="_blank">ACCESS THE COMPLETE SALES LIBRARY NOW</a></p>'},)
({'is_archived': 1, 'all': ['1', '0', 'admin', '[email protected]', '1', 'linux', 'linux', '0', '14013', '9 commands to check hard disk partitions and disk space on Linux', 'https://www.binarytides.com/linux-command-check-disk-partitions/', '<div id="post_start">\n<p>In this post we are taking a look at some commands that can be used to check up the partitions on your system. The commands would check what partitions there are on each disk and other details like the total size, used up space and file system etc.</p>\n<pre class="adflexi">\n\n\n<ins class="adsbygoogle" data-ad-client="ca-pub-5814774904969415" data-ad-slot="0700059493">\n\n\n</ins></pre></div>\n\n\n\n\n\n<p>Commands like fdisk, sfdisk and cfdisk are general partitioning tools that can not only display the partition information, but also modify them.</p>\n<h3>1. fdisk</h3>\n<p>Fdisk is the most commonly used command to check the partitions on a disk. The fdisk command can display the partitions and details like file system type. However it does not report the size of each partitions.</p>\n<pre class="terminal">$ sudo fdisk -l \n \nDisk /dev/sda: 500.1 GB, 500107862016 bytes \n255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors \nUnits = sectors of 1 * 512 = 512 bytes \nSector size (logical/physical): 512 bytes / 512 bytes \nI/O size (minimum/optimal): 512 bytes / 512 bytes \nDisk identifier: 0x30093008 \n \n Device Boot Start End Blocks Id System \n/dev/sda1 * 63 146801969 73400953+ 7 HPFS/NTFS/exFAT \n/dev/sda2 146802031 976771071 414984520+ f W95 Ext\'d (LBA) \n/dev/sda5 146802033 351614654 102406311 7 HPFS/NTFS/exFAT \n/dev/sda6 351614718 556427339 102406311 83 Linux \n/dev/sda7 556429312 560427007 1998848 82 Linux swap / Solaris \n/dev/sda8 560429056 976771071 208171008 83 Linux \n \nDisk /dev/sdb: 4048 MB, 4048551936 bytes \n54 heads, 9 sectors/track, 16270 cylinders, total 7907328 sectors \nUnits = sectors of 1 * 512 = 512 bytes \nSector size (logical/physical): 512 bytes / 512 bytes \nI/O size (minimum/optimal): 512 bytes / 512 bytes \nDisk identifier: 0x0001135d \n \n Device Boot Start End Blocks Id System \n/dev/sdb1 * 2048 7907327 3952640 b W95 FAT32</pre>\n<p>Each device is reported separately with details about size, seconds, id and individual partitions.</p>\n<h3>2. sfdisk</h3>\n<p>Sfdisk is another utility with a purpose similar to fdisk, but with more features. It can display the size of each partition in MB.</p>\n<pre class="terminal">$ sudo sfdisk -l -uM \n \nDisk /dev/sda: 60801 cylinders, 255 heads, 63 sectors/track \nWarning: extended partition does not start at a cylinder boundary. \nDOS and Linux will interpret the contents differently. \nUnits = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0 \n \n Device Boot Start End MiB #blocks Id System \n/dev/sda1 * 0+ 71680- 71681- 73400953+ 7 HPFS/NTFS/exFAT \n/dev/sda2 71680+ 476938 405259- 414984520+ f W95 Ext\'d (LBA) \n/dev/sda3 0 - 0 0 0 Empty \n/dev/sda4 0 - 0 0 0 Empty \n/dev/sda5 71680+ 171686- 100007- 102406311 7 HPFS/NTFS/exFAT \n/dev/sda6 171686+ 271693- 100007- 102406311 83 Linux \n/dev/sda7 271694 273645 1952 1998848 82 Linux swap / Solaris \n/dev/sda8 273647 476938 203292 208171008 83 Linux \n \nDisk /dev/sdb: 1020 cylinders, 125 heads, 62 sectors/track \nWarning: The partition table looks like it was made \n for C/H/S=*/54/9 (instead of 1020/125/62). \nFor this listing I\'ll assume that geometry. \nUnits = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0 \n \n Device Boot Start End MiB #blocks Id System \n/dev/sdb1 * 1 3860 3860 3952640 b W95 FAT32 \n start: (c,h,s) expected (4,11,6) found (0,32,33) \n end: (c,h,s) expected (1023,53,9) found (492,53,9) \n/dev/sdb2 0 - 0 0 0 Empty \n/dev/sdb3 0 - 0 0 0 Empty \n/dev/sdb4 0 - 0 0 0 Empty</pre><pre class="adwrap">\n\n\n<ins class="adsbygoogle" data-ad-client="ca-pub-5814774904969415" data-ad-slot="7125586293">\n\n\n</ins></pre>\n\n\n<h3>3. cfdisk</h3>\n<p>Cfdisk is a linux partition editor with an interactive user interface based on ncurses. It can be used to list out the existing partitions as well as create or modify them. </p>\n<p>Here is an example of how to use cfdisk to list the partitions.</p>\n<p><img src="https://www.binarytides.com/blog/wp-content/uploads/2014/06/linux-cfdisk.png" alt="linux cfdisk disk partitions" width="640" height="480" class="alignnone size-full wp-image-7267" srcset="https://www.binarytides.com/blog/wp-content/uploads/2014/06/linux-cfdisk.png 640w, https://www.binarytides.com/blog/wp-content/uploads/2014/06/linux-cfdisk-300x225.png 300w, https://www.binarytides.com/blog/wp-content/uploads/2014/06/linux-cfdisk-600x450.png 600w" /></p>\n<p>Cfdisk works with one partition at a time. So if you need to see the details of a particular disk, then pass the device name to cfdisk.</p>\n<pre class="terminal">$ sudo cfdisk /dev/sdb</pre>\n<h3>4. parted</h3>\n<p>Parted is yet another command line utility to list out partitions and modify them if needed.<br />\nHere is an example that lists out the partition details.</p>\n<pre class="terminal">$ sudo parted -l \nModel: ATA ST3500418AS (scsi) \nDisk /dev/sda: 500GB \nSector size (logical/physical): 512B/512B \nPartition Table: msdos \n \nNumber Start End Size Type File system Flags \n 1 32.3kB 75.2GB 75.2GB primary ntfs boot \n 2 75.2GB 500GB 425GB extended lba \n 5 75.2GB 180GB 105GB logical ntfs \n 6 180GB 285GB 105GB logical ext4 \n 7 285GB 287GB 2047MB logical linux-swap(v1) \n 8 287GB 500GB 213GB logical ext4 \n \n \nModel: Sony Storage Media (scsi) \nDisk /dev/sdb: 4049MB \nSector size (logical/physical): 512B/512B \nPartition Table: msdos \n \nNumber Start End Size Type File system Flags \n 1 1049kB 4049MB 4048MB primary fat32 boot</pre>\n<h3>5. df</h3>\n<p>Df is not a partitioning utility, but prints out details about only mounted file systems. The list generated by df even includes file systems that are not real disk partitions.</p>\n<p>Here is a simple example</p>\n<pre class="terminal">$ df -h \nFilesystem Size Used Avail Use% Mounted on \n/dev/sda6 97G 43G 49G 48% / \nnone 4.0K 0 4.0K 0% /sys/fs/cgroup \nudev 3.9G 8.0K 3.9G 1% /dev \ntmpfs 799M 1.7M 797M 1% /run \nnone 5.0M 0 5.0M 0% /run/lock \nnone 3.9G 12M 3.9G 1% /run/shm \nnone 100M 20K 100M 1% /run/user \n/dev/sda8 196G 154G 33G 83% /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1 \n/dev/sda5 98G 37G 62G 38% /media/4668484A68483B47</pre>\n<p>Only the file systems that start with a /dev are actual devices or partitions.<br />\nUse grep to filter out real hard disk partitions/file systems.</p>\n<pre class="terminal">$ df -h | grep ^/dev \n/dev/sda6 97G 43G 49G 48% / \n/dev/sda8 196G 154G 33G 83% /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1 \n/dev/sda5 98G 37G 62G 38% /media/4668484A68483B47</pre>\n<p>To display only real disk partitions along with partition type, use df like this</p>\n<pre class="terminal">$ df -h --output=source,fstype,size,used,avail,pcent,target -x tmpfs -x devtmpfs \nFilesystem Type Size Used Avail Use% Mounted on \n/dev/sda6 ext4 97G 43G 49G 48% / \n/dev/sda8 ext4 196G 154G 33G 83% /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1 \n/dev/sda5 fuseblk 98G 37G 62G 38% /media/4668484A68483B47</pre>\n<p>Note that df shows only the mounted file systems or partitions and not all.</p>\n<h3>6. pydf</h3>\n<p>Improved version of df, written in python. Prints out all the hard disk partitions in a easy to read manner.</p>\n<pre class="terminal">$ pydf \nFilesystem Size Used Avail Use% Mounted on \n/dev/sda6 96G 43G 48G 44.7 [####.....] / \n/dev/sda8 195G 153G 32G 78.4 [#######..] /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1 \n/dev/sda5 98G 36G 61G 37.1 [###......] /media/4668484A68483B47</pre>\n<p>Again, pydf is limited to showing only the mounted file systems.</p>\n<h3>7. lsblk</h3>\n<p>Lists out all the storage blocks, which includes disk partitions and optical drives. Details include the total size of the partition/block and the mount point if any.<br />\nDoes not report the used/free disk space on the partitions.</p>\n<pre class="terminal">$ lsblk \nNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT \nsda 8:0 0 465.8G 0 disk \n├─sda1 8:1 0 70G 0 part \n├─sda2 8:2 0 1K 0 part \n├─sda5 8:5 0 97.7G 0 part /media/4668484A68483B47 \n├─sda6 8:6 0 97.7G 0 part / \n├─sda7 8:7 0 1.9G 0 part [SWAP] \n└─sda8 8:8 0 198.5G 0 part /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1 \nsdb 8:16 1 3.8G 0 disk \n└─sdb1 8:17 1 3.8G 0 part \nsr0 11:0 1 1024M 0 rom</pre>\n<p>If there is no MOUNTPOINT, then it means that the file system is not yet mounted. For cd/dvd this means that there is no disk.</p>\n<p>Lsblk is capbale of displaying more information about each device like the label and model. Check out the man page for more information</p>\n<h3>8. blkid</h3>\n<p>Prints the block device (partitions and storage media) attributes like uuid and file system type. Does not report the space on the partitions.</p>\n<pre class="terminal">$ sudo blkid \n/dev/sda1: UUID="5E38BE8B38BE6227" TYPE="ntfs" \n/dev/sda5: UUID="4668484A68483B47" TYPE="ntfs" \n/dev/sda6: UUID="6fa5a72a-ba26-4588-a103-74bb6b33a763" TYPE="ext4" \n/dev/sda7: UUID="94443023-34a1-4428-8f65-2fb02e571dae" TYPE="swap" \n/dev/sda8: UUID="13f35f59-f023-4d98-b06f-9dfaebefd6c1" TYPE="ext4" \n/dev/sdb1: UUID="08D1-8024" TYPE="vfat"</pre>\n<h3>9. hwinfo</h3>\n<p>The hwinfo is a general purpose hardware information tool and can be used to print out the disk and partition list. The output however does not print details about each partition like the above commands.</p>\n<pre class="terminal">$ hwinfo --block --short \ndisk: \n /dev/sda ST3500418AS \n /dev/sdb Sony Storage Media \npartition: \n /dev/sda1 Partition \n /dev/sda2 Partition \n /dev/sda5 Partition \n /dev/sda6 Partition \n /dev/sda7 Partition \n /dev/sda8 Partition \n /dev/sdb1 Partition \ncdrom: \n /dev/sr0 SONY DVD RW DRU-190A</pre>\n<h3>Summary</h3>\n<p>The output of parted is concise and complete to get an overview of different partitions, file system on them and the total space. Pydf and df are limited to showing only mounted file systems and the same on them.</p>\n<p>Fdisk and Sfdisk show a whole lot of information that can take sometime to interpret whereas, Cfdisk is an interactive partitioning tool that display a single device at a time.</p>\n<p>So try them out, and do not forget to comment below.</p>\n<div class="updated_on">Last Updated On : 26th March 2018</div>\n<div id="dpsp-content-bottom" class="dpsp-content-wrapper dpsp-shape-rectangular dpsp-column-auto dpsp-has-spacing dpsp-hide-on-mobile dpsp-button-style-1 dpsp-has-icon-background dpsp-has-button-background"><ul class="dpsp-networks-btns-wrapper dpsp-networks-btns-content"><li><a rel="nofollow" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.binarytides.com%2Flinux-command-check-disk-partitions%2F&t=9%20commands%20to%20check%20hard%20disk%20partitions%20and%20disk%20space%20on%20Linux" class="dpsp-network-btn dpsp-facebook dpsp-first">Facebook</a></li><li><a rel="nofollow" href="https://twitter.com/intent/tweet?text=9%20commands%20to%20check%20hard%20disk%20partitions%20and%20disk%20space%20on%20Linux&url=https%3A%2F%2Fwww.binarytides.com%2Flinux-command-check-disk-partitions%2F" class="dpsp-network-btn dpsp-twitter">Twitter</a></li><li><a rel="nofollow" href="#" class="dpsp-network-btn dpsp-pinterest dpsp-last">Pinterest</a></li></ul></div>', ' In this post we are taking a look at some commands that can be used to check up the partitions on your system. The commands would check what partitions there are on each disk and other details like the total size, used up space and file system etc. Commands like fdisk, sfdisk and cfdisk are general partitioning tools that can not only display the partition information, but also modify them. 1. fdisk Fdisk is the most commonly used command to check the partitions on a disk. The fdisk command can display the partitions and details like file system type. However it does not report the size of each partitions. $ sudo fdisk -l\r\n\r\nDisk /dev/sda: 500.1 GB, 500107862016 bytes\r\n255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors\r\nUnits = sectors of 1 * 512 = 512 bytes\r\nSector size (logical/physical): 512 bytes / 512 bytes\r\nI/O size (minimum/optimal): 512 bytes / 512 bytes\r\nDisk identifier: 0x30093008\r\n\r\n Device Boot Start End Blocks Id System\r\n/dev/sda1 * 63 146801969 73400953+ 7 HPFS/NTFS/exFAT\r\n/dev/sda2 146802031 976771071 414984520+ f W95 Ext\'d (LBA)\r\n/dev/sda5 146802033 351614654 102406311 7 HPFS/NTFS/exFAT\r\n/dev/sda6 351614718 556427339 102406311 83 Linux\r\n/dev/sda7 556429312 560427007 1998848 82 Linux swap / Solaris\r\n/dev/sda8 560429056 976771071 208171008 83 Linux\r\n\r\nDisk /dev/sdb: 4048 MB, 4048551936 bytes\r\n54 heads, 9 sectors/track, 16270 cylinders, total 7907328 sectors\r\nUnits = sectors of 1 * 512 = 512 bytes\r\nSector size (logical/physical): 512 bytes / 512 bytes\r\nI/O size (minimum/optimal): 512 bytes / 512 bytes\r\nDisk identifier: 0x0001135d\r\n\r\n Device Boot Start End Blocks Id System\r\n/dev/sdb1 * 2048 7907327 3952640 b W95 FAT32 Each device is reported separately with details about size, seconds, id and individual partitions. 2. sfdisk Sfdisk is another utility with a purpose similar to fdisk, but with more features. It can display the size of each partition in MB. $ sudo sfdisk -l -uM\r\n\r\nDisk /dev/sda: 60801 cylinders, 255 heads, 63 sectors/track\r\nWarning: extended partition does not start at a cylinder boundary.\r\nDOS and Linux will interpret the contents differently.\r\nUnits = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0\r\n\r\n Device Boot Start End MiB #blocks Id System\r\n/dev/sda1 * 0+ 71680- 71681- 73400953+ 7 HPFS/NTFS/exFAT\r\n/dev/sda2 71680+ 476938 405259- 414984520+ f W95 Ext\'d (LBA)\r\n/dev/sda3 0 - 0 0 0 Empty\r\n/dev/sda4 0 - 0 0 0 Empty\r\n/dev/sda5 71680+ 171686- 100007- 102406311 7 HPFS/NTFS/exFAT\r\n/dev/sda6 171686+ 271693- 100007- 102406311 83 Linux\r\n/dev/sda7 271694 273645 1952 1998848 82 Linux swap / Solaris\r\n/dev/sda8 273647 476938 203292 208171008 83 Linux\r\n\r\nDisk /dev/sdb: 1020 cylinders, 125 heads, 62 sectors/track\r\nWarning: The partition table looks like it was made\r\n for C/H/S=*/54/9 (instead of 1020/125/62).\r\nFor this listing I\'ll assume that geometry.\r\nUnits = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0\r\n\r\n Device Boot Start End MiB #blocks Id System\r\n/dev/sdb1 * 1 3860 3860 3952640 b W95 FAT32\r\n start: (c,h,s) expected (4,11,6) found (0,32,33)\r\n end: (c,h,s) expected (1023,53,9) found (492,53,9)\r\n/dev/sdb2 0 - 0 0 0 Empty\r\n/dev/sdb3 0 - 0 0 0 Empty\r\n/dev/sdb4 0 - 0 0 0 Empty 3. cfdisk Cfdisk is a linux partition editor with an interactive user interface based on ncurses. It can be used to list out the existing partitions as well as create or modify them. Here is an example of how to use cfdisk to list the partitions. Cfdisk works with one partition at a time. So if you need to see the details of a particular disk, then pass the device name to cfdisk. $ sudo cfdisk /dev/sdb 4. parted Parted is yet another command line utility to list out partitions and modify them if needed. Here is an example that lists out the partition details. $ sudo parted -l\r\nModel: ATA ST3500418AS (scsi)\r\nDisk /dev/sda: 500GB\r\nSector size (logical/physical): 512B/512B\r\nPartition Table: msdos\r\n\r\nNumber Start End Size Type File system Flags\r\n 1 32.3kB 75.2GB 75.2GB primary ntfs boot\r\n 2 75.2GB 500GB 425GB extended lba\r\n 5 75.2GB 180GB 105GB logical ntfs\r\n 6 180GB 285GB 105GB logical ext4\r\n 7 285GB 287GB 2047MB logical linux-swap(v1)\r\n 8 287GB 500GB 213GB logical ext4\r\n\r\n\r\nModel: Sony Storage Media (scsi)\r\nDisk /dev/sdb: 4049MB\r\nSector size (logical/physical): 512B/512B\r\nPartition Table: msdos\r\n\r\nNumber Start End Size Type File system Flags\r\n 1 1049kB 4049MB 4048MB primary fat32 boot 5. df Df is not a partitioning utility, but prints out details about only mounted file systems. The list generated by df even includes file systems that are not real disk partitions. Here is a simple example $ df -h\r\nFilesystem Size Used Avail Use% Mounted on\r\n/dev/sda6 97G 43G 49G 48% /\r\nnone 4.0K 0 4.0K 0% /sys/fs/cgroup\r\nudev 3.9G 8.0K 3.9G 1% /dev\r\ntmpfs 799M 1.7M 797M 1% /run\r\nnone 5.0M 0 5.0M 0% /run/lock\r\nnone 3.9G 12M 3.9G 1% /run/shm\r\nnone 100M 20K 100M 1% /run/user\r\n/dev/sda8 196G 154G 33G 83% /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1\r\n/dev/sda5 98G 37G 62G 38% /media/4668484A68483B47 Only the file systems that start with a /dev are actual devices or partitions. Use grep to filter out real hard disk partitions/file systems. $ df -h | grep ^/dev\r\n/dev/sda6 97G 43G 49G 48% /\r\n/dev/sda8 196G 154G 33G 83% /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1\r\n/dev/sda5 98G 37G 62G 38% /media/4668484A68483B47 To display only real disk partitions along with partition type, use df like this $ df -h --output=source,fstype,size,used,avail,pcent,target -x tmpfs -x devtmpfs\r\nFilesystem Type Size Used Avail Use% Mounted on\r\n/dev/sda6 ext4 97G 43G 49G 48% /\r\n/dev/sda8 ext4 196G 154G 33G 83% /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1\r\n/dev/sda5 fuseblk 98G 37G 62G 38% /media/4668484A68483B47 Note that df shows only the mounted file systems or partitions and not all. 6. pydf Improved version of df, written in python. Prints out all the hard disk partitions in a easy to read manner. $ pydf\r\nFilesystem Size Used Avail Use% Mounted on \r\n/dev/sda6 96G 43G 48G 44.7 [####.....] / \r\n/dev/sda8 195G 153G 32G 78.4 [#######..] /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1\r\n/dev/sda5 98G 36G 61G 37.1 [###......] /media/4668484A68483B47 Again, pydf is limited to showing only the mounted file systems. 7. lsblk Lists out all the storage blocks, which includes disk partitions and optical drives. Details include the total size of the partition/block and the mount point if any. Does not report the used/free disk space on the partitions. $ lsblk\r\nNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT\r\nsda 8:0 0 465.8G 0 disk \r\n├─sda1 8:1 0 70G 0 part \r\n├─sda2 8:2 0 1K 0 part \r\n├─sda5 8:5 0 97.7G 0 part /media/4668484A68483B47\r\n├─sda6 8:6 0 97.7G 0 part /\r\n├─sda7 8:7 0 1.9G 0 part [SWAP]\r\n└─sda8 8:8 0 198.5G 0 part /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1\r\nsdb 8:16 1 3.8G 0 disk \r\n└─sdb1 8:17 1 3.8G 0 part \r\nsr0 11:0 1 1024M 0 rom If there is no MOUNTPOINT, then it means that the file system is not yet mounted. For cd/dvd this means that there is no disk. Lsblk is capbale of displaying more information about each device like the label and model. Check out the man page for more information 8. blkid Prints the block device (partitions and storage media) attributes like uuid and file system type. Does not report the space on the partitions. $ sudo blkid\r\n/dev/sda1: UUID="5E38BE8B38BE6227" TYPE="ntfs" \r\n/dev/sda5: UUID="4668484A68483B47" TYPE="ntfs" \r\n/dev/sda6: UUID="6fa5a72a-ba26-4588-a103-74bb6b33a763" TYPE="ext4" \r\n/dev/sda7: UUID="94443023-34a1-4428-8f65-2fb02e571dae" TYPE="swap" \r\n/dev/sda8: UUID="13f35f59-f023-4d98-b06f-9dfaebefd6c1" TYPE="ext4" \r\n/dev/sdb1: UUID="08D1-8024" TYPE="vfat" 9. hwinfo The hwinfo is a general purpose hardware information tool and can be used to print out the disk and partition list. The output however does not print details about each partition like the above commands. $ hwinfo --block --short\r\ndisk: \r\n /dev/sda ST3500418AS\r\n /dev/sdb Sony Storage Media\r\npartition:\r\n /dev/sda1 Partition\r\n /dev/sda2 Partition\r\n /dev/sda5 Partition\r\n /dev/sda6 Partition\r\n /dev/sda7 Partition\r\n /dev/sda8 Partition\r\n /dev/sdb1 Partition\r\ncdrom:\r\n /dev/sr0 SONY DVD RW DRU-190A Summary The output of parted is concise and complete to get an overview of different partitions, file system on them and the total space. Pydf and df are limited to showing only mounted file systems and the same on them. Fdisk and Sfdisk show a whole lot of information that can take sometime to interpret whereas, Cfdisk is an interactive partitioning tool that display a single device at a time. So try them out, and do not forget to comment below. Last Updated On : 26th March 2018 Facebook Twitter Pinterest', 'Fri Aug 09 15:18:52 UTC 2019', 'Fri Aug 09 15:18:56 UTC 2019', 'text/html', '8', 'www.binarytides.com', 'https://www.binarytides.com/blog/wp-content/uploads/2014/06/linux-cfdisk.png', '200', '/api/entries/14013', '1641690265132466176'], 'is_starred': 0, 'user_name': 'admin', 'user_email': '[email protected]', 'user_id': 1, 'tags': ['linux'], 'slugs': ['linux'], 'is_public': False, 'id': '14013', 'title': '9 commands to check hard disk partitions and disk space on Linux', 'url': 'https://www.binarytides.com/linux-command-check-disk-partitions/', 'content_text': ' In this post we are taking a look at some commands that can be used to check up the partitions on your system. The commands would check what partitions there are on each disk and other details like the total size, used up space and file system etc. Commands like fdisk, sfdisk and cfdisk are general partitioning tools that can not only display the partition information, but also modify them. 1. fdisk Fdisk is the most commonly used command to check the partitions on a disk. The fdisk command can display the partitions and details like file system type. However it does not report the size of each partitions. $ sudo fdisk -l\r\n\r\nDisk /dev/sda: 500.1 GB, 500107862016 bytes\r\n255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors\r\nUnits = sectors of 1 * 512 = 512 bytes\r\nSector size (logical/physical): 512 bytes / 512 bytes\r\nI/O size (minimum/optimal): 512 bytes / 512 bytes\r\nDisk identifier: 0x30093008\r\n\r\n Device Boot Start End Blocks Id System\r\n/dev/sda1 * 63 146801969 73400953+ 7 HPFS/NTFS/exFAT\r\n/dev/sda2 146802031 976771071 414984520+ f W95 Ext\'d (LBA)\r\n/dev/sda5 146802033 351614654 102406311 7 HPFS/NTFS/exFAT\r\n/dev/sda6 351614718 556427339 102406311 83 Linux\r\n/dev/sda7 556429312 560427007 1998848 82 Linux swap / Solaris\r\n/dev/sda8 560429056 976771071 208171008 83 Linux\r\n\r\nDisk /dev/sdb: 4048 MB, 4048551936 bytes\r\n54 heads, 9 sectors/track, 16270 cylinders, total 7907328 sectors\r\nUnits = sectors of 1 * 512 = 512 bytes\r\nSector size (logical/physical): 512 bytes / 512 bytes\r\nI/O size (minimum/optimal): 512 bytes / 512 bytes\r\nDisk identifier: 0x0001135d\r\n\r\n Device Boot Start End Blocks Id System\r\n/dev/sdb1 * 2048 7907327 3952640 b W95 FAT32 Each device is reported separately with details about size, seconds, id and individual partitions. 2. sfdisk Sfdisk is another utility with a purpose similar to fdisk, but with more features. It can display the size of each partition in MB. $ sudo sfdisk -l -uM\r\n\r\nDisk /dev/sda: 60801 cylinders, 255 heads, 63 sectors/track\r\nWarning: extended partition does not start at a cylinder boundary.\r\nDOS and Linux will interpret the contents differently.\r\nUnits = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0\r\n\r\n Device Boot Start End MiB #blocks Id System\r\n/dev/sda1 * 0+ 71680- 71681- 73400953+ 7 HPFS/NTFS/exFAT\r\n/dev/sda2 71680+ 476938 405259- 414984520+ f W95 Ext\'d (LBA)\r\n/dev/sda3 0 - 0 0 0 Empty\r\n/dev/sda4 0 - 0 0 0 Empty\r\n/dev/sda5 71680+ 171686- 100007- 102406311 7 HPFS/NTFS/exFAT\r\n/dev/sda6 171686+ 271693- 100007- 102406311 83 Linux\r\n/dev/sda7 271694 273645 1952 1998848 82 Linux swap / Solaris\r\n/dev/sda8 273647 476938 203292 208171008 83 Linux\r\n\r\nDisk /dev/sdb: 1020 cylinders, 125 heads, 62 sectors/track\r\nWarning: The partition table looks like it was made\r\n for C/H/S=*/54/9 (instead of 1020/125/62).\r\nFor this listing I\'ll assume that geometry.\r\nUnits = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0\r\n\r\n Device Boot Start End MiB #blocks Id System\r\n/dev/sdb1 * 1 3860 3860 3952640 b W95 FAT32\r\n start: (c,h,s) expected (4,11,6) found (0,32,33)\r\n end: (c,h,s) expected (1023,53,9) found (492,53,9)\r\n/dev/sdb2 0 - 0 0 0 Empty\r\n/dev/sdb3 0 - 0 0 0 Empty\r\n/dev/sdb4 0 - 0 0 0 Empty 3. cfdisk Cfdisk is a linux partition editor with an interactive user interface based on ncurses. It can be used to list out the existing partitions as well as create or modify them. Here is an example of how to use cfdisk to list the partitions. Cfdisk works with one partition at a time. So if you need to see the details of a particular disk, then pass the device name to cfdisk. $ sudo cfdisk /dev/sdb 4. parted Parted is yet another command line utility to list out partitions and modify them if needed. Here is an example that lists out the partition details. $ sudo parted -l\r\nModel: ATA ST3500418AS (scsi)\r\nDisk /dev/sda: 500GB\r\nSector size (logical/physical): 512B/512B\r\nPartition Table: msdos\r\n\r\nNumber Start End Size Type File system Flags\r\n 1 32.3kB 75.2GB 75.2GB primary ntfs boot\r\n 2 75.2GB 500GB 425GB extended lba\r\n 5 75.2GB 180GB 105GB logical ntfs\r\n 6 180GB 285GB 105GB logical ext4\r\n 7 285GB 287GB 2047MB logical linux-swap(v1)\r\n 8 287GB 500GB 213GB logical ext4\r\n\r\n\r\nModel: Sony Storage Media (scsi)\r\nDisk /dev/sdb: 4049MB\r\nSector size (logical/physical): 512B/512B\r\nPartition Table: msdos\r\n\r\nNumber Start End Size Type File system Flags\r\n 1 1049kB 4049MB 4048MB primary fat32 boot 5. df Df is not a partitioning utility, but prints out details about only mounted file systems. The list generated by df even includes file systems that are not real disk partitions. Here is a simple example $ df -h\r\nFilesystem Size Used Avail Use% Mounted on\r\n/dev/sda6 97G 43G 49G 48% /\r\nnone 4.0K 0 4.0K 0% /sys/fs/cgroup\r\nudev 3.9G 8.0K 3.9G 1% /dev\r\ntmpfs 799M 1.7M 797M 1% /run\r\nnone 5.0M 0 5.0M 0% /run/lock\r\nnone 3.9G 12M 3.9G 1% /run/shm\r\nnone 100M 20K 100M 1% /run/user\r\n/dev/sda8 196G 154G 33G 83% /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1\r\n/dev/sda5 98G 37G 62G 38% /media/4668484A68483B47 Only the file systems that start with a /dev are actual devices or partitions. Use grep to filter out real hard disk partitions/file systems. $ df -h | grep ^/dev\r\n/dev/sda6 97G 43G 49G 48% /\r\n/dev/sda8 196G 154G 33G 83% /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1\r\n/dev/sda5 98G 37G 62G 38% /media/4668484A68483B47 To display only real disk partitions along with partition type, use df like this $ df -h --output=source,fstype,size,used,avail,pcent,target -x tmpfs -x devtmpfs\r\nFilesystem Type Size Used Avail Use% Mounted on\r\n/dev/sda6 ext4 97G 43G 49G 48% /\r\n/dev/sda8 ext4 196G 154G 33G 83% /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1\r\n/dev/sda5 fuseblk 98G 37G 62G 38% /media/4668484A68483B47 Note that df shows only the mounted file systems or partitions and not all. 6. pydf Improved version of df, written in python. Prints out all the hard disk partitions in a easy to read manner. $ pydf\r\nFilesystem Size Used Avail Use% Mounted on \r\n/dev/sda6 96G 43G 48G 44.7 [####.....] / \r\n/dev/sda8 195G 153G 32G 78.4 [#######..] /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1\r\n/dev/sda5 98G 36G 61G 37.1 [###......] /media/4668484A68483B47 Again, pydf is limited to showing only the mounted file systems. 7. lsblk Lists out all the storage blocks, which includes disk partitions and optical drives. Details include the total size of the partition/block and the mount point if any. Does not report the used/free disk space on the partitions. $ lsblk\r\nNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT\r\nsda 8:0 0 465.8G 0 disk \r\n├─sda1 8:1 0 70G 0 part \r\n├─sda2 8:2 0 1K 0 part \r\n├─sda5 8:5 0 97.7G 0 part /media/4668484A68483B47\r\n├─sda6 8:6 0 97.7G 0 part /\r\n├─sda7 8:7 0 1.9G 0 part [SWAP]\r\n└─sda8 8:8 0 198.5G 0 part /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1\r\nsdb 8:16 1 3.8G 0 disk \r\n└─sdb1 8:17 1 3.8G 0 part \r\nsr0 11:0 1 1024M 0 rom If there is no MOUNTPOINT, then it means that the file system is not yet mounted. For cd/dvd this means that there is no disk. Lsblk is capbale of displaying more information about each device like the label and model. Check out the man page for more information 8. blkid Prints the block device (partitions and storage media) attributes like uuid and file system type. Does not report the space on the partitions. $ sudo blkid\r\n/dev/sda1: UUID="5E38BE8B38BE6227" TYPE="ntfs" \r\n/dev/sda5: UUID="4668484A68483B47" TYPE="ntfs" \r\n/dev/sda6: UUID="6fa5a72a-ba26-4588-a103-74bb6b33a763" TYPE="ext4" \r\n/dev/sda7: UUID="94443023-34a1-4428-8f65-2fb02e571dae" TYPE="swap" \r\n/dev/sda8: UUID="13f35f59-f023-4d98-b06f-9dfaebefd6c1" TYPE="ext4" \r\n/dev/sdb1: UUID="08D1-8024" TYPE="vfat" 9. hwinfo The hwinfo is a general purpose hardware information tool and can be used to print out the disk and partition list. The output however does not print details about each partition like the above commands. $ hwinfo --block --short\r\ndisk: \r\n /dev/sda ST3500418AS\r\n /dev/sdb Sony Storage Media\r\npartition:\r\n /dev/sda1 Partition\r\n /dev/sda2 Partition\r\n /dev/sda5 Partition\r\n /dev/sda6 Partition\r\n /dev/sda7 Partition\r\n /dev/sda8 Partition\r\n /dev/sdb1 Partition\r\ncdrom:\r\n /dev/sr0 SONY DVD RW DRU-190A Summary The output of parted is concise and complete to get an overview of different partitions, file system on them and the total space. Pydf and df are limited to showing only mounted file systems and the same on them. Fdisk and Sfdisk show a whole lot of information that can take sometime to interpret whereas, Cfdisk is an interactive partitioning tool that display a single device at a time. So try them out, and do not forget to comment below. Last Updated On : 26th March 2018 Facebook Twitter Pinterest', 'created_at': '2019-08-09T15:18:52Z', 'updated_at': '2019-08-09T15:18:56Z', 'mimetype': 'text/html', 'reading_time': 8, 'domain_name': 'www.binarytides.com', 'preview_picture': 'https://www.binarytides.com/blog/wp-content/uploads/2014/06/linux-cfdisk.png', 'http_status': 200, '_links': ['/api/entries/14013'], 'content': '<div id="post_start">\n<p>In this post we are taking a look at some commands that can be used to check up the partitions on your system. The commands would check what partitions there are on each disk and other details like the total size, used up space and file system etc.</p>\n<pre class="adflexi">\n\n\n<ins class="adsbygoogle" data-ad-client="ca-pub-5814774904969415" data-ad-slot="0700059493">\n\n\n</ins></pre></div>\n\n\n\n\n\n<p>Commands like fdisk, sfdisk and cfdisk are general partitioning tools that can not only display the partition information, but also modify them.</p>\n<h3>1. fdisk</h3>\n<p>Fdisk is the most commonly used command to check the partitions on a disk. The fdisk command can display the partitions and details like file system type. However it does not report the size of each partitions.</p>\n<pre class="terminal">$ sudo fdisk -l \n \nDisk /dev/sda: 500.1 GB, 500107862016 bytes \n255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors \nUnits = sectors of 1 * 512 = 512 bytes \nSector size (logical/physical): 512 bytes / 512 bytes \nI/O size (minimum/optimal): 512 bytes / 512 bytes \nDisk identifier: 0x30093008 \n \n Device Boot Start End Blocks Id System \n/dev/sda1 * 63 146801969 73400953+ 7 HPFS/NTFS/exFAT \n/dev/sda2 146802031 976771071 414984520+ f W95 Ext\'d (LBA) \n/dev/sda5 146802033 351614654 102406311 7 HPFS/NTFS/exFAT \n/dev/sda6 351614718 556427339 102406311 83 Linux \n/dev/sda7 556429312 560427007 1998848 82 Linux swap / Solaris \n/dev/sda8 560429056 976771071 208171008 83 Linux \n \nDisk /dev/sdb: 4048 MB, 4048551936 bytes \n54 heads, 9 sectors/track, 16270 cylinders, total 7907328 sectors \nUnits = sectors of 1 * 512 = 512 bytes \nSector size (logical/physical): 512 bytes / 512 bytes \nI/O size (minimum/optimal): 512 bytes / 512 bytes \nDisk identifier: 0x0001135d \n \n Device Boot Start End Blocks Id System \n/dev/sdb1 * 2048 7907327 3952640 b W95 FAT32</pre>\n<p>Each device is reported separately with details about size, seconds, id and individual partitions.</p>\n<h3>2. sfdisk</h3>\n<p>Sfdisk is another utility with a purpose similar to fdisk, but with more features. It can display the size of each partition in MB.</p>\n<pre class="terminal">$ sudo sfdisk -l -uM \n \nDisk /dev/sda: 60801 cylinders, 255 heads, 63 sectors/track \nWarning: extended partition does not start at a cylinder boundary. \nDOS and Linux will interpret the contents differently. \nUnits = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0 \n \n Device Boot Start End MiB #blocks Id System \n/dev/sda1 * 0+ 71680- 71681- 73400953+ 7 HPFS/NTFS/exFAT \n/dev/sda2 71680+ 476938 405259- 414984520+ f W95 Ext\'d (LBA) \n/dev/sda3 0 - 0 0 0 Empty \n/dev/sda4 0 - 0 0 0 Empty \n/dev/sda5 71680+ 171686- 100007- 102406311 7 HPFS/NTFS/exFAT \n/dev/sda6 171686+ 271693- 100007- 102406311 83 Linux \n/dev/sda7 271694 273645 1952 1998848 82 Linux swap / Solaris \n/dev/sda8 273647 476938 203292 208171008 83 Linux \n \nDisk /dev/sdb: 1020 cylinders, 125 heads, 62 sectors/track \nWarning: The partition table looks like it was made \n for C/H/S=*/54/9 (instead of 1020/125/62). \nFor this listing I\'ll assume that geometry. \nUnits = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0 \n \n Device Boot Start End MiB #blocks Id System \n/dev/sdb1 * 1 3860 3860 3952640 b W95 FAT32 \n start: (c,h,s) expected (4,11,6) found (0,32,33) \n end: (c,h,s) expected (1023,53,9) found (492,53,9) \n/dev/sdb2 0 - 0 0 0 Empty \n/dev/sdb3 0 - 0 0 0 Empty \n/dev/sdb4 0 - 0 0 0 Empty</pre><pre class="adwrap">\n\n\n<ins class="adsbygoogle" data-ad-client="ca-pub-5814774904969415" data-ad-slot="7125586293">\n\n\n</ins></pre>\n\n\n<h3>3. cfdisk</h3>\n<p>Cfdisk is a linux partition editor with an interactive user interface based on ncurses. It can be used to list out the existing partitions as well as create or modify them. </p>\n<p>Here is an example of how to use cfdisk to list the partitions.</p>\n<p><img src="https://www.binarytides.com/blog/wp-content/uploads/2014/06/linux-cfdisk.png" alt="linux cfdisk disk partitions" width="640" height="480" class="alignnone size-full wp-image-7267" srcset="https://www.binarytides.com/blog/wp-content/uploads/2014/06/linux-cfdisk.png 640w, https://www.binarytides.com/blog/wp-content/uploads/2014/06/linux-cfdisk-300x225.png 300w, https://www.binarytides.com/blog/wp-content/uploads/2014/06/linux-cfdisk-600x450.png 600w" /></p>\n<p>Cfdisk works with one partition at a time. So if you need to see the details of a particular disk, then pass the device name to cfdisk.</p>\n<pre class="terminal">$ sudo cfdisk /dev/sdb</pre>\n<h3>4. parted</h3>\n<p>Parted is yet another command line utility to list out partitions and modify them if needed.<br />\nHere is an example that lists out the partition details.</p>\n<pre class="terminal">$ sudo parted -l \nModel: ATA ST3500418AS (scsi) \nDisk /dev/sda: 500GB \nSector size (logical/physical): 512B/512B \nPartition Table: msdos \n \nNumber Start End Size Type File system Flags \n 1 32.3kB 75.2GB 75.2GB primary ntfs boot \n 2 75.2GB 500GB 425GB extended lba \n 5 75.2GB 180GB 105GB logical ntfs \n 6 180GB 285GB 105GB logical ext4 \n 7 285GB 287GB 2047MB logical linux-swap(v1) \n 8 287GB 500GB 213GB logical ext4 \n \n \nModel: Sony Storage Media (scsi) \nDisk /dev/sdb: 4049MB \nSector size (logical/physical): 512B/512B \nPartition Table: msdos \n \nNumber Start End Size Type File system Flags \n 1 1049kB 4049MB 4048MB primary fat32 boot</pre>\n<h3>5. df</h3>\n<p>Df is not a partitioning utility, but prints out details about only mounted file systems. The list generated by df even includes file systems that are not real disk partitions.</p>\n<p>Here is a simple example</p>\n<pre class="terminal">$ df -h \nFilesystem Size Used Avail Use% Mounted on \n/dev/sda6 97G 43G 49G 48% / \nnone 4.0K 0 4.0K 0% /sys/fs/cgroup \nudev 3.9G 8.0K 3.9G 1% /dev \ntmpfs 799M 1.7M 797M 1% /run \nnone 5.0M 0 5.0M 0% /run/lock \nnone 3.9G 12M 3.9G 1% /run/shm \nnone 100M 20K 100M 1% /run/user \n/dev/sda8 196G 154G 33G 83% /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1 \n/dev/sda5 98G 37G 62G 38% /media/4668484A68483B47</pre>\n<p>Only the file systems that start with a /dev are actual devices or partitions.<br />\nUse grep to filter out real hard disk partitions/file systems.</p>\n<pre class="terminal">$ df -h | grep ^/dev \n/dev/sda6 97G 43G 49G 48% / \n/dev/sda8 196G 154G 33G 83% /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1 \n/dev/sda5 98G 37G 62G 38% /media/4668484A68483B47</pre>\n<p>To display only real disk partitions along with partition type, use df like this</p>\n<pre class="terminal">$ df -h --output=source,fstype,size,used,avail,pcent,target -x tmpfs -x devtmpfs \nFilesystem Type Size Used Avail Use% Mounted on \n/dev/sda6 ext4 97G 43G 49G 48% / \n/dev/sda8 ext4 196G 154G 33G 83% /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1 \n/dev/sda5 fuseblk 98G 37G 62G 38% /media/4668484A68483B47</pre>\n<p>Note that df shows only the mounted file systems or partitions and not all.</p>\n<h3>6. pydf</h3>\n<p>Improved version of df, written in python. Prints out all the hard disk partitions in a easy to read manner.</p>\n<pre class="terminal">$ pydf \nFilesystem Size Used Avail Use% Mounted on \n/dev/sda6 96G 43G 48G 44.7 [####.....] / \n/dev/sda8 195G 153G 32G 78.4 [#######..] /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1 \n/dev/sda5 98G 36G 61G 37.1 [###......] /media/4668484A68483B47</pre>\n<p>Again, pydf is limited to showing only the mounted file systems.</p>\n<h3>7. lsblk</h3>\n<p>Lists out all the storage blocks, which includes disk partitions and optical drives. Details include the total size of the partition/block and the mount point if any.<br />\nDoes not report the used/free disk space on the partitions.</p>\n<pre class="terminal">$ lsblk \nNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT \nsda 8:0 0 465.8G 0 disk \n├─sda1 8:1 0 70G 0 part \n├─sda2 8:2 0 1K 0 part \n├─sda5 8:5 0 97.7G 0 part /media/4668484A68483B47 \n├─sda6 8:6 0 97.7G 0 part / \n├─sda7 8:7 0 1.9G 0 part [SWAP] \n└─sda8 8:8 0 198.5G 0 part /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1 \nsdb 8:16 1 3.8G 0 disk \n└─sdb1 8:17 1 3.8G 0 part \nsr0 11:0 1 1024M 0 rom</pre>\n<p>If there is no MOUNTPOINT, then it means that the file system is not yet mounted. For cd/dvd this means that there is no disk.</p>\n<p>Lsblk is capbale of displaying more information about each device like the label and model. Check out the man page for more information</p>\n<h3>8. blkid</h3>\n<p>Prints the block device (partitions and storage media) attributes like uuid and file system type. Does not report the space on the partitions.</p>\n<pre class="terminal">$ sudo blkid \n/dev/sda1: UUID="5E38BE8B38BE6227" TYPE="ntfs" \n/dev/sda5: UUID="4668484A68483B47" TYPE="ntfs" \n/dev/sda6: UUID="6fa5a72a-ba26-4588-a103-74bb6b33a763" TYPE="ext4" \n/dev/sda7: UUID="94443023-34a1-4428-8f65-2fb02e571dae" TYPE="swap" \n/dev/sda8: UUID="13f35f59-f023-4d98-b06f-9dfaebefd6c1" TYPE="ext4" \n/dev/sdb1: UUID="08D1-8024" TYPE="vfat"</pre>\n<h3>9. hwinfo</h3>\n<p>The hwinfo is a general purpose hardware information tool and can be used to print out the disk and partition list. The output however does not print details about each partition like the above commands.</p>\n<pre class="terminal">$ hwinfo --block --short \ndisk: \n /dev/sda ST3500418AS \n /dev/sdb Sony Storage Media \npartition: \n /dev/sda1 Partition \n /dev/sda2 Partition \n /dev/sda5 Partition \n /dev/sda6 Partition \n /dev/sda7 Partition \n /dev/sda8 Partition \n /dev/sdb1 Partition \ncdrom: \n /dev/sr0 SONY DVD RW DRU-190A</pre>\n<h3>Summary</h3>\n<p>The output of parted is concise and complete to get an overview of different partitions, file system on them and the total space. Pydf and df are limited to showing only mounted file systems and the same on them.</p>\n<p>Fdisk and Sfdisk show a whole lot of information that can take sometime to interpret whereas, Cfdisk is an interactive partitioning tool that display a single device at a time.</p>\n<p>So try them out, and do not forget to comment below.</p>\n<div class="updated_on">Last Updated On : 26th March 2018</div>\n<div id="dpsp-content-bottom" class="dpsp-content-wrapper dpsp-shape-rectangular dpsp-column-auto dpsp-has-spacing dpsp-hide-on-mobile dpsp-button-style-1 dpsp-has-icon-background dpsp-has-button-background"><ul class="dpsp-networks-btns-wrapper dpsp-networks-btns-content"><li><a rel="nofollow" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.binarytides.com%2Flinux-command-check-disk-partitions%2F&t=9%20commands%20to%20check%20hard%20disk%20partitions%20and%20disk%20space%20on%20Linux" class="dpsp-network-btn dpsp-facebook dpsp-first">Facebook</a></li><li><a rel="nofollow" href="https://twitter.com/intent/tweet?text=9%20commands%20to%20check%20hard%20disk%20partitions%20and%20disk%20space%20on%20Linux&url=https%3A%2F%2Fwww.binarytides.com%2Flinux-command-check-disk-partitions%2F" class="dpsp-network-btn dpsp-twitter">Twitter</a></li><li><a rel="nofollow" href="#" class="dpsp-network-btn dpsp-pinterest dpsp-last">Pinterest</a></li></ul></div>'},)
({'is_archived': 1, 'all': ['1', '0', 'admin', '[email protected]', '1', 'sales.and.marketing', 'sales', 'sales-and-marketing', 'sales', '0', '14011', 'What is the difference between business development and sales?', 'https://www.quora.com/What-is-the-difference-between-business-development-and-sales', '<div class="QuestionArea"><div id="wdIwxQJw1"><div id="wdIwxQJw3"><div class="TopicList QuestionTopicHorizontalList" id="__w2_wdIwxQJw4_topics_list"><div id="wJvrSAV31"><div class="QuestionTopicHorizontalListItems Toggle TopicListItems2 QuestionTopicListItems SimpleToggle" id="__w2_wJvrSAV32__truncated"><div class="QuestionTopicListItem TopicListItem topic_pill" id="__w2_wbMn7CN12_topic_list_item"><div class="u-inline-block u-nowrap"><div id="wbMn7CN17"><a class="HoverMenu TopicNameLink topic_name" href="https://www.quora.com/topic/Business-Development" id="__w2_wbMn7CN18_link">Business Development</a></div></div></div><div class="QuestionTopicListItem TopicListItem topic_pill" id="__w2_wbMn7CN14_topic_list_item"><div class="u-inline-block u-nowrap"><div id="wbMn7CN19"><a class="HoverMenu TopicNameLink topic_name" href="https://www.quora.com/topic/Business-Models" id="__w2_wbMn7CN110_link">Business Models</a></div></div></div><div class="QuestionTopicListItem TopicListItem topic_pill" id="__w2_wbMn7CN16_topic_list_item"><div class="u-inline-block u-nowrap"><div id="wbMn7CN111"><a class="HoverMenu TopicNameLink topic_name" href="https://www.quora.com/topic/Sales" id="__w2_wbMn7CN112_link">Sales</a></div></div></div></div></div></div></div><div id="wdIwxQJw5"><div class="question_text_edit"><h1>What is the difference between business development and sales?</h1></div></div><div id="wdIwxQJw7"></div></div><div class="PromotedQuestionPageTopSlotAnswer PromotedQuestionPageAnswer Answer AnswerBase" data-clog-metadata="{}" id="__w2_w22ZAHUv48_answer"><div class="question_title">What are the top project management software and team management tools?</div><div id="__w2_w22ZAHUv48_answer_content"><div id="w22ZAHUv50"><div class="u-serif-font-main--regular"><div class="ui_qtext_truncated ui_qtext_truncated_compact"><div class="ui_qtext_truncated_text"><p class="ui_qtext_para u-ltr u-text-align--start"><a href="https://monday.com/lp/qu/pm-trial-stat/?utm_banner=answers&utm_campaign=teampm&utm_source=quorapaid" rel="noopener nofollow" target="_blank" class="external_link" data-qt-tooltip="monday.com">monday.com</a> is ideal for managing projects and teams. What’s great about this tool is you can really manage both with enough flexibility to do things your way.</p><p class="ui_qtext_para u-ltr u-text-align--start">The issue with so m...</p></div><a class="ui_qtext_more_link promoted_answer_link" href="#" id="__w2_w22ZAHUv53_more">(Continue Reading)</a></div></div></div></div></div><div class="UnifiedAnswer Toggle Answer AnswerBase" data-clog-metadata="{}" id="__w2_wXnJnIKq9_answer"><div id="wXnJnIKq10"><div class="AnswerHeader ContentHeader"><div class="ui_layout_photo_text u-flex ui_layout_size--small"><div class="ui_layout_photo_wrapper u-flex-none"><div class="ui_layout_photo u-relative"><div class="u-flex-inline" id="wXnJnIKq18"><a class="u-flex-inline" href="https://www.quora.com/profile/CJ-Cornell"><img class="ui_avatar_photo ui_avatar--border-circular" src="https://qph.fs.quoracdn.net/main-thumb-50102-100-ctzihugyuwbbtbdbpylrbgbpubzermjg.jpeg" alt="CJ Cornell" /></a></div></div></div><div class="ui_layout_text u-flex-auto u-width--100 u-flex-align-self--center"><div class="u-flex u-flex-justify--between"><div class="u-margin-right--sm u-width--100"><div class="feed_item_answer_user"><a class="user" href="https://www.quora.com/profile/CJ-Cornell" id="__w2_wXnJnIKq30_name_link">CJ Cornell</a>, 7x Entrepreneur, Angel Investor, Author, EShip Professor</div><div class="AnswerCredibilityFacts CredibilityFacts pass_color_to_child_links"><a class="answer_permalink" href="https://www.quora.com/What-is-the-difference-between-business-development-and-sales/answer/CJ-Cornell" id="__w2_wXnJnIKq32_link">Updated 73w ago</a> · Author has 108 answers and 284.2k answer views</div></div></div></div></div></div></div><div id="__w2_wXnJnIKq9_answer_content"><div class="ExpandedAnswer ExpandedContent" id="__w2_wXnJnIKq13_expanded_content"><div id="wXnJnIKq15"><div class="u-serif-font-main--regular"><div class="ui_qtext_expanded"><p class="ui_qtext_para u-ltr u-text-align--start">Here are the Definitions / Semantics.</p><p class="ui_qtext_para u-ltr u-text-align--start">Note that, while inside smaller companies the same person takes on multiple roles at different times (such a VP or CEO) - it is still important to know the difference:</p><p class="ui_qtext_para u-ltr u-text-align--start"><b>Sales = Transactions.</b></p><p class="ui_qtext_para u-ltr u-text-align--start">Sales is responsible for selling a specific product or service, with a clear price and value, to an identifiable <i>individual customer</i>. Sales is the activity that happens once the specific customer is identified.</p><p class="ui_qtext_para u-ltr u-text-align--start"><b>Marketing:</b></p><p class="ui_qtext_para u-ltr u-text-align--start">Identifies the <i>needs and types</i> of customers so it can <i>attract</i> customers. Marketing devises the best way to get the products into the hands of the customers. Marketing often plays a big role in product development in gathering or validating the feature/benefits required by customers (or by the overall market).</p><p class="ui_qtext_para u-ltr u-text-align--start">Marketing exists to make sales easier. (h/t to Jason Lemkin)</p><p class="ui_qtext_para u-ltr u-text-align--start"><b>Strategic marketing </b>focuses on customers as <i>groups - </i>to better understand how to differentiate the product, and how to more effectively target and sell the products to each group.</p><p class="ui_qtext_para u-ltr u-text-align--start"><b>Tactical marketing </b>focuses on getting customers<i> closer to the sales transaction</i>. Marketing-promotions, trial offers etc are usually in this category. This is about attracting customers.</p><p class="ui_qtext_para u-ltr u-text-align--start">For an ecommerce business, marketing goes all the way to the transaction, and "sales" is automated. In other businesses, marketing brings customers to "the door" while sales tries to convert the customer\'s interest or presence into a transaction.</p><p class="ui_qtext_para u-ltr u-text-align--start"><b><i>Business Development:</i></b></p><p class="ui_qtext_para u-ltr u-text-align--start">Identifies and executes NEW areas of business - new markets, new distribution channels, new products: typically through the use of <b>partnerships</b> between another company and an internal department at your company.</p><p class="ui_qtext_para u-ltr u-text-align--start">The focus of "bizdev" is on new and <i>atypical</i>, interactions with external partners - who are *<b><i>not</i></b>* customers or sales prospects. These potential partners <i>may one day </i>be customers - maybe - but they are not <i>current </i>sales prospects. Once the business is no longer new, and becomes a repeatable kind of business, then the relationship transitions to another part of the company (sales, marketing, product development, engineering). .</p><p class="ui_qtext_para u-ltr u-text-align--start"><b>For Business Development, the goal is </b><b><i>not</i></b><b> a sales transaction:</b></p><p class="ui_qtext_para u-ltr u-text-align--start">Business Development is not formally empowered to sell a product directly to a customer or customers - otherwise they would be competing with the Sales team.</p><p class="ui_qtext_para u-ltr u-text-align--start">Business Development should <i>never </i>be dealing with the sale of existing products to existing (identifiable) customers, no matter how large the revenue opportunity - only sales does that. Nor should Bizdev be setting up distribution channels - this is a marketing function.</p><p class="ui_qtext_para u-ltr u-text-align--start"><b><i>Example</i></b></p><p class="ui_qtext_para u-ltr u-text-align--start">For instance, when Amazon decided to add online movies to it\'s product offerings: Initially this was a bizdev role because of a brand new area of business - with a new business model, new distribution, etc. that required an external partner(s) working with internal Amazon departments. Bizdev would be coordinating the internal/external activity until all had the licensing terms fleshed out, pricing, marketing strategy, created a new area of the site with new kinds of distribution ... once that all happens it is standard business, and then out of the hands of bizdev and then- driven by marketing, sales, product etc.</p><p class="ui_qtext_para u-ltr u-text-align--start"><b>A</b><b><i> Sales Executive</i></b> (probably not a role that should formally exist in a pure online / ecommerce company) would either focus on <i>\'big ticket\' sales </i>that require the longest 1-1/face to face selling cycle, <i>and/or manages other sales personnel</i>.</p><p class="ui_qtext_para u-ltr u-text-align--start">For instance, at a car dealership: The Sales Executive might manage the floor sales personnel (deciding commissions policy etc), while also being the person to negotiate a deal with a large business to buy 50 vehicles for use as company cars.</p><p class="ui_qtext_para u-ltr u-text-align--start"><b>CONFUSION</b></p><p class="ui_qtext_para u-ltr u-text-align--start">Be wary of folks who take the stance of defining any of these terms loosely, as they please.</p><p class="ui_qtext_para u-ltr u-text-align--start"><b>Quotas and Commissions</b></p><p class="ui_qtext_para u-ltr u-text-align--start">If a job posting or job description for a Business Development Manager talks about a "Quota" or Commission - then it is a Sales Position. While Bizdev professionals often have significant performance-based goals, and compensation - they are never measured in terms of minimum number of \'transactions\'. Business Development is <i>process </i>oriented: The process and outcomes change depending on the market, the competition and partners. The nature of the conversations (and outcomes) change depending on who the partner is.</p><p class="ui_qtext_para u-ltr u-text-align--start"><b>The Bizdev Role vs Sales</b></p><p class="ui_qtext_para u-ltr u-text-align--start">Sales is transaction oriented. The terms and nature of the product, or of the customers don\'t change that much - even with custom products or big-ticket sales. A sales executive simply can\'t say "we sell compact cars - but if you want a truck or a van, we certainly can build and sell you one". Business Development can\'t say that either. Bizdev might say: "our company strategy has been to eventually get into the truck market, and we need to find partners who can augment our car building experience with truck building - so one day Sales can sell a lot of trucks"</p><ul><li><b>Marketing</b> - attracts customers to the front door of the building.</li><li><b>Sales</b> - convinces the customer to go from the door to the cash register.</li><li><b>Business Development</b> - works to create new buildings.</li></ul><p class="ui_qtext_para u-ltr u-text-align--start">Sure it\'s perfectly acceptable and common for companies to combine roles - but a Business Development professional from one company doesn\'t want to find himself in discussions with another "Bizdev Exec" only to find out that it\'s really a sales-call.</p></div></div><div id="wXnJnIKq23"><div id="__w2_wXnJnIKq13_survey_wrapper"></div></div></div></div></div></div></div>', 'Business Development Business Models Sales What is the difference between business development and sales? What are the top project management software and team management tools? monday.com is ideal for managing projects and teams. What’s great about this tool is you can really manage both with enough flexibility to do things your way. The issue with so m... (Continue Reading) CJ Cornell , 7x Entrepreneur, Angel Investor, Author, EShip Professor Updated 73w ago · Author has 108 answers and 284.2k answer views Here are the Definitions / Semantics. Note that, while inside smaller companies the same person takes on multiple roles at different times (such a VP or CEO) - it is still important to know the difference: Sales = Transactions. Sales is responsible for selling a specific product or service, with a clear price and value, to an identifiable individual customer . Sales is the activity that happens once the specific customer is identified. Marketing: Identifies the needs and types of customers so it can attract customers. Marketing devises the best way to get the products into the hands of the customers. Marketing often plays a big role in product development in gathering or validating the feature/benefits required by customers (or by the overall market). Marketing exists to make sales easier. (h/t to Jason Lemkin) Strategic marketing focuses on customers as groups - to better understand how to differentiate the product, and how to more effectively target and sell the products to each group. Tactical marketing focuses on getting customers closer to the sales transaction . Marketing-promotions, trial offers etc are usually in this category. This is about attracting customers. For an ecommerce business, marketing goes all the way to the transaction, and "sales" is automated. In other businesses, marketing brings customers to "the door" while sales tries to convert the customer\'s interest or presence into a transaction. Business Development: Identifies and executes NEW areas of business - new markets, new distribution channels, new products: typically through the use of partnerships between another company and an internal department at your company. The focus of "bizdev" is on new and atypical , interactions with external partners - who are * not * customers or sales prospects. These potential partners may one day be customers - maybe - but they are not current sales prospects. Once the business is no longer new, and becomes a repeatable kind of business, then the relationship transitions to another part of the company (sales, marketing, product development, engineering). . For Business Development, the goal is not a sales transaction: Business Development is not formally empowered to sell a product directly to a customer or customers - otherwise they would be competing with the Sales team. Business Development should never be dealing with the sale of existing products to existing (identifiable) customers, no matter how large the revenue opportunity - only sales does that. Nor should Bizdev be setting up distribution channels - this is a marketing function. Example For instance, when Amazon decided to add online movies to it\'s product offerings: Initially this was a bizdev role because of a brand new area of business - with a new business model, new distribution, etc. that required an external partner(s) working with internal Amazon departments. Bizdev would be coordinating the internal/external activity until all had the licensing terms fleshed out, pricing, marketing strategy, created a new area of the site with new kinds of distribution ... once that all happens it is standard business, and then out of the hands of bizdev and then- driven by marketing, sales, product etc. A Sales Executive (probably not a role that should formally exist in a pure online / ecommerce company) would either focus on \'big ticket\' sales that require the longest 1-1/face to face selling cycle, and/or manages other sales personnel . For instance, at a car dealership: The Sales Executive might manage the floor sales personnel (deciding commissions policy etc), while also being the person to negotiate a deal with a large business to buy 50 vehicles for use as company cars. CONFUSION Be wary of folks who take the stance of defining any of these terms loosely, as they please. Quotas and Commissions If a job posting or job description for a Business Development Manager talks about a "Quota" or Commission - then it is a Sales Position. While Bizdev professionals often have significant performance-based goals, and compensation - they are never measured in terms of minimum number of \'transactions\'. Business Development is process oriented: The process and outcomes change depending on the market, the competition and partners. The nature of the conversations (and outcomes) change depending on who the partner is. The Bizdev Role vs Sales Sales is transaction oriented. The terms and nature of the product, or of the customers don\'t change that much - even with custom products or big-ticket sales. A sales executive simply can\'t say "we sell compact cars - but if you want a truck or a van, we certainly can build and sell you one". Business Development can\'t say that either. Bizdev might say: "our company strategy has been to eventually get into the truck market, and we need to find partners who can augment our car building experience with truck building - so one day Sales can sell a lot of trucks" Marketing - attracts customers to the front door of the building. Sales - convinces the customer to go from the door to the cash register. Business Development - works to create new buildings. Sure it\'s perfectly acceptable and common for companies to combine roles - but a Business Development professional from one company doesn\'t want to find himself in discussions with another "Bizdev Exec" only to find out that it\'s really a sales-call.', 'Fri Aug 02 21:43:44 UTC 2019', 'Fri Aug 02 21:43:59 UTC 2019', 'text/html', 'en', '4', 'www.quora.com', '200', '/api/entries/14011', '1641690267252686848'], 'is_starred': 0, 'user_name': 'admin', 'user_email': '[email protected]', 'user_id': 1, 'tags': ['sales.and.marketing', 'sales'], 'slugs': ['sales-and-marketing', 'sales'], 'is_public': False, 'id': '14011', 'title': 'What is the difference between business development and sales?', 'url': 'https://www.quora.com/What-is-the-difference-between-business-development-and-sales', 'content_text': 'Business Development Business Models Sales What is the difference between business development and sales? What are the top project management software and team management tools? monday.com is ideal for managing projects and teams. What’s great about this tool is you can really manage both with enough flexibility to do things your way. The issue with so m... (Continue Reading) CJ Cornell , 7x Entrepreneur, Angel Investor, Author, EShip Professor Updated 73w ago · Author has 108 answers and 284.2k answer views Here are the Definitions / Semantics. Note that, while inside smaller companies the same person takes on multiple roles at different times (such a VP or CEO) - it is still important to know the difference: Sales = Transactions. Sales is responsible for selling a specific product or service, with a clear price and value, to an identifiable individual customer . Sales is the activity that happens once the specific customer is identified. Marketing: Identifies the needs and types of customers so it can attract customers. Marketing devises the best way to get the products into the hands of the customers. Marketing often plays a big role in product development in gathering or validating the feature/benefits required by customers (or by the overall market). Marketing exists to make sales easier. (h/t to Jason Lemkin) Strategic marketing focuses on customers as groups - to better understand how to differentiate the product, and how to more effectively target and sell the products to each group. Tactical marketing focuses on getting customers closer to the sales transaction . Marketing-promotions, trial offers etc are usually in this category. This is about attracting customers. For an ecommerce business, marketing goes all the way to the transaction, and "sales" is automated. In other businesses, marketing brings customers to "the door" while sales tries to convert the customer\'s interest or presence into a transaction. Business Development: Identifies and executes NEW areas of business - new markets, new distribution channels, new products: typically through the use of partnerships between another company and an internal department at your company. The focus of "bizdev" is on new and atypical , interactions with external partners - who are * not * customers or sales prospects. These potential partners may one day be customers - maybe - but they are not current sales prospects. Once the business is no longer new, and becomes a repeatable kind of business, then the relationship transitions to another part of the company (sales, marketing, product development, engineering). . For Business Development, the goal is not a sales transaction: Business Development is not formally empowered to sell a product directly to a customer or customers - otherwise they would be competing with the Sales team. Business Development should never be dealing with the sale of existing products to existing (identifiable) customers, no matter how large the revenue opportunity - only sales does that. Nor should Bizdev be setting up distribution channels - this is a marketing function. Example For instance, when Amazon decided to add online movies to it\'s product offerings: Initially this was a bizdev role because of a brand new area of business - with a new business model, new distribution, etc. that required an external partner(s) working with internal Amazon departments. Bizdev would be coordinating the internal/external activity until all had the licensing terms fleshed out, pricing, marketing strategy, created a new area of the site with new kinds of distribution ... once that all happens it is standard business, and then out of the hands of bizdev and then- driven by marketing, sales, product etc. A Sales Executive (probably not a role that should formally exist in a pure online / ecommerce company) would either focus on \'big ticket\' sales that require the longest 1-1/face to face selling cycle, and/or manages other sales personnel . For instance, at a car dealership: The Sales Executive might manage the floor sales personnel (deciding commissions policy etc), while also being the person to negotiate a deal with a large business to buy 50 vehicles for use as company cars. CONFUSION Be wary of folks who take the stance of defining any of these terms loosely, as they please. Quotas and Commissions If a job posting or job description for a Business Development Manager talks about a "Quota" or Commission - then it is a Sales Position. While Bizdev professionals often have significant performance-based goals, and compensation - they are never measured in terms of minimum number of \'transactions\'. Business Development is process oriented: The process and outcomes change depending on the market, the competition and partners. The nature of the conversations (and outcomes) change depending on who the partner is. The Bizdev Role vs Sales Sales is transaction oriented. The terms and nature of the product, or of the customers don\'t change that much - even with custom products or big-ticket sales. A sales executive simply can\'t say "we sell compact cars - but if you want a truck or a van, we certainly can build and sell you one". Business Development can\'t say that either. Bizdev might say: "our company strategy has been to eventually get into the truck market, and we need to find partners who can augment our car building experience with truck building - so one day Sales can sell a lot of trucks" Marketing - attracts customers to the front door of the building. Sales - convinces the customer to go from the door to the cash register. Business Development - works to create new buildings. Sure it\'s perfectly acceptable and common for companies to combine roles - but a Business Development professional from one company doesn\'t want to find himself in discussions with another "Bizdev Exec" only to find out that it\'s really a sales-call.', 'created_at': '2019-08-02T21:43:44Z', 'updated_at': '2019-08-02T21:43:59Z', 'mimetype': 'text/html', 'language': 'en', 'reading_time': 4, 'domain_name': 'www.quora.com', 'http_status': 200, '_links': ['/api/entries/14011'], 'content': '<div class="QuestionArea"><div id="wdIwxQJw1"><div id="wdIwxQJw3"><div class="TopicList QuestionTopicHorizontalList" id="__w2_wdIwxQJw4_topics_list"><div id="wJvrSAV31"><div class="QuestionTopicHorizontalListItems Toggle TopicListItems2 QuestionTopicListItems SimpleToggle" id="__w2_wJvrSAV32__truncated"><div class="QuestionTopicListItem TopicListItem topic_pill" id="__w2_wbMn7CN12_topic_list_item"><div class="u-inline-block u-nowrap"><div id="wbMn7CN17"><a class="HoverMenu TopicNameLink topic_name" href="https://www.quora.com/topic/Business-Development" id="__w2_wbMn7CN18_link">Business Development</a></div></div></div><div class="QuestionTopicListItem TopicListItem topic_pill" id="__w2_wbMn7CN14_topic_list_item"><div class="u-inline-block u-nowrap"><div id="wbMn7CN19"><a class="HoverMenu TopicNameLink topic_name" href="https://www.quora.com/topic/Business-Models" id="__w2_wbMn7CN110_link">Business Models</a></div></div></div><div class="QuestionTopicListItem TopicListItem topic_pill" id="__w2_wbMn7CN16_topic_list_item"><div class="u-inline-block u-nowrap"><div id="wbMn7CN111"><a class="HoverMenu TopicNameLink topic_name" href="https://www.quora.com/topic/Sales" id="__w2_wbMn7CN112_link">Sales</a></div></div></div></div></div></div></div><div id="wdIwxQJw5"><div class="question_text_edit"><h1>What is the difference between business development and sales?</h1></div></div><div id="wdIwxQJw7"></div></div><div class="PromotedQuestionPageTopSlotAnswer PromotedQuestionPageAnswer Answer AnswerBase" data-clog-metadata="{}" id="__w2_w22ZAHUv48_answer"><div class="question_title">What are the top project management software and team management tools?</div><div id="__w2_w22ZAHUv48_answer_content"><div id="w22ZAHUv50"><div class="u-serif-font-main--regular"><div class="ui_qtext_truncated ui_qtext_truncated_compact"><div class="ui_qtext_truncated_text"><p class="ui_qtext_para u-ltr u-text-align--start"><a href="https://monday.com/lp/qu/pm-trial-stat/?utm_banner=answers&utm_campaign=teampm&utm_source=quorapaid" rel="noopener nofollow" target="_blank" class="external_link" data-qt-tooltip="monday.com">monday.com</a> is ideal for managing projects and teams. What’s great about this tool is you can really manage both with enough flexibility to do things your way.</p><p class="ui_qtext_para u-ltr u-text-align--start">The issue with so m...</p></div><a class="ui_qtext_more_link promoted_answer_link" href="#" id="__w2_w22ZAHUv53_more">(Continue Reading)</a></div></div></div></div></div><div class="UnifiedAnswer Toggle Answer AnswerBase" data-clog-metadata="{}" id="__w2_wXnJnIKq9_answer"><div id="wXnJnIKq10"><div class="AnswerHeader ContentHeader"><div class="ui_layout_photo_text u-flex ui_layout_size--small"><div class="ui_layout_photo_wrapper u-flex-none"><div class="ui_layout_photo u-relative"><div class="u-flex-inline" id="wXnJnIKq18"><a class="u-flex-inline" href="https://www.quora.com/profile/CJ-Cornell"><img class="ui_avatar_photo ui_avatar--border-circular" src="https://qph.fs.quoracdn.net/main-thumb-50102-100-ctzihugyuwbbtbdbpylrbgbpubzermjg.jpeg" alt="CJ Cornell" /></a></div></div></div><div class="ui_layout_text u-flex-auto u-width--100 u-flex-align-self--center"><div class="u-flex u-flex-justify--between"><div class="u-margin-right--sm u-width--100"><div class="feed_item_answer_user"><a class="user" href="https://www.quora.com/profile/CJ-Cornell" id="__w2_wXnJnIKq30_name_link">CJ Cornell</a>, 7x Entrepreneur, Angel Investor, Author, EShip Professor</div><div class="AnswerCredibilityFacts CredibilityFacts pass_color_to_child_links"><a class="answer_permalink" href="https://www.quora.com/What-is-the-difference-between-business-development-and-sales/answer/CJ-Cornell" id="__w2_wXnJnIKq32_link">Updated 73w ago</a> · Author has 108 answers and 284.2k answer views</div></div></div></div></div></div></div><div id="__w2_wXnJnIKq9_answer_content"><div class="ExpandedAnswer ExpandedContent" id="__w2_wXnJnIKq13_expanded_content"><div id="wXnJnIKq15"><div class="u-serif-font-main--regular"><div class="ui_qtext_expanded"><p class="ui_qtext_para u-ltr u-text-align--start">Here are the Definitions / Semantics.</p><p class="ui_qtext_para u-ltr u-text-align--start">Note that, while inside smaller companies the same person takes on multiple roles at different times (such a VP or CEO) - it is still important to know the difference:</p><p class="ui_qtext_para u-ltr u-text-align--start"><b>Sales = Transactions.</b></p><p class="ui_qtext_para u-ltr u-text-align--start">Sales is responsible for selling a specific product or service, with a clear price and value, to an identifiable <i>individual customer</i>. Sales is the activity that happens once the specific customer is identified.</p><p class="ui_qtext_para u-ltr u-text-align--start"><b>Marketing:</b></p><p class="ui_qtext_para u-ltr u-text-align--start">Identifies the <i>needs and types</i> of customers so it can <i>attract</i> customers. Marketing devises the best way to get the products into the hands of the customers. Marketing often plays a big role in product development in gathering or validating the feature/benefits required by customers (or by the overall market).</p><p class="ui_qtext_para u-ltr u-text-align--start">Marketing exists to make sales easier. (h/t to Jason Lemkin)</p><p class="ui_qtext_para u-ltr u-text-align--start"><b>Strategic marketing </b>focuses on customers as <i>groups - </i>to better understand how to differentiate the product, and how to more effectively target and sell the products to each group.</p><p class="ui_qtext_para u-ltr u-text-align--start"><b>Tactical marketing </b>focuses on getting customers<i> closer to the sales transaction</i>. Marketing-promotions, trial offers etc are usually in this category. This is about attracting customers.</p><p class="ui_qtext_para u-ltr u-text-align--start">For an ecommerce business, marketing goes all the way to the transaction, and "sales" is automated. In other businesses, marketing brings customers to "the door" while sales tries to convert the customer\'s interest or presence into a transaction.</p><p class="ui_qtext_para u-ltr u-text-align--start"><b><i>Business Development:</i></b></p><p class="ui_qtext_para u-ltr u-text-align--start">Identifies and executes NEW areas of business - new markets, new distribution channels, new products: typically through the use of <b>partnerships</b> between another company and an internal department at your company.</p><p class="ui_qtext_para u-ltr u-text-align--start">The focus of "bizdev" is on new and <i>atypical</i>, interactions with external partners - who are *<b><i>not</i></b>* customers or sales prospects. These potential partners <i>may one day </i>be customers - maybe - but they are not <i>current </i>sales prospects. Once the business is no longer new, and becomes a repeatable kind of business, then the relationship transitions to another part of the company (sales, marketing, product development, engineering). .</p><p class="ui_qtext_para u-ltr u-text-align--start"><b>For Business Development, the goal is </b><b><i>not</i></b><b> a sales transaction:</b></p><p class="ui_qtext_para u-ltr u-text-align--start">Business Development is not formally empowered to sell a product directly to a customer or customers - otherwise they would be competing with the Sales team.</p><p class="ui_qtext_para u-ltr u-text-align--start">Business Development should <i>never </i>be dealing with the sale of existing products to existing (identifiable) customers, no matter how large the revenue opportunity - only sales does that. Nor should Bizdev be setting up distribution channels - this is a marketing function.</p><p class="ui_qtext_para u-ltr u-text-align--start"><b><i>Example</i></b></p><p class="ui_qtext_para u-ltr u-text-align--start">For instance, when Amazon decided to add online movies to it\'s product offerings: Initially this was a bizdev role because of a brand new area of business - with a new business model, new distribution, etc. that required an external partner(s) working with internal Amazon departments. Bizdev would be coordinating the internal/external activity until all had the licensing terms fleshed out, pricing, marketing strategy, created a new area of the site with new kinds of distribution ... once that all happens it is standard business, and then out of the hands of bizdev and then- driven by marketing, sales, product etc.</p><p class="ui_qtext_para u-ltr u-text-align--start"><b>A</b><b><i> Sales Executive</i></b> (probably not a role that should formally exist in a pure online / ecommerce company) would either focus on <i>\'big ticket\' sales </i>that require the longest 1-1/face to face selling cycle, <i>and/or manages other sales personnel</i>.</p><p class="ui_qtext_para u-ltr u-text-align--start">For instance, at a car dealership: The Sales Executive might manage the floor sales personnel (deciding commissions policy etc), while also being the person to negotiate a deal with a large business to buy 50 vehicles for use as company cars.</p><p class="ui_qtext_para u-ltr u-text-align--start"><b>CONFUSION</b></p><p class="ui_qtext_para u-ltr u-text-align--start">Be wary of folks who take the stance of defining any of these terms loosely, as they please.</p><p class="ui_qtext_para u-ltr u-text-align--start"><b>Quotas and Commissions</b></p><p class="ui_qtext_para u-ltr u-text-align--start">If a job posting or job description for a Business Development Manager talks about a "Quota" or Commission - then it is a Sales Position. While Bizdev professionals often have significant performance-based goals, and compensation - they are never measured in terms of minimum number of \'transactions\'. Business Development is <i>process </i>oriented: The process and outcomes change depending on the market, the competition and partners. The nature of the conversations (and outcomes) change depending on who the partner is.</p><p class="ui_qtext_para u-ltr u-text-align--start"><b>The Bizdev Role vs Sales</b></p><p class="ui_qtext_para u-ltr u-text-align--start">Sales is transaction oriented. The terms and nature of the product, or of the customers don\'t change that much - even with custom products or big-ticket sales. A sales executive simply can\'t say "we sell compact cars - but if you want a truck or a van, we certainly can build and sell you one". Business Development can\'t say that either. Bizdev might say: "our company strategy has been to eventually get into the truck market, and we need to find partners who can augment our car building experience with truck building - so one day Sales can sell a lot of trucks"</p><ul><li><b>Marketing</b> - attracts customers to the front door of the building.</li><li><b>Sales</b> - convinces the customer to go from the door to the cash register.</li><li><b>Business Development</b> - works to create new buildings.</li></ul><p class="ui_qtext_para u-ltr u-text-align--start">Sure it\'s perfectly acceptable and common for companies to combine roles - but a Business Development professional from one company doesn\'t want to find himself in discussions with another "Bizdev Exec" only to find out that it\'s really a sales-call.</p></div></div><div id="wXnJnIKq23"><div id="__w2_wXnJnIKq13_survey_wrapper"></div></div></div></div></div></div></div>'},)
({'is_archived': 1, 'all': ['1', '0', 'admin', '[email protected]', '1', 'sales.and.marketing', 'sales-and-marketing', '0', '14010', 'The Difference Between Business Development and Sales', 'https://www.linkedin.com/pulse/difference-between-business-development-sales-hans-peter-bech', '<p>Many information technology companies fail to distinguish between <em>business development</em> and <em>sales</em>. So what is the difference and why does it matter?</p><h2>The short version</h2><p><strong>Business development</strong> is the process of <em>finding</em> the match between a product (or solution) and a segment in the market.</p><p><strong>Sales</strong> is the process of systematically <em>generating revenue </em>with the product (solution) in the chosen market segment in the race for market leadership.</p><h2>Business development</h2><div class="slate-resizable-image-embed slate-image-embed__resize-left"><img alt="No alt text provided for this image" data-media-urn="" data-li-src="https://media.licdn.com/dms/image/C4D12AQEmfatJG2YMRQ/article-inline_image-shrink_1000_1488/0?e=1570060800&v=beta&t=2FAI4r-RjjRxIn6F5cQf9rma0XzXI4ei_WKPy8Amp64" src="https://:0/" /></div><p>Business development will work very closely with product management on the competitive positioning and the feature set as well as with marketing for developing the most productive definition of the value proposition, the identification of the most effective communication channels and the most cost/effective lead generation process. This match-making process is based on continuous and close interaction with potential customers. The objective is not revenue generation, but finding the right product-market fit.</p><p>When we move into a new market (which may also be a new geographic market) where the environment is different from where we are already operating, then we need to go through the business development process first <em>before</em> we employ sales resources.</p><h2>Sales</h2><p>Sales is the tactical process of revenue generation when we have proven and documented product/market fit and defined the most effective way to support our customers’ buying journey. To achieve market leadership we will have to continuously scale and optimize our sales operation, which means hiring more and more sales people (or recruiting more and more channel partners). We can define compensation plans with realistic objectives and quotas and we can benchmark sales people against each other, optimizing the sales process.</p><h2>When we confuse the two situations</h2><p>Failing to distinguish between the two situations and the corresponding roles of the people we hire will result in unfocused market penetration, unpredictable sales cycles, unpredictable revenue forecasts, fluctuating revenue and processes that are impossible to repeat, optimize and scale. In such situations revenue generation becomes a “<a href="https://www.linkedin.com/pulse/focusing-results-makes-us-blind-hans-peter-bech" target="_blank">black box</a>” where some sales people are successful and some are not, but we have a hard time putting our finger on what makes the difference.</p><h2>Social engineering processes</h2><div class="slate-resizable-image-embed slate-image-embed__resize-full-width"><img alt="No alt text provided for this image" data-media-urn="" data-li-src="https://media.licdn.com/dms/image/C4D12AQGrADxLpg-hLg/article-inline_image-shrink_1000_1488/0?e=1570060800&v=beta&t=2GKY-UkPAA2F6_9iNCYgD_EFPUOnUE34Wh7KX5W5lWA" src="https://:0/" /></div><p>Business development, marketing and sales are business processes just like R&D, G&A, manufacturing and logistics. I call them <em>social engineering processes</em> since they depend heavily on understanding and influencing the behavior of human beings outside our direct control. Unless we define these processes, describe them, test them, formalize them, optimize them and scale them then achieving market leadership will be by accident only. And I am afraid that achieving market leadership by accident is becoming less and less likely in the information technology industry.</p><p>-----------------</p><p><a href="https://tbkconsult.com/publishing/" target="_blank" rel="nofollow noopener">I write about international business development, sales and maketing in the information technology industry.</a></p><div class="slate-resizable-image-embed slate-image-embed__resize-full-width"><img alt="No alt text provided for this image" data-media-urn="" data-li-src="https://media.licdn.com/dms/image/C4D12AQHeFU9vMalhSA/article-inline_image-shrink_1500_2232/0?e=1570060800&v=beta&t=17Hh2uRDcLUOsRFbilXfTUySyfgfzF5Ch2Krb_lwWV8" src="https://:0/" /></div>', 'Many information technology companies fail to distinguish between business development and sales . So what is the difference and why does it matter? The short version Business development is the process of finding the match between a product (or solution) and a segment in the market. Sales is the process of systematically generating revenue with the product (solution) in the chosen market segment in the race for market leadership. Business development Business development will work very closely with product management on the competitive positioning and the feature set as well as with marketing for developing the most productive definition of the value proposition, the identification of the most effective communication channels and the most cost/effective lead generation process. This match-making process is based on continuous and close interaction with potential customers. The objective is not revenue generation, but finding the right product-market fit. When we move into a new market (which may also be a new geographic market) where the environment is different from where we are already operating, then we need to go through the business development process first before we employ sales resources. Sales Sales is the tactical process of revenue generation when we have proven and documented product/market fit and defined the most effective way to support our customers’ buying journey. To achieve market leadership we will have to continuously scale and optimize our sales operation, which means hiring more and more sales people (or recruiting more and more channel partners). We can define compensation plans with realistic objectives and quotas and we can benchmark sales people against each other, optimizing the sales process. When we confuse the two situations Failing to distinguish between the two situations and the corresponding roles of the people we hire will result in unfocused market penetration, unpredictable sales cycles, unpredictable revenue forecasts, fluctuating revenue and processes that are impossible to repeat, optimize and scale. In such situations revenue generation becomes a “ black box ” where some sales people are successful and some are not, but we have a hard time putting our finger on what makes the difference. Social engineering processes Business development, marketing and sales are business processes just like R&D, G&A, manufacturing and logistics. I call them social engineering processes since they depend heavily on understanding and influencing the behavior of human beings outside our direct control. Unless we define these processes, describe them, test them, formalize them, optimize them and scale them then achieving market leadership will be by accident only. And I am afraid that achieving market leadership by accident is becoming less and less likely in the information technology industry. ----------------- I write about international business development, sales and maketing in the information technology industry.', 'Fri Aug 02 21:43:21 UTC 2019', 'Fri Aug 02 21:43:28 UTC 2019', 'text/html', 'en', '2', 'www.linkedin.com', 'https://media.licdn.com/dms/image/C4E12AQEfjexelLqbcw/article-cover_image-shrink_600_2000/0?e=1570060800&v=beta&t=neUNc0G7Sc2KUFZWejXYH08U4lhFJpBV58SaHa4YPDU', '200', '/api/entries/14010', '1641690268299165696'], 'is_starred': 0, 'user_name': 'admin', 'user_email': '[email protected]', 'user_id': 1, 'tags': ['sales.and.marketing'], 'slugs': ['sales-and-marketing'], 'is_public': False, 'id': '14010', 'title': 'The Difference Between Business Development and Sales', 'url': 'https://www.linkedin.com/pulse/difference-between-business-development-sales-hans-peter-bech', 'content_text': 'Many information technology companies fail to distinguish between business development and sales . So what is the difference and why does it matter? The short version Business development is the process of finding the match between a product (or solution) and a segment in the market. Sales is the process of systematically generating revenue with the product (solution) in the chosen market segment in the race for market leadership. Business development Business development will work very closely with product management on the competitive positioning and the feature set as well as with marketing for developing the most productive definition of the value proposition, the identification of the most effective communication channels and the most cost/effective lead generation process. This match-making process is based on continuous and close interaction with potential customers. The objective is not revenue generation, but finding the right product-market fit. When we move into a new market (which may also be a new geographic market) where the environment is different from where we are already operating, then we need to go through the business development process first before we employ sales resources. Sales Sales is the tactical process of revenue generation when we have proven and documented product/market fit and defined the most effective way to support our customers’ buying journey. To achieve market leadership we will have to continuously scale and optimize our sales operation, which means hiring more and more sales people (or recruiting more and more channel partners). We can define compensation plans with realistic objectives and quotas and we can benchmark sales people against each other, optimizing the sales process. When we confuse the two situations Failing to distinguish between the two situations and the corresponding roles of the people we hire will result in unfocused market penetration, unpredictable sales cycles, unpredictable revenue forecasts, fluctuating revenue and processes that are impossible to repeat, optimize and scale. In such situations revenue generation becomes a “ black box ” where some sales people are successful and some are not, but we have a hard time putting our finger on what makes the difference. Social engineering processes Business development, marketing and sales are business processes just like R&D, G&A, manufacturing and logistics. I call them social engineering processes since they depend heavily on understanding and influencing the behavior of human beings outside our direct control. Unless we define these processes, describe them, test them, formalize them, optimize them and scale them then achieving market leadership will be by accident only. And I am afraid that achieving market leadership by accident is becoming less and less likely in the information technology industry. ----------------- I write about international business development, sales and maketing in the information technology industry.', 'created_at': '2019-08-02T21:43:21Z', 'updated_at': '2019-08-02T21:43:28Z', 'mimetype': 'text/html', 'language': 'en', 'reading_time': 2, 'domain_name': 'www.linkedin.com', 'preview_picture': 'https://media.licdn.com/dms/image/C4E12AQEfjexelLqbcw/article-cover_image-shrink_600_2000/0?e=1570060800&v=beta&t=neUNc0G7Sc2KUFZWejXYH08U4lhFJpBV58SaHa4YPDU', 'http_status': 200, '_links': ['/api/entries/14010'], 'content': '<p>Many information technology companies fail to distinguish between <em>business development</em> and <em>sales</em>. So what is the difference and why does it matter?</p><h2>The short version</h2><p><strong>Business development</strong> is the process of <em>finding</em> the match between a product (or solution) and a segment in the market.</p><p><strong>Sales</strong> is the process of systematically <em>generating revenue </em>with the product (solution) in the chosen market segment in the race for market leadership.</p><h2>Business development</h2><div class="slate-resizable-image-embed slate-image-embed__resize-left"><img alt="No alt text provided for this image" data-media-urn="" data-li-src="https://media.licdn.com/dms/image/C4D12AQEmfatJG2YMRQ/article-inline_image-shrink_1000_1488/0?e=1570060800&v=beta&t=2FAI4r-RjjRxIn6F5cQf9rma0XzXI4ei_WKPy8Amp64" src="https://:0/" /></div><p>Business development will work very closely with product management on the competitive positioning and the feature set as well as with marketing for developing the most productive definition of the value proposition, the identification of the most effective communication channels and the most cost/effective lead generation process. This match-making process is based on continuous and close interaction with potential customers. The objective is not revenue generation, but finding the right product-market fit.</p><p>When we move into a new market (which may also be a new geographic market) where the environment is different from where we are already operating, then we need to go through the business development process first <em>before</em> we employ sales resources.</p><h2>Sales</h2><p>Sales is the tactical process of revenue generation when we have proven and documented product/market fit and defined the most effective way to support our customers’ buying journey. To achieve market leadership we will have to continuously scale and optimize our sales operation, which means hiring more and more sales people (or recruiting more and more channel partners). We can define compensation plans with realistic objectives and quotas and we can benchmark sales people against each other, optimizing the sales process.</p><h2>When we confuse the two situations</h2><p>Failing to distinguish between the two situations and the corresponding roles of the people we hire will result in unfocused market penetration, unpredictable sales cycles, unpredictable revenue forecasts, fluctuating revenue and processes that are impossible to repeat, optimize and scale. In such situations revenue generation becomes a “<a href="https://www.linkedin.com/pulse/focusing-results-makes-us-blind-hans-peter-bech" target="_blank">black box</a>” where some sales people are successful and some are not, but we have a hard time putting our finger on what makes the difference.</p><h2>Social engineering processes</h2><div class="slate-resizable-image-embed slate-image-embed__resize-full-width"><img alt="No alt text provided for this image" data-media-urn="" data-li-src="https://media.licdn.com/dms/image/C4D12AQGrADxLpg-hLg/article-inline_image-shrink_1000_1488/0?e=1570060800&v=beta&t=2GKY-UkPAA2F6_9iNCYgD_EFPUOnUE34Wh7KX5W5lWA" src="https://:0/" /></div><p>Business development, marketing and sales are business processes just like R&D, G&A, manufacturing and logistics. I call them <em>social engineering processes</em> since they depend heavily on understanding and influencing the behavior of human beings outside our direct control. Unless we define these processes, describe them, test them, formalize them, optimize them and scale them then achieving market leadership will be by accident only. And I am afraid that achieving market leadership by accident is becoming less and less likely in the information technology industry.</p><p>-----------------</p><p><a href="https://tbkconsult.com/publishing/" target="_blank" rel="nofollow noopener">I write about international business development, sales and maketing in the information technology industry.</a></p><div class="slate-resizable-image-embed slate-image-embed__resize-full-width"><img alt="No alt text provided for this image" data-media-urn="" data-li-src="https://media.licdn.com/dms/image/C4D12AQHeFU9vMalhSA/article-inline_image-shrink_1500_2232/0?e=1570060800&v=beta&t=17Hh2uRDcLUOsRFbilXfTUySyfgfzF5Ch2Krb_lwWV8" src="https://:0/" /></div>'},)
({'is_archived': 1, 'all': ['1', '0', 'admin', '[email protected]', '1', 'aws', 'terraform', 'videos', 'aws.vpc', 'aws', 'terraform', 'videos', 'aws-vpc', '0', '14009', 'Create AWS Infrastructure With Terraform | VPC | Subnet | EC2 | Route Table | Internet Gateway', 'http://www.youtube.com/oembed?format=xml&url=https://www.youtube.com/watch?v=5CQnr8tyCYc', '<iframe id="video" width="459" height="344" src="https://www.youtube.com/embed/5CQnr8tyCYc?feature=oembed" frameborder="0" allowfullscreen="allowfullscreen">[embedded content]</iframe>', '[embedded content]', 'Thu Aug 01 16:48:28 UTC 2019', 'Thu Aug 01 16:48:40 UTC 2019', 'text/xml', '0', 'www.youtube.com', 'https://i.ytimg.com/vi/5CQnr8tyCYc/maxresdefault.jpg', '200', '/api/entries/14009', '1641690269340401664'], 'is_starred': 0, 'user_name': 'admin', 'user_email': '[email protected]', 'user_id': 1, 'tags': ['aws', 'terraform', 'videos', 'aws.vpc'], 'slugs': ['aws', 'terraform', 'videos', 'aws-vpc'], 'is_public': False, 'id': '14009', 'title': 'Create AWS Infrastructure With Terraform | VPC | Subnet | EC2 | Route Table | Internet Gateway', 'url': 'http://www.youtube.com/oembed?format=xml&url=https://www.youtube.com/watch?v=5CQnr8tyCYc', 'content': '<iframe id="video" width="459" height="344" src="https://www.youtube.com/embed/5CQnr8tyCYc?feature=oembed" frameborder="0" allowfullscreen="allowfullscreen">[embedded content]</iframe>', 'content_text': '[embedded content]', 'created_at': '2019-08-01T16:48:28Z', 'updated_at': '2019-08-01T16:48:40Z', 'mimetype': 'text/xml', 'reading_time': 0, 'domain_name': 'www.youtube.com', 'preview_picture': 'https://i.ytimg.com/vi/5CQnr8tyCYc/maxresdefault.jpg', 'http_status': 200, '_links': ['/api/entries/14009']},)
({'is_archived': 1, 'all': ['1', '0', 'admin', '[email protected]', '1', 'infrastructure', 'devops', 'cloud', 'terraform', 'infrastructure', 'devops', 'cloud', 'terraform', '0', '14006', '5 Lessons Learned From Writing Over 300,000 Lines of Infrastructure Code', 'http://www.youtube.com/oembed?format=xml&url=https://www.youtube.com/watch?v=RTEgE2lcyk4', '<iframe id="video" width="480" height="270" src="https://www.youtube.com/embed/RTEgE2lcyk4?feature=oembed" frameborder="0" allowfullscreen="allowfullscreen">[embedded content]</iframe>', '[embedded content]', 'Thu Aug 01 16:47:00 UTC 2019', 'Thu Aug 01 16:47:12 UTC 2019', 'text/xml', '0', 'www.youtube.com', 'https://i.ytimg.com/vi/RTEgE2lcyk4/maxresdefault.jpg', '200', '/api/entries/14006', '1641690272478789632'], 'is_starred': 0, 'user_name': 'admin', 'user_email': '[email protected]', 'user_id': 1, 'tags': ['infrastructure', 'devops', 'cloud', 'terraform'], 'slugs': ['infrastructure', 'devops', 'cloud', 'terraform'], 'is_public': False, 'id': '14006', 'title': '5 Lessons Learned From Writing Over 300,000 Lines of Infrastructure Code', 'url': 'http://www.youtube.com/oembed?format=xml&url=https://www.youtube.com/watch?v=RTEgE2lcyk4', 'content': '<iframe id="video" width="480" height="270" src="https://www.youtube.com/embed/RTEgE2lcyk4?feature=oembed" frameborder="0" allowfullscreen="allowfullscreen">[embedded content]</iframe>', 'content_text': '[embedded content]', 'created_at': '2019-08-01T16:47:00Z', 'updated_at': '2019-08-01T16:47:12Z', 'mimetype': 'text/xml', 'reading_time': 0, 'domain_name': 'www.youtube.com', 'preview_picture': 'https://i.ytimg.com/vi/RTEgE2lcyk4/maxresdefault.jpg', 'http_status': 200, '_links': ['/api/entries/14006']},)
({'is_archived': 1, 'all': ['1', '0', 'admin', '[email protected]', '1', 'devops', 'terraform', 'videos', 'devops', 'terraform', 'videos', '0', '14008', 'How to Build Reusable, Composable, Battle tested Terraform Modules', 'http://www.youtube.com/oembed?format=xml&url=https://www.youtube.com/watch?v=LVgP63BkhKQ', '<iframe id="video" width="480" height="270" src="https://www.youtube.com/embed/LVgP63BkhKQ?feature=oembed" frameborder="0" allowfullscreen="allowfullscreen">[embedded content]</iframe>', '[embedded content]', 'Thu Aug 01 16:47:59 UTC 2019', 'Thu Aug 01 16:48:12 UTC 2019', 'text/xml', '0', 'www.youtube.com', 'https://i.ytimg.com/vi/LVgP63BkhKQ/maxresdefault.jpg', '200', '/api/entries/14008', '1641690270393171968'], 'is_starred': 0, 'user_name': 'admin', 'user_email': '[email protected]', 'user_id': 1, 'tags': ['devops', 'terraform', 'videos'], 'slugs': ['devops', 'terraform', 'videos'], 'is_public': False, 'id': '14008', 'title': 'How to Build Reusable, Composable, Battle tested Terraform Modules', 'url': 'http://www.youtube.com/oembed?format=xml&url=https://www.youtube.com/watch?v=LVgP63BkhKQ', 'content': '<iframe id="video" width="480" height="270" src="https://www.youtube.com/embed/LVgP63BkhKQ?feature=oembed" frameborder="0" allowfullscreen="allowfullscreen">[embedded content]</iframe>', 'content_text': '[embedded content]', 'created_at': '2019-08-01T16:47:59Z', 'updated_at': '2019-08-01T16:48:12Z', 'mimetype': 'text/xml', 'reading_time': 0, 'domain_name': 'www.youtube.com', 'preview_picture': 'https://i.ytimg.com/vi/LVgP63BkhKQ/maxresdefault.jpg', 'http_status': 200, '_links': ['/api/entries/14008']},)
({'is_archived': 1, 'all': ['1', '0', 'admin', '[email protected]', '1', 'terraform', 'videos', 'terraform', 'videos', '0', '14007', 'How to Build Reusable, Composable, Battle tested Terraform Modules', 'http://www.youtube.com/oembed?format=xml&url=https://www.youtube.com/watch?v=LVgP63BkhKQ', '<iframe id="video" width="480" height="270" src="https://www.youtube.com/embed/LVgP63BkhKQ?feature=oembed" frameborder="0" allowfullscreen="allowfullscreen">[embedded content]</iframe>', '[embedded content]', 'Thu Aug 01 16:47:29 UTC 2019', 'Thu Aug 01 16:47:37 UTC 2019', 'text/xml', '0', 'www.youtube.com', 'https://i.ytimg.com/vi/LVgP63BkhKQ/maxresdefault.jpg', '200', '/api/entries/14007', '1641690271445942272'], 'is_starred': 0, 'user_name': 'admin', 'user_email': '[email protected]', 'user_id': 1, 'tags': ['terraform', 'videos'], 'slugs': ['terraform', 'videos'], 'is_public': False, 'id': '14007', 'title': 'How to Build Reusable, Composable, Battle tested Terraform Modules', 'url': 'http://www.youtube.com/oembed?format=xml&url=https://www.youtube.com/watch?v=LVgP63BkhKQ', 'content': '<iframe id="video" width="480" height="270" src="https://www.youtube.com/embed/LVgP63BkhKQ?feature=oembed" frameborder="0" allowfullscreen="allowfullscreen">[embedded content]</iframe>', 'content_text': '[embedded content]', 'created_at': '2019-08-01T16:47:29Z', 'updated_at': '2019-08-01T16:47:37Z', 'mimetype': 'text/xml', 'reading_time': 0, 'domain_name': 'www.youtube.com', 'preview_picture': 'https://i.ytimg.com/vi/LVgP63BkhKQ/maxresdefault.jpg', 'http_status': 200, '_links': ['/api/entries/14007']},)
({'is_archived': 1, 'all': ['1', '0', 'admin', '[email protected]', '1', 'ansible', 'terraform', 'videos', 'ansible', 'terraform', 'videos', '0', '14005', 'Ansible and HashiCorp: Better Together', 'http://www.youtube.com/oembed?format=xml&url=https://www.youtube.com/watch?v=-gKTeT3BgHE', '<iframe id="video" width="480" height="270" src="https://www.youtube.com/embed/-gKTeT3BgHE?feature=oembed" frameborder="0" allowfullscreen="allowfullscreen">[embedded content]</iframe>', '[embedded content]', 'Thu Aug 01 16:46:28 UTC 2019', 'Thu Aug 01 16:46:38 UTC 2019', 'text/xml', '0', 'www.youtube.com', 'https://i.ytimg.com/vi/-gKTeT3BgHE/maxresdefault.jpg', '200', '/api/entries/14005', '1641690273548337152'], 'is_starred': 0, 'user_name': 'admin', 'user_email': '[email protected]', 'user_id': 1, 'tags': ['ansible', 'terraform', 'videos'], 'slugs': ['ansible', 'terraform', 'videos'], 'is_public': False, 'id': '14005', 'title': 'Ansible and HashiCorp: Better Together', 'url': 'http://www.youtube.com/oembed?format=xml&url=https://www.youtube.com/watch?v=-gKTeT3BgHE', 'content': '<iframe id="video" width="480" height="270" src="https://www.youtube.com/embed/-gKTeT3BgHE?feature=oembed" frameborder="0" allowfullscreen="allowfullscreen">[embedded content]</iframe>', 'content_text': '[embedded content]', 'created_at': '2019-08-01T16:46:28Z', 'updated_at': '2019-08-01T16:46:38Z', 'mimetype': 'text/xml', 'reading_time': 0, 'domain_name': 'www.youtube.com', 'preview_picture': 'https://i.ytimg.com/vi/-gKTeT3BgHE/maxresdefault.jpg', 'http_status': 200, '_links': ['/api/entries/14005']},)
({'is_archived': 1, 'all': ['1', '0', 'admin', '[email protected]', '1', 'aws', 'aws.vpc', 'aws', 'aws-vpc', '0', '13998', 'Network ACLs - Amazon Virtual Private Cloud', 'https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html', '<table summary="Breadcrumbs"><tr><td>\n <p><a href="https://docs.aws.amazon.com/index.html">AWS Documentation</a> » <a href="https://docs.aws.amazon.com/vpc/index.html">Amazon VPC</a> » <a href="https://docs.aws.amazon.com/vpc/latest/userguide/index.html">User Guide</a> » <a href="https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Security.html">Security</a> » Network ACLs</p>\n </td>\n </tr></table><p>A <em>network access control list (ACL)</em> is an optional layer of security\n for your VPC that acts as a firewall for controlling traffic in and out of one or\n more subnets.\n You might set up network ACLs with rules similar to your security groups in order\n to add an\n additional layer of security to your VPC. For more information about the differences\n between\n security groups and network ACLs, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Security.html#VPC_Security_Comparison">Comparison of Security Groups and Network ACLs</a>.\n </p><div class="highlights" id="inline-topiclist"><p><strong>Contents</strong></p><ul><li><a href="#nacl-basics">Network ACL Basics</a></li>\n <li><a href="#nacl-rules">Network ACL Rules</a></li>\n <li><a href="#default-network-acl">Default Network ACL</a></li>\n <li><a href="#custom-network-acl">Custom Network ACL</a></li>\n <li><a href="#nacl-ephemeral-ports">Ephemeral Ports</a></li>\n <li><a href="#nacl-tasks">Working with Network ACLs</a></li>\n <li><a href="#nacl-examples">Example: Controlling Access to Instances in a Subnet</a></li>\n <li><a href="#nacl-api-cli">API and Command Overview</a></li>\n </ul></div><h2 id="nacl-basics">Network ACL Basics</h2><p>The following are the basic things that you need to know about network ACLs:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">\n \n <p>Your VPC automatically comes with a modifiable default network ACL. By default, it\n allows all inbound and outbound IPv4 traffic and, if applicable, IPv6 traffic.\n </p>\n \n </li>\n <li class="listitem">\n \n <p>You can create a custom network ACL and associate it with a subnet. By default, each\n custom network ACL denies all inbound and outbound traffic until you add rules. \n </p>\n \n </li>\n <li class="listitem">\n \n <p>Each subnet in your VPC must be associated with a network ACL. If you don\'t explicitly\n associate a subnet with a network ACL, the subnet is automatically associated with\n the\n default network ACL.\n </p>\n \n </li>\n <li class="listitem">\n \n <p>You can associate a network ACL with multiple subnets; however, a subnet can be\n associated with only one network ACL at a time. When you associate a network ACL with\n a\n subnet, the previous association is removed.\n </p>\n \n </li>\n <li class="listitem">\n \n <p>A network ACL contains a numbered list of rules that we evaluate in order, starting\n with the lowest numbered rule, to determine whether traffic is allowed in or out\n of any subnet associated with the network ACL. The highest number that you can\n use for a rule is 32766. We recommend that you start by creating rules in\n increments (for example, increments of 10 or 100) so that you can insert new\n rules where you need to later on.\n </p>\n \n </li>\n <li class="listitem">\n \n <p>A network ACL has separate inbound and outbound rules, and each rule can either allow\n or deny traffic. \n </p>\n \n </li>\n <li class="listitem">\n \n <p>Network ACLs are stateless; responses to allowed inbound traffic are subject to the\n rules for outbound traffic (and vice versa).\n </p>\n \n </li>\n </ul></div><p>For more information, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html">Amazon VPC Limits</a>.\n </p><h2 id="nacl-rules">Network ACL Rules</h2><p>You can add or remove rules from the default network ACL, or create additional network\n ACLs for your\n VPC. When you add or remove rules from a network ACL, the changes are automatically\n applied to the\n subnets it\'s associated with.\n </p><p>The following are the parts of a network ACL rule:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">\n \n <p>Rule number. Rules are evaluated starting with the lowest numbered rule. As soon as\n a\n rule matches traffic, it\'s applied regardless of any higher-numbered rule that may\n contradict it.\n </p>\n \n </li>\n <li class="listitem">\n \n <p>Protocol. You can specify any protocol that has a standard protocol number. For more\n information, see <a href="http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml" target="_blank">Protocol\n Numbers</a>. If you specify ICMP as the protocol, you can specify any or all of the\n ICMP types and codes.\n </p>\n \n </li>\n <li class="listitem">\n \n <p>[Inbound rules only] The source of the traffic (CIDR range) and the destination\n (listening) port or port range.\n </p>\n \n </li>\n <li class="listitem">\n \n <p>[Outbound rules only] The destination for the traffic (CIDR range) and the \n destination port or port range.\n </p>\n \n </li>\n <li class="listitem">\n \n <p>Choice of ALLOW or DENY for the specified traffic.</p>\n \n </li>\n </ul></div><h2 id="default-network-acl">Default Network ACL</h2><p>The default network ACL is configured to allow all traffic to flow in and out of the\n subnets with which it is associated. Each network ACL also includes a rule whose rule\n number\n is an asterisk. This rule ensures that if a packet doesn\'t match any of the other\n numbered\n rules, it\'s denied. You can\'t modify or remove this rule. \n </p><p>The following is an example default network ACL for a VPC that supports IPv4 only.</p><div class="table"><div class="table-contents"><table id="w120aac17c21c11b7"><tr style="background-color: #eeeeee;"><td colspan="6" align="left"><b>Inbound\n </b></td>\n \n </tr><tr><td><b>Rule #</b></td>\n \n <td><b>Type</b></td>\n \n <td>\n <b>Protocol</b></td>\n \n <td>\n <b>Port Range </b></td>\n \n <td><b>Source</b></td>\n \n <td>\n <b>Allow/Deny</b></td>\n \n </tr><tr><td>\n \n <p>100</p>\n \n </td>\n \n <td>All IPv4 traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>All IPv4 traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n </tr><tr style="background-color: #eeeeee;"><td colspan="6" align="left">\n <b>Outbound</b>\n \n </td>\n \n </tr><tr><td><b>Rule #</b></td>\n \n <td><b>Type</b></td>\n \n <td>\n <b>Protocol</b>\n \n </td>\n \n <td>\n <b>Port Range</b></td>\n \n <td><b>Destination</b></td>\n \n <td>\n <b>Allow/Deny</b></td>\n \n </tr><tr><td>\n \n <p>100</p>\n \n </td>\n \n <td>All IPv4 traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>All IPv4 traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n </tr></table></div></div><p>If you create a VPC with an IPv6 CIDR block or if you associate an IPv6 CIDR block\n with\n your existing VPC, we automatically add rules that allow all IPv6 traffic to flow\n in and out\n of your subnet. We also add rules whose rule numbers are an asterisk that ensures\n that a\n packet is denied if it doesn\'t match any of the other numbered rules. You can\'t modify\n or\n remove these rules. The following is an example default network ACL for a VPC that\n supports\n IPv4 and IPv6.\n </p><div class="aws-note"><p class="aws-note">Note</p><p>If you\'ve modified your default network ACL\'s inbound rules, we do not automatically\n add\n an ALLOW rule for inbound IPv6 traffic when you associate an IPv6 block with your\n VPC.\n Similarly, if you\'ve modified the outbound rules, we do not automatically add an ALLOW\n rule\n for outbound IPv6 traffic. \n </p></div><div class="table"><div class="table-contents"><table id="w120aac17c21c11c13"><tr style="background-color: #eeeeee;"><td colspan="6" align="left"><b>Inbound\n </b></td>\n \n </tr><tr><td><b>Rule #</b></td>\n \n <td><b>Type</b></td>\n \n <td>\n <b>Protocol</b></td>\n \n <td>\n <b>Port Range </b></td>\n \n <td><b>Source</b></td>\n \n <td>\n <b>Allow/Deny</b></td>\n \n </tr><tr><td>\n \n <p>100</p>\n \n </td>\n \n <td>All IPv4 traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>101</p>\n \n </td>\n \n <td>\n \n <p>All IPv6 traffic</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>All traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>\n \n <p>All IPv6 traffic</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n </tr><tr style="background-color: #eeeeee;"><td colspan="6" align="left">\n <b>Outbound</b>\n \n </td>\n \n </tr><tr><td><b>Rule #</b></td>\n \n <td><b>Type</b></td>\n \n <td>\n <b>Protocol</b>\n \n </td>\n \n <td>\n <b>Port Range</b></td>\n \n <td><b>Destination</b></td>\n \n <td>\n <b>Allow/Deny</b></td>\n \n </tr><tr><td>\n \n <p>100</p>\n \n </td>\n \n <td>All traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>101</p>\n \n </td>\n \n <td>\n \n <p>All IPv6 traffic</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>All traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>\n \n <p>All IPv6 traffic</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n </tr></table></div></div><h2 id="custom-network-acl">Custom Network ACL</h2><p>The following table shows an example of a custom network ACL for a VPC that supports\n IPv4\n only. It includes rules that allow HTTP and HTTPS traffic in (inbound rules 100 and\n 110). There\'s a corresponding outbound rule that enables responses to that inbound\n traffic (outbound rule 120, which covers ephemeral ports 32768-65535). For more\n information about how to select the appropriate ephemeral port range, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-ephemeral-ports">Ephemeral Ports</a>.\n </p><p>The network ACL also includes inbound rules that allow SSH and RDP traffic into the\n subnet. The outbound rule 120 enables responses to egress the subnet.\n </p><p>The network ACL has outbound rules (100 and 110) that allow outbound HTTP and HTTPS\n traffic out of the subnet. There\'s a corresponding inbound rule that enables responses\n to that outbound traffic (inbound rule 140, which covers ephemeral ports 32768-65535).\n \n </p><div class="aws-note"><p class="aws-note">Note</p><p>Each network ACL includes a default rule whose rule number is an asterisk. This rule\n ensures that if a packet doesn\'t match any of the other rules, it\'s denied. You can\'t\n modify\n or remove this rule.\n </p></div><div class="table"><div class="table-contents"><table id="w120aac17c21c13c11"><tr style="background-color: #eeeeee;"><td colspan="7" align="left">\n <b>Inbound</b>\n \n </td>\n \n </tr><tr><td>\n <b>Rule #</b>\n \n </td>\n \n <td><b>Type</b></td>\n \n <td>\n <b>Protocol</b>\n \n </td>\n \n <td>\n <b>Port Range</b>\n \n </td>\n \n <td><b>Source</b>\n \n </td>\n \n <td>\n <b>Allow/Deny</b>\n \n </td>\n \n <td>\n <b>Comments</b>\n \n </td>\n \n </tr><tr><td>\n \n <p>100</p>\n \n </td>\n \n <td>HTTP</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>80</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound HTTP traffic from any IPv4 address.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>110</p>\n \n </td>\n \n <td>HTTPS</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>443</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound HTTPS traffic from any IPv4 address.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>120</p>\n \n </td>\n \n <td>SSH</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>22</p>\n \n </td>\n \n <td>192.0.2.0/24</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound SSH traffic from your home network\'s public IPv4 address range\n (over the Internet gateway).\n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>130</p>\n \n </td>\n \n <td>RDP</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>3389</p>\n \n </td>\n \n <td>192.0.2.0/24</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound RDP traffic to the web servers from your home network\'s public\n IPv4 address range (over the Internet gateway). \n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>140</p>\n \n </td>\n \n <td>Custom TCP</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>32768-65535</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound return IPv4 traffic from the Internet (that is, for requests\n that originate in the subnet).\n </p>\n \n <p>This range is an example only. For more information about how to select the\n \t\t\t\t\t\t\t\tappropriate ephemeral port range, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-ephemeral-ports">Ephemeral Ports</a>.\n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>All traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n <td>\n \n <p>Denies all inbound IPv4 traffic not already handled by a preceding rule (not\n modifiable).\n </p>\n \n </td>\n \n </tr><tr style="background-color: #eeeeee;"><td colspan="7" align="left">\n <b>Outbound</b>\n \n </td>\n \n </tr><tr><td>\n <b>Rule #</b>\n \n </td>\n \n <td><b>Type</b></td>\n \n <td>\n <b>Protocol</b>\n \n </td>\n \n <td>\n <b>Port Range</b>\n \n </td>\n \n <td><b>Destination</b></td>\n \n <td>\n <b>Allow/Deny</b>\n \n </td>\n \n <td>\n <b>Comments</b>\n \n </td>\n \n </tr><tr><td>\n \n <p>100</p>\n \n </td>\n \n <td>HTTP</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>80</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows outbound IPv4 HTTP traffic from the subnet to the Internet.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>110</p>\n \n </td>\n \n <td>HTTPS</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>443</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows outbound IPv4 HTTPS traffic from the subnet to the Internet.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>120</p>\n \n </td>\n \n <td>Custom TCP</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>32768-65535</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows outbound IPv4 responses to clients on the Internet (for example,\n serving web pages to people visiting the web servers in the subnet).\n </p>\n \n <p>This range is an example only. For more information about how to select the\n \t\t\t\t\t\t\t\tappropriate ephemeral port range, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-ephemeral-ports">Ephemeral Ports</a>.\n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>All traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n <td>\n \n <p>Denies all outbound IPv4 traffic not already handled by a preceding rule (not\n modifiable).\n </p>\n \n </td>\n \n </tr></table></div></div><p>As a packet comes to the subnet, we evaluate it against the ingress rules of the ACL\n the\n subnet is associated with (starting at the top of the list of rules, and moving to\n the\n bottom). Here\'s how the evaluation goes if the packet is destined for the SSL port\n (443). The packet doesn\'t match the first rule evaluated (rule 100). It does match\n the\n second rule (110), which allows the packet into the subnet. If the packet had been\n destined for port 139 (NetBIOS), it doesn\'t match any of the rules, and the * rule\n ultimately denies the packet. \n </p><p>You might want to add a DENY rule in a situation where you legitimately need to open\n a\n wide range of ports, but there are certain ports within that range you want to deny.\n Just make\n sure to place the DENY rule earlier in the table than the rule that allows the wide\n range of\n port traffic.\n </p><div class="aws-note"><p class="aws-note">Important</p><p>With Elastic Load Balancing, if the subnet for your back-end instances has a network\n ACL in which you\'ve\n added a DENY rule for all traffic with a source of <code class="code">0.0.0.0/0</code> or the subnet\'s\n CIDR, then your load balancer can\'t carry out health checks on the instances. For\n more\n information about the recommended network ACL rules for your load balancers and back-end\n instances, see <a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-security-groups.html#elb-vpc-nacl">Network ACLs for Load Balancers in a VPC</a> in the <em>User Guide for Classic Load Balancers</em>.\n </p></div><p>The following table shows the same example of a custom network ACL for a VPC that\n has an\n associated IPv6 CIDR block. This network ACL includes rules for all IPv6 HTTP and\n HTTPS\n traffic. In this case, new rules were inserted between the existing rules for IPv4\n traffic;\n however, you can also add the rules as higher number rules after the IPv4 rules. IPv4\n and IPv6\n traffic are separate; therefore, none of the rules for the IPv4 traffic apply to the\n IPv6\n traffic.\n </p><div class="table"><div class="table-contents"><table id="w120aac17c21c13c21"><tr style="background-color: #eeeeee;"><td colspan="7" align="left">\n <b>Inbound</b>\n \n </td>\n \n </tr><tr><td>\n <b>Rule #</b>\n \n </td>\n \n <td><b>Type</b></td>\n \n <td>\n <b>Protocol</b>\n \n </td>\n \n <td>\n <b>Port Range</b>\n \n </td>\n \n <td><b>Source</b>\n \n </td>\n \n <td>\n <b>Allow/Deny</b>\n \n </td>\n \n <td>\n <b>Comments</b>\n \n </td>\n \n </tr><tr><td>\n \n <p>100</p>\n \n </td>\n \n <td>HTTP</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>80</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound HTTP traffic from any IPv4 address.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>105</p>\n \n </td>\n \n <td>\n \n <p>HTTP</p>\n \n </td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>80</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound HTTP traffic from any IPv6 address.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>110</p>\n \n </td>\n \n <td>HTTPS</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>443</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound HTTPS traffic from any IPv4 address.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>115</p>\n \n </td>\n \n <td>\n \n <p>HTTPS</p>\n \n </td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>443</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound HTTPS traffic from any IPv6 address.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>120</p>\n \n </td>\n \n <td>SSH</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>22</p>\n \n </td>\n \n <td>192.0.2.0/24</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound SSH traffic from your home network\'s public IPv4 address range\n (over the Internet gateway).\n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>130</p>\n \n </td>\n \n <td>RDP</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>3389</p>\n \n </td>\n \n <td>192.0.2.0/24</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound RDP traffic to the web servers from your home network\'s public\n IPv4 address range (over the Internet gateway). \n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>140</p>\n \n </td>\n \n <td>Custom TCP</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>32768-65535</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound return IPv4 traffic from the Internet (that is, for requests\n that originate in the subnet).\n </p>\n \n <p>This range is an example only. For more information about how to select the\n \t\t\t\t\t\t\t\tappropriate ephemeral port range, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-ephemeral-ports">Ephemeral Ports</a>.\n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>145</p>\n \n </td>\n \n <td>Custom TCP</td>\n \n <td>TCP</td>\n \n <td>32768-65535</td>\n \n <td>::/0</td>\n \n <td>ALLOW</td>\n \n <td>\n \n <p>Allows inbound return IPv6 traffic from the Internet (that is, for requests\n that originate in the subnet).\n </p>\n \n <p>This range is an example only. For more information about how to select the\n \t\t\t\t\t\t\t\tappropriate ephemeral port range, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-ephemeral-ports">Ephemeral Ports</a>.\n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>All traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n <td>\n \n <p>Denies all inbound IPv4 traffic not already handled by a preceding rule (not\n modifiable).\n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>\n \n <p>All traffic</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n <td>\n \n <p>Denies all inbound IPv6 traffic not already handled by a preceding rule (not\n modifiable).\n </p>\n \n </td>\n \n </tr><tr style="background-color: #eeeeee;"><td colspan="7" align="left">\n <b>Outbound</b>\n \n </td>\n \n </tr><tr><td>\n <b>Rule #</b>\n \n </td>\n \n <td><b>Type</b></td>\n \n <td>\n <b>Protocol</b>\n \n </td>\n \n <td>\n <b>Port Range</b>\n \n </td>\n \n <td><b>Destination</b></td>\n \n <td>\n <b>Allow/Deny</b>\n \n </td>\n \n <td>\n <b>Comments</b>\n \n </td>\n \n </tr><tr><td>\n \n <p>100</p>\n \n </td>\n \n <td>HTTP</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>80</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows outbound IPv4 HTTP traffic from the subnet to the Internet.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>105</p>\n \n </td>\n \n <td>\n \n <p>HTTP</p>\n \n </td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>80</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows outbound IPv6 HTTP traffic from the subnet to the Internet.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>110</p>\n \n </td>\n \n <td>HTTPS</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>443</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows outbound IPv4 HTTPS traffic from the subnet to the Internet.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>115</p>\n \n </td>\n \n <td>\n \n <p>HTTPS</p>\n \n </td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>443</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows outbound IPv6 HTTPS traffic from the subnet to the Internet.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>120</p>\n \n </td>\n \n <td>Custom TCP</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>32768-65535</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows outbound IPv4 responses to clients on the Internet (for example,\n serving web pages to people visiting the web servers in the subnet).\n </p>\n \n <p>This range is an example only. For more information about how to select the\n \t\t\t\t\t\t\t\tappropriate ephemeral port range, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-ephemeral-ports">Ephemeral Ports</a>.\n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>125</p>\n \n </td>\n \n <td>\n \n <p>Custom TCP</p>\n \n </td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>32768-65535</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows outbound IPv6 responses to clients on the Internet (for example,\n serving web pages to people visiting the web servers in the subnet).\n </p>\n \n <p>This range is an example only. For more information about how to select the\n appropriate ephemeral port range, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-ephemeral-ports">Ephemeral Ports</a>.\n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>All traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n <td>\n \n <p>Denies all outbound IPv4 traffic not already handled by a preceding rule (not\n modifiable).\n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>\n \n <p>All traffic</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n <td>\n \n <p>Denies all outbound IPv6 traffic not already handled by a preceding rule (not\n modifiable).\n </p>\n \n </td>\n \n </tr></table></div></div><h2 id="nacl-ephemeral-ports">Ephemeral Ports</h2><p>The example network ACL in the preceding section uses an ephemeral port range of\n \t\t\t32768-65535. However, you might want to use a different range for your network\n ACLs\n \t\t\tdepending on the type of client that you\'re using or with which you\'re\n \t\t\tcommunicating.\n </p><p>The client that initiates the request chooses the ephemeral port range. The range\n varies\n depending on the client\'s operating system. Many Linux kernels (including the Amazon\n Linux kernel) use\n ports 32768-61000. Requests originating from Elastic Load Balancing use ports 1024-65535.\n Windows operating\n systems through Windows Server 2003 use ports 1025-5000. Windows Server 2008 and later\n versions use ports 49152-65535. A NAT gateway uses ports 1024-65535. For example,\n if a request\n comes into a web server in your VPC from a Windows XP client on the Internet, your\n network ACL\n must have an outbound rule to enable traffic destined for ports 1025-5000. \n </p><p>If an instance in your VPC is the client initiating a request, your network ACL must\n have\n an inbound rule to enable traffic destined for the ephemeral ports specific to the\n type of\n instance (Amazon Linux, Windows Server 2008, and so on). \n </p><p>In practice, to cover the different types of clients that might initiate traffic to\n public-facing instances in your VPC, you can open ephemeral ports 1024-65535. However,\n you can\n also add rules to the ACL to deny traffic on any malicious ports within that range.\n Ensure\n that you place the DENY rules earlier in the table than the ALLOW rules that open\n the wide\n range of ephemeral ports.\n </p><h2 id="nacl-tasks">Working with Network ACLs</h2><p>The following tasks show you how to work with network ACLs using the Amazon VPC console.</p><div class="highlights"><p><strong>Tasks</strong></p><ul><li><a href="#ACLSubnet">Determining Network ACL Associations</a></li>\n <li><a href="#CreateACL">Creating a Network ACL</a></li>\n <li><a href="#Rules">Adding and Deleting Rules</a></li>\n <li><a href="#NetworkACL">Associating a Subnet with a Network ACL</a></li>\n <li><a href="#DisassociateNetworkACL">Disassociating a Network ACL from a Subnet</a></li>\n <li><a href="#ChangeNetworkACL">Changing a Subnet\'s Network ACL</a></li>\n <li><a href="#DeleteNetworkACL">Deleting a Network ACL</a></li>\n </ul></div><h3 id="ACLSubnet">Determining Network ACL Associations</h3><p>You can use the Amazon VPC console to determine the network ACL that\'s associated\n with a\n subnet. Network ACLs can be associated with more than one subnet, so you can also\n determine\n the subnets that are associated with a network ACL.\n </p><p class="title"><b>To determine which network ACL is associated with a subnet</b></p><ol><li>\n <p>Open the Amazon VPC console at\n <a href="https://console.aws.amazon.com/vpc/" target="_blank">https://console.aws.amazon.com/vpc/</a>.\n </p>\n </li>\n <li>\n \n <p>In the navigation pane, choose <b>Subnets</b>, and then select the\n subnet.\n </p>\n \n <p>The network ACL associated with the subnet is included in the <b>Network\n ACL</b> tab, along with the network ACL\'s rules. \n </p>\n \n </li>\n </ol><p class="title"><b>To determine which subnets are associated with a network ACL</b></p><ol><li>\n \n <p>Open the Amazon VPC console at\n <a href="https://console.aws.amazon.com/vpc/" target="_blank">https://console.aws.amazon.com/vpc/</a>.\n </p>\n \n </li>\n <li>\n \n <p>In the navigation pane, choose <b>Network ACLs</b>. The\n <b>Associated With</b> column indicates the number of associated subnets\n for each network ACL.\n </p>\n \n </li>\n <li>\n \n <p>Select a network ACL.</p>\n \n </li>\n <li>\n \n <p>In the details pane, choose <b>Subnet Associations</b> to display the\n subnets associated with the network ACL.\n </p>\n \n </li>\n </ol><h3 id="CreateACL">Creating a Network ACL</h3><p>You can create a custom network ACL for your VPC. By default, a network ACL that you\n create blocks all inbound and outbound traffic until you add rules, and is not associated\n with a subnet until you explicitly associate it with one.\n </p><p class="title"><b>To create a network ACL</b></p><ol><li>\n \n <p>Open the Amazon VPC console at\n <a href="https://console.aws.amazon.com/vpc/" target="_blank">https://console.aws.amazon.com/vpc/</a>.\n </p>\n \n </li>\n <li>\n \n <p>In the navigation pane, choose <b>Network ACLs</b>.\n </p>\n \n </li>\n <li>\n \n <p>Choose <b>Create Network ACL</b>.\n </p>\n \n </li>\n <li>\n \n <p>In the <b>Create Network ACL</b> dialog box, optionally name your\n network ACL, and then select the ID of your VPC from the <b>VPC</b> list,\n and choose <b>Yes, Create</b>.\n </p>\n \n </li>\n </ol><h3 id="Rules">Adding and Deleting Rules</h3><p>When you add or delete a rule from an ACL, any subnets associated with the ACL are\n subject to the change. You don\'t have to terminate and relaunch the instances in the\n subnet;\n the changes take effect after a short period. \n </p><p>If you\'re using the Amazon EC2 API or a command line tool, you can\'t modify rules;\n you\n can only add and delete rules. If you\'re using the Amazon VPC console, you can modify\n the entries\n for existing rules (the console removes the rule and adds a new rule for you). If\n you need\n to change the order of a rule in the ACL, you must add a new rule with the new rule\n number,\n and then delete the original rule.\n </p><p class="title"><b>To add rules to a network ACL</b></p><ol><li>\n <p>Open the Amazon VPC console at\n <a href="https://console.aws.amazon.com/vpc/" target="_blank">https://console.aws.amazon.com/vpc/</a>.\n </p>\n </li>\n <li>\n \n <p>In the navigation pane, choose <b>Network ACLs</b>.\n </p>\n \n </li>\n <li>\n \n <p>In the details pane, choose either the <b>Inbound Rules</b> or\n <b>Outbound Rules</b> tab, depending on the type of rule that you need\n to add, and then choose <b>Edit</b>.\n </p>\n \n </li>\n <li>\n \t\t\n <p>In <b>Rule #</b>, enter a rule number (for example, 100). The rule\n \t\t\tnumber must not already be used in the network ACL. We process the rules in order,\n \t\t\tstarting with the lowest number.\n </p>\n \t\t\n <div class="aws-note"><p class="aws-note">Tip</p><p>We recommend that you leave gaps between the rule numbers (such as 100, 200, 300),\n rather than using sequential numbers (101, 102, 103). This makes it easier add a new\n rule without having to renumber the existing rules.\n </p></div>\n \t\n </li>\n <li>\n \n <p>Select a rule from the <b>Type</b> list. For example, to add a rule\n for HTTP, choose <b>HTTP</b>. To add a rule to allow all TCP traffic,\n choose <b>All TCP</b>. For some of these options (for example, HTTP), we\n fill in the port for you. To use a protocol that\'s not listed, choose <b>Custom\n Protocol Rule</b>.\n </p>\n \n </li>\n <li>\n \n <p>(Optional) If you\'re creating a custom protocol rule, select the protocol\'s\n number and name from the <b>Protocol</b> list. For more\n information, see <a href="http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml" target="_blank">IANA\n List of Protocol Numbers</a>.\n </p>\n \n </li>\n <li>\n \n <p>(Optional) If the protocol you\'ve selected requires a port number, enter the port\n number or\n port range separated by a hyphen (for example, 49152-65535). \n </p>\n \n </li>\n <li>\n \n <p>In the <b>Source</b> or <b>Destination</b> field\n (depending on whether this is an inbound or outbound rule), enter the CIDR range that\n the rule applies to.\n </p>\n \n </li>\n <li>\n \n <p>From the <b>Allow/Deny</b> list, select <b>ALLOW</b> to\n allow the specified traffic or <b>DENY</b> to deny the specified\n traffic.\n </p>\n \n </li>\n <li>\n \t\t\n <p>(Optional) To add another rule, choose <b>Add another rule</b>, and\n repeat steps 4 to 9 as required. \n </p>\n \t\n </li>\n <li>\n \n <p>When you are done, choose <b>Save</b>.\n </p>\n \n </li>\n </ol><p class="title"><b>To delete a rule from a network ACL</b></p><ol><li>\n <p>Open the Amazon VPC console at\n <a href="https://console.aws.amazon.com/vpc/" target="_blank">https://console.aws.amazon.com/vpc/</a>.\n </p>\n </li>\n <li>\n \n <p>In the navigation pane, choose <b>Network ACLs</b>, and then select\n the network ACL.\n </p>\n \n </li>\n <li>\n \n <p>In the details pane, select either the <b>Inbound Rules</b> or\n <b>Outbound Rules</b> tab, and then choose <b>Edit</b>.\n Choose <b>Remove</b> for the rule you want to delete, and then choose\n <b>Save</b>.\n </p>\n \n </li>\n </ol><h3 id="NetworkACL">Associating a Subnet with a Network ACL</h3><p>To apply the rules of a network ACL to a particular subnet, you must associate the\n subnet\n with the network ACL. You can associate a network ACL with multiple subnets; however,\n a subnet can be\n associated with only one network ACL. Any subnet not associated with a particular\n ACL is associated\n with the default network ACL by default.\n </p><p class="title"><b>To associate a subnet with a network ACL</b></p><ol><li>\n <p>Open the Amazon VPC console at\n <a href="https://console.aws.amazon.com/vpc/" target="_blank">https://console.aws.amazon.com/vpc/</a>.\n </p>\n </li>\n <li>\n \n <p>In the navigation pane, choose <b>Network ACLs</b>, and then select\n the network ACL.\n </p>\n \n </li>\n <li>\n \n <p>In the details pane, on the <b>Subnet Associations</b> tab, choose\n <b>Edit</b>. Select the <b>Associate</b> check box for the\n subnet to associate with the network ACL, and then choose\n <b>Save</b>.\n </p>\n \n </li>\n </ol><h3 id="DisassociateNetworkACL">Disassociating a Network ACL from a Subnet</h3><p>You can disassociate a custom network ACL from a subnet — by doing so, the subnet\n is then automatically associated with the default network ACL.\n </p><p class="title"><b>To disassociate a subnet from a network ACL</b></p><ol><li>\n <p>Open the Amazon VPC console at\n <a href="https://console.aws.amazon.com/vpc/" target="_blank">https://console.aws.amazon.com/vpc/</a>.\n </p>\n </li>\n <li>\n \n <p>In the navigation pane, choose <b>Network ACLs</b>, and then select\n the network ACL.\n </p>\n \n </li>\n <li>\n \n <p>In the details pane, choose the <b>Subnet Associations</b> tab.\n </p>\n \n </li>\n <li>\n \n <p>Choose <b>Edit</b>, and then deselect the\n <b>Associate</b> check box for the subnet. Choose\n <b>Save</b>.\n </p>\n \n </li>\n </ol><h3 id="ChangeNetworkACL">Changing a Subnet\'s Network ACL</h3><p>You can change the network ACL that\'s associated with a subnet. For example, when\n you\n create a subnet, it is initially associated with the default network ACL. You might\n want to\n instead associate it with a custom network ACL that you\'ve created.\n </p><p>After changing a subnet\'s network ACL, you don\'t have to terminate and relaunch the\n instances in\n the subnet; the changes take effect after a short period. \n </p><p class="title"><b>To change a subnet\'s network ACL association</b></p><ol><li>\n <p>Open the Amazon VPC console at\n <a href="https://console.aws.amazon.com/vpc/" target="_blank">https://console.aws.amazon.com/vpc/</a>.\n </p>\n </li>\n <li>\n \n <p>In the navigation pane, choose <b>Subnets</b>, and then select the\n subnet.\n </p>\n \n </li>\n <li>\n \n <p>Choose the <b>Network ACL</b> tab, and then choose\n <b>Edit</b>.\n </p>\n \n </li>\n <li>\n \n <p>Select the network ACL to associate the subnet with from the <b>Change\n to</b> list, and then choose <b>Save</b>.\n </p>\n \n \n </li>\n </ol><h3 id="DeleteNetworkACL">Deleting a Network ACL</h3><p>You can delete a network ACL only if there are no subnets associated with it. You\n can\'t\n delete the default network ACL.\n </p><p class="title"><b>To delete a network ACL</b></p><ol><li>\n \n <p>Open the Amazon VPC console at\n <a href="https://console.aws.amazon.com/vpc/" target="_blank">https://console.aws.amazon.com/vpc/</a>.\n </p>\n \n </li>\n <li>\n \n <p>In the navigation pane, choose <b>Network ACLs</b>.\n </p>\n \n </li>\n <li>\n \n <p>Select the network ACL, and then choose <b>Delete</b>.\n </p>\n \n </li>\n <li>\n \n <p>In the confirmation dialog box, choose <b>Yes, Delete</b>.\n </p>\n \n </li>\n </ol><h2 id="nacl-examples">Example: Controlling Access to Instances in a Subnet</h2><p>In this example, instances in your subnet can communicate with each other, and are\n accessible from a trusted remote computer. The remote computer may be a computer in\n your local\n network or an instance in a different subnet or VPC that you use to connect to your\n instances\n to perform administrative tasks. Your security group rules and network ACL rules allow\n access\n from the IP address of your remote computer (172.31.1.2/32). All other traffic from\n the\n Internet or other networks is denied.\n </p><div class="mediaobject"><img src="https://docs.aws.amazon.com/vpc/latest/userguide/images/nacl-example-diagram.png" alt=" Using a security group and an NACL " /></div><p>All instances use the same security group (sg-1a2b3c4d), with the following rules.</p><div class="table"><p></p><table id="w120aac17c21c19b9"><tr><td colspan="5"><b>Inbound\n Rules</b></td>\n \n </tr><tr><td><b>Protocol Type</b></td>\n \n <td><b>Protocol</b></td>\n \n <td><b>Port Range</b></td>\n \n <td><b>Source</b></td>\n \n <td><b>Comments</b></td>\n \n </tr><tr><td>All traffic</td>\n \n <td>All</td>\n \n <td>All</td>\n \n <td>sg-1a2b3c4d</td>\n \n <td>Enables instances associated with the same security group to communicate with\n each other.\n </td>\n \n </tr><tr><td>SSH</td>\n \n <td>TCP</td>\n \n <td>22</td>\n \n <td>172.31.1.2/32</td>\n \n <td>Allows inbound SSH access from the remote computer. If the instance is a Windows\n computer, then this rule must use the RDP protocol for port 3389 instead.\n </td>\n \n </tr><tr><td colspan="5"><b>Outbound\n Rules</b></td>\n \n </tr><tr><td><b>Protocol Type</b></td>\n \n <td><b>Protocol</b></td>\n \n <td><b>Port Range</b></td>\n \n <td><b>Destination</b></td>\n \n <td><b>Comments</b></td>\n \n </tr><tr><td>All traffic</td>\n \n <td>All</td>\n \n <td>All</td>\n \n <td>sg-1a2b3c4d</td>\n \n <td>Enables instances associated with the same security group to communicate with\n each other.\n </td>\n \n </tr></table></div><p>The subnet is associated with a network ACL that has the following rules.</p><div class="table"><p></p><table id="w120aac17c21c19c13"><tr><td colspan="7"><b>Inbound\n Rules</b></td>\n \n </tr><tr><td><b>Rule #</b></td>\n \n <td><b>Type</b></td>\n \n <td><b>Protocol</b></td>\n \n <td><b>Port Range</b></td>\n \n <td><b>Source</b></td>\n \n <td><b>Allow/Deny</b></td>\n \n <td><b>Comments</b></td>\n \n </tr><tr><td>100</td>\n \n <td>SSH</td>\n \n <td>TCP</td>\n \n <td>22</td>\n \n <td>172.31.1.2/32</td>\n \n <td>ALLOW</td>\n \n <td>Allows inbound traffic from the remote computer. If the instance is a Windows\n computer, then this rule must use the RDP protocol for port 3389 instead.\n </td>\n \n </tr><tr><td>*</td>\n \n <td>All traffic</td>\n \n <td>All</td>\n \n <td>All</td>\n \n <td>0.0.0.0/0</td>\n \n <td>DENY</td>\n \n <td>Denies all other inbound traffic that does not match the previous rule.</td>\n \n </tr><tr><td colspan="7"><b>Outbound\n Rules</b></td>\n \n </tr><tr><td><b>Rule #</b></td>\n \n <td><b>Type</b></td>\n \n <td><b>Protocol</b></td>\n \n <td><b>Port Range</b></td>\n \n <td><b>Destination</b></td>\n \n <td><b>Allow/Deny</b></td>\n \n <td><b>Comments</b></td>\n \n </tr><tr><td>100</td>\n \n <td>Custom TCP</td>\n \n <td>TCP</td>\n \n <td>1024-65535</td>\n \n <td>172.31.1.2/32</td>\n \n <td>ALLOW</td>\n \n <td>Allows outbound responses to the remote computer. Network ACLs are stateless,\n therefore this rule is required to allow response traffic for inbound\n requests.\n </td>\n \n </tr><tr><td>*</td>\n \n <td>All traffic</td>\n \n <td>All</td>\n \n <td>All</td>\n \n <td>0.0.0.0/0</td>\n \n <td>DENY</td>\n \n <td>Denies all other outbound traffic that does not match the previous rule.</td>\n \n </tr></table></div><p>This scenario gives you the flexibility to change the security groups or security\n group\n rules for your instances, and have the network ACL as the backup layer of defense.\n The network\n ACL rules apply to all instances in the subnet, so if you accidentally make your security\n group rules too permissive, the network ACL rules continue to permit access only from\n the\n single IP address. For example, the following rules are more permissive than the earlier\n rules\n — they allow inbound SSH access from any IP address. \n </p><div class="table"><p></p><table id="w120aac17c21c19c17"><tr><td colspan="5"><b>Inbound\n Rules</b></td>\n \n </tr><tr><td><b>Type</b></td>\n \n <td><b>Protocol</b></td>\n \n <td><b>Port Range</b></td>\n \n <td><b>Source</b></td>\n \n <td><b>Comments</b></td>\n \n </tr><tr><td>All traffic</td>\n \n <td>All</td>\n \n <td>All</td>\n \n <td>sg-1a2b3c4d</td>\n \n <td>Enables instances associated with the same security group to communicate with\n each other.\n </td>\n \n </tr><tr><td>SSH</td>\n \n <td>TCP</td>\n \n <td>22</td>\n \n <td>0.0.0.0/0</td>\n \n <td>Allows SSH access from any IP address.</td>\n \n </tr><tr><td colspan="5"><b>Outbound\n Rules</b></td>\n \n </tr><tr><td><b>Type</b></td>\n \n <td><b>Protocol</b></td>\n \n <td><b>Port Range</b></td>\n \n <td><b>Destination</b></td>\n \n <td><b>Comments</b></td>\n \n </tr><tr><td>All traffic</td>\n \n <td>All</td>\n \n <td>All</td>\n \n <td>0.0.0.0/0</td>\n \n <td>Allows all outbound traffic.</td>\n \n </tr></table></div><p>However, only other instances within the subnet and your remote computer are able\n to\n access this instance. The network ACL rules still prevent all inbound traffic to the\n subnet\n except from your remote computer.\n </p><h2 id="nacl-api-cli">API and Command Overview</h2><p>You can perform the tasks described on this page using the command line or an API.\n \n For more information about the command line interfaces and a list of available APIs,\n see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html#VPCInterfaces">Accessing Amazon VPC</a>.\n </p><div class="itemizedlist"><p class="title"><b>Create a network ACL for your VPC</b></p></div><div class="itemizedlist"><p class="title"><b>Describe one or more of your network ACLs</b></p></div><div class="itemizedlist"><p class="title"><b>Add a rule to a network ACL</b></p></div><div class="itemizedlist"><p class="title"><b>Delete a rule from a network ACL</b></p></div><div class="itemizedlist"><p class="title"><b>Replace an existing rule in a network ACL</b></p></div><div class="itemizedlist"><p class="title"><b>Replace a network ACL association</b></p></div><div class="itemizedlist"><p class="title"><b>Delete a network ACL</b></p></div>', " AWS Documentation » Amazon VPC » User Guide » Security » Network ACLs A network access control list (ACL) is an optional layer of security\n for your VPC that acts as a firewall for controlling traffic in and out of one or\n more subnets.\n You might set up network ACLs with rules similar to your security groups in order\n to add an\n additional layer of security to your VPC. For more information about the differences\n between\n security groups and network ACLs, see Comparison of Security Groups and Network ACLs . Contents Network ACL Basics Network ACL Rules Default Network ACL Custom Network ACL Ephemeral Ports Working with Network ACLs Example: Controlling Access to Instances in a Subnet API and Command Overview Network ACL Basics The following are the basic things that you need to know about network ACLs: Your VPC automatically comes with a modifiable default network ACL. By default, it\n allows all inbound and outbound IPv4 traffic and, if applicable, IPv6 traffic. You can create a custom network ACL and associate it with a subnet. By default, each\n custom network ACL denies all inbound and outbound traffic until you add rules. Each subnet in your VPC must be associated with a network ACL. If you don't explicitly\n associate a subnet with a network ACL, the subnet is automatically associated with\n the\n default network ACL. You can associate a network ACL with multiple subnets; however, a subnet can be\n associated with only one network ACL at a time. When you associate a network ACL with\n a\n subnet, the previous association is removed. A network ACL contains a numbered list of rules that we evaluate in order, starting\n with the lowest numbered rule, to determine whether traffic is allowed in or out\n of any subnet associated with the network ACL. The highest number that you can\n use for a rule is 32766. We recommend that you start by creating rules in\n increments (for example, increments of 10 or 100) so that you can insert new\n rules where you need to later on. A network ACL has separate inbound and outbound rules, and each rule can either allow\n or deny traffic. Network ACLs are stateless; responses to allowed inbound traffic are subject to the\n rules for outbound traffic (and vice versa). For more information, see Amazon VPC Limits . Network ACL Rules You can add or remove rules from the default network ACL, or create additional network\n ACLs for your\n VPC. When you add or remove rules from a network ACL, the changes are automatically\n applied to the\n subnets it's associated with. The following are the parts of a network ACL rule: Rule number. Rules are evaluated starting with the lowest numbered rule. As soon as\n a\n rule matches traffic, it's applied regardless of any higher-numbered rule that may\n contradict it. Protocol. You can specify any protocol that has a standard protocol number. For more\n information, see Protocol\n Numbers . If you specify ICMP as the protocol, you can specify any or all of the\n ICMP types and codes. [Inbound rules only] The source of the traffic (CIDR range) and the destination\n (listening) port or port range. [Outbound rules only] The destination for the traffic (CIDR range) and the \n destination port or port range. Choice of ALLOW or DENY for the specified traffic. Default Network ACL The default network ACL is configured to allow all traffic to flow in and out of the\n subnets with which it is associated. Each network ACL also includes a rule whose rule\n number\n is an asterisk. This rule ensures that if a packet doesn't match any of the other\n numbered\n rules, it's denied. You can't modify or remove this rule. The following is an example default network ACL for a VPC that supports IPv4 only. Inbound Rule # Type Protocol Port Range Source Allow/Deny 100 All IPv4 traffic All All 0.0.0.0/0 ALLOW * All IPv4 traffic All All 0.0.0.0/0 DENY Outbound Rule # Type Protocol Port Range Destination Allow/Deny 100 All IPv4 traffic All All 0.0.0.0/0 ALLOW * All IPv4 traffic All All 0.0.0.0/0 DENY If you create a VPC with an IPv6 CIDR block or if you associate an IPv6 CIDR block\n with\n your existing VPC, we automatically add rules that allow all IPv6 traffic to flow\n in and out\n of your subnet. We also add rules whose rule numbers are an asterisk that ensures\n that a\n packet is denied if it doesn't match any of the other numbered rules. You can't modify\n or\n remove these rules. The following is an example default network ACL for a VPC that\n supports\n IPv4 and IPv6. Note If you've modified your default network ACL's inbound rules, we do not automatically\n add\n an ALLOW rule for inbound IPv6 traffic when you associate an IPv6 block with your\n VPC.\n Similarly, if you've modified the outbound rules, we do not automatically add an ALLOW\n rule\n for outbound IPv6 traffic. Inbound Rule # Type Protocol Port Range Source Allow/Deny 100 All IPv4 traffic All All 0.0.0.0/0 ALLOW 101 All IPv6 traffic All All ::/0 ALLOW * All traffic All All 0.0.0.0/0 DENY * All IPv6 traffic All All ::/0 DENY Outbound Rule # Type Protocol Port Range Destination Allow/Deny 100 All traffic All All 0.0.0.0/0 ALLOW 101 All IPv6 traffic All All ::/0 ALLOW * All traffic All All 0.0.0.0/0 DENY * All IPv6 traffic All All ::/0 DENY Custom Network ACL The following table shows an example of a custom network ACL for a VPC that supports\n IPv4\n only. It includes rules that allow HTTP and HTTPS traffic in (inbound rules 100 and\n 110). There's a corresponding outbound rule that enables responses to that inbound\n traffic (outbound rule 120, which covers ephemeral ports 32768-65535). For more\n information about how to select the appropriate ephemeral port range, see Ephemeral Ports . The network ACL also includes inbound rules that allow SSH and RDP traffic into the\n subnet. The outbound rule 120 enables responses to egress the subnet. The network ACL has outbound rules (100 and 110) that allow outbound HTTP and HTTPS\n traffic out of the subnet. There's a corresponding inbound rule that enables responses\n to that outbound traffic (inbound rule 140, which covers ephemeral ports 32768-65535). Note Each network ACL includes a default rule whose rule number is an asterisk. This rule\n ensures that if a packet doesn't match any of the other rules, it's denied. You can't\n modify\n or remove this rule. Inbound Rule # Type Protocol Port Range Source Allow/Deny Comments 100 HTTP TCP 80 0.0.0.0/0 ALLOW Allows inbound HTTP traffic from any IPv4 address. 110 HTTPS TCP 443 0.0.0.0/0 ALLOW Allows inbound HTTPS traffic from any IPv4 address. 120 SSH TCP 22 192.0.2.0/24 ALLOW Allows inbound SSH traffic from your home network's public IPv4 address range\n (over the Internet gateway). 130 RDP TCP 3389 192.0.2.0/24 ALLOW Allows inbound RDP traffic to the web servers from your home network's public\n IPv4 address range (over the Internet gateway). 140 Custom TCP TCP 32768-65535 0.0.0.0/0 ALLOW Allows inbound return IPv4 traffic from the Internet (that is, for requests\n that originate in the subnet). This range is an example only. For more information about how to select the\n \t\t\t\t\t\t\t\tappropriate ephemeral port range, see Ephemeral Ports . * All traffic All All 0.0.0.0/0 DENY Denies all inbound IPv4 traffic not already handled by a preceding rule (not\n modifiable). Outbound Rule # Type Protocol Port Range Destination Allow/Deny Comments 100 HTTP TCP 80 0.0.0.0/0 ALLOW Allows outbound IPv4 HTTP traffic from the subnet to the Internet. 110 HTTPS TCP 443 0.0.0.0/0 ALLOW Allows outbound IPv4 HTTPS traffic from the subnet to the Internet. 120 Custom TCP TCP 32768-65535 0.0.0.0/0 ALLOW Allows outbound IPv4 responses to clients on the Internet (for example,\n serving web pages to people visiting the web servers in the subnet). This range is an example only. For more information about how to select the\n \t\t\t\t\t\t\t\tappropriate ephemeral port range, see Ephemeral Ports . * All traffic All All 0.0.0.0/0 DENY Denies all outbound IPv4 traffic not already handled by a preceding rule (not\n modifiable). As a packet comes to the subnet, we evaluate it against the ingress rules of the ACL\n the\n subnet is associated with (starting at the top of the list of rules, and moving to\n the\n bottom). Here's how the evaluation goes if the packet is destined for the SSL port\n (443). The packet doesn't match the first rule evaluated (rule 100). It does match\n the\n second rule (110), which allows the packet into the subnet. If the packet had been\n destined for port 139 (NetBIOS), it doesn't match any of the rules, and the * rule\n ultimately denies the packet. You might want to add a DENY rule in a situation where you legitimately need to open\n a\n wide range of ports, but there are certain ports within that range you want to deny.\n Just make\n sure to place the DENY rule earlier in the table than the rule that allows the wide\n range of\n port traffic. Important With Elastic Load Balancing, if the subnet for your back-end instances has a network\n ACL in which you've\n added a DENY rule for all traffic with a source of 0.0.0.0/0 or the subnet's\n CIDR, then your load balancer can't carry out health checks on the instances. For\n more\n information about the recommended network ACL rules for your load balancers and back-end\n instances, see Network ACLs for Load Balancers in a VPC in the User Guide for Classic Load Balancers . The following table shows the same example of a custom network ACL for a VPC that\n has an\n associated IPv6 CIDR block. This network ACL includes rules for all IPv6 HTTP and\n HTTPS\n traffic. In this case, new rules were inserted between the existing rules for IPv4\n traffic;\n however, you can also add the rules as higher number rules after the IPv4 rules. IPv4\n and IPv6\n traffic are separate; therefore, none of the rules for the IPv4 traffic apply to the\n IPv6\n traffic. Inbound Rule # Type Protocol Port Range Source Allow/Deny Comments 100 HTTP TCP 80 0.0.0.0/0 ALLOW Allows inbound HTTP traffic from any IPv4 address. 105 HTTP TCP 80 ::/0 ALLOW Allows inbound HTTP traffic from any IPv6 address. 110 HTTPS TCP 443 0.0.0.0/0 ALLOW Allows inbound HTTPS traffic from any IPv4 address. 115 HTTPS TCP 443 ::/0 ALLOW Allows inbound HTTPS traffic from any IPv6 address. 120 SSH TCP 22 192.0.2.0/24 ALLOW Allows inbound SSH traffic from your home network's public IPv4 address range\n (over the Internet gateway). 130 RDP TCP 3389 192.0.2.0/24 ALLOW Allows inbound RDP traffic to the web servers from your home network's public\n IPv4 address range (over the Internet gateway). 140 Custom TCP TCP 32768-65535 0.0.0.0/0 ALLOW Allows inbound return IPv4 traffic from the Internet (that is, for requests\n that originate in the subnet). This range is an example only. For more information about how to select the\n \t\t\t\t\t\t\t\tappropriate ephemeral port range, see Ephemeral Ports . 145 Custom TCP TCP 32768-65535 ::/0 ALLOW Allows inbound return IPv6 traffic from the Internet (that is, for requests\n that originate in the subnet). This range is an example only. For more information about how to select the\n \t\t\t\t\t\t\t\tappropriate ephemeral port range, see Ephemeral Ports . * All traffic All All 0.0.0.0/0 DENY Denies all inbound IPv4 traffic not already handled by a preceding rule (not\n modifiable). * All traffic All All ::/0 DENY Denies all inbound IPv6 traffic not already handled by a preceding rule (not\n modifiable). Outbound Rule # Type Protocol Port Range Destination Allow/Deny Comments 100 HTTP TCP 80 0.0.0.0/0 ALLOW Allows outbound IPv4 HTTP traffic from the subnet to the Internet. 105 HTTP TCP 80 ::/0 ALLOW Allows outbound IPv6 HTTP traffic from the subnet to the Internet. 110 HTTPS TCP 443 0.0.0.0/0 ALLOW Allows outbound IPv4 HTTPS traffic from the subnet to the Internet. 115 HTTPS TCP 443 ::/0 ALLOW Allows outbound IPv6 HTTPS traffic from the subnet to the Internet. 120 Custom TCP TCP 32768-65535 0.0.0.0/0 ALLOW Allows outbound IPv4 responses to clients on the Internet (for example,\n serving web pages to people visiting the web servers in the subnet). This range is an example only. For more information about how to select the\n \t\t\t\t\t\t\t\tappropriate ephemeral port range, see Ephemeral Ports . 125 Custom TCP TCP 32768-65535 ::/0 ALLOW Allows outbound IPv6 responses to clients on the Internet (for example,\n serving web pages to people visiting the web servers in the subnet). This range is an example only. For more information about how to select the\n appropriate ephemeral port range, see Ephemeral Ports . * All traffic All All 0.0.0.0/0 DENY Denies all outbound IPv4 traffic not already handled by a preceding rule (not\n modifiable). * All traffic All All ::/0 DENY Denies all outbound IPv6 traffic not already handled by a preceding rule (not\n modifiable). Ephemeral Ports The example network ACL in the preceding section uses an ephemeral port range of\n \t\t\t32768-65535. However, you might want to use a different range for your network\n ACLs\n \t\t\tdepending on the type of client that you're using or with which you're\n \t\t\tcommunicating. The client that initiates the request chooses the ephemeral port range. The range\n varies\n depending on the client's operating system. Many Linux kernels (including the Amazon\n Linux kernel) use\n ports 32768-61000. Requests originating from Elastic Load Balancing use ports 1024-65535.\n Windows operating\n systems through Windows Server 2003 use ports 1025-5000. Windows Server 2008 and later\n versions use ports 49152-65535. A NAT gateway uses ports 1024-65535. For example,\n if a request\n comes into a web server in your VPC from a Windows XP client on the Internet, your\n network ACL\n must have an outbound rule to enable traffic destined for ports 1025-5000. If an instance in your VPC is the client initiating a request, your network ACL must\n have\n an inbound rule to enable traffic destined for the ephemeral ports specific to the\n type of\n instance (Amazon Linux, Windows Server 2008, and so on). In practice, to cover the different types of clients that might initiate traffic to\n public-facing instances in your VPC, you can open ephemeral ports 1024-65535. However,\n you can\n also add rules to the ACL to deny traffic on any malicious ports within that range.\n Ensure\n that you place the DENY rules earlier in the table than the ALLOW rules that open\n the wide\n range of ephemeral ports. Working with Network ACLs The following tasks show you how to work with network ACLs using the Amazon VPC console. Tasks Determining Network ACL Associations Creating a Network ACL Adding and Deleting Rules Associating a Subnet with a Network ACL Disassociating a Network ACL from a Subnet Changing a Subnet's Network ACL Deleting a Network ACL Determining Network ACL Associations You can use the Amazon VPC console to determine the network ACL that's associated\n with a\n subnet. Network ACLs can be associated with more than one subnet, so you can also\n determine\n the subnets that are associated with a network ACL. To determine which network ACL is associated with a subnet Open the Amazon VPC console at https://console.aws.amazon.com/vpc/ . In the navigation pane, choose Subnets , and then select the\n subnet. The network ACL associated with the subnet is included in the Network\n ACL tab, along with the network ACL's rules. To determine which subnets are associated with a network ACL Open the Amazon VPC console at https://console.aws.amazon.com/vpc/ . In the navigation pane, choose Network ACLs . The Associated With column indicates the number of associated subnets\n for each network ACL. Select a network ACL. In the details pane, choose Subnet Associations to display the\n subnets associated with the network ACL. Creating a Network ACL You can create a custom network ACL for your VPC. By default, a network ACL that you\n create blocks all inbound and outbound traffic until you add rules, and is not associated\n with a subnet until you explicitly associate it with one. To create a network ACL Open the Amazon VPC console at https://console.aws.amazon.com/vpc/ . In the navigation pane, choose Network ACLs . Choose Create Network ACL . In the Create Network ACL dialog box, optionally name your\n network ACL, and then select the ID of your VPC from the VPC list,\n and choose Yes, Create . Adding and Deleting Rules When you add or delete a rule from an ACL, any subnets associated with the ACL are\n subject to the change. You don't have to terminate and relaunch the instances in the\n subnet;\n the changes take effect after a short period. If you're using the Amazon EC2 API or a command line tool, you can't modify rules;\n you\n can only add and delete rules. If you're using the Amazon VPC console, you can modify\n the entries\n for existing rules (the console removes the rule and adds a new rule for you). If\n you need\n to change the order of a rule in the ACL, you must add a new rule with the new rule\n number,\n and then delete the original rule. To add rules to a network ACL Open the Amazon VPC console at https://console.aws.amazon.com/vpc/ . In the navigation pane, choose Network ACLs . In the details pane, choose either the Inbound Rules or Outbound Rules tab, depending on the type of rule that you need\n to add, and then choose Edit . In Rule # , enter a rule number (for example, 100). The rule\n \t\t\tnumber must not already be used in the network ACL. We process the rules in order,\n \t\t\tstarting with the lowest number. Tip We recommend that you leave gaps between the rule numbers (such as 100, 200, 300),\n rather than using sequential numbers (101, 102, 103). This makes it easier add a new\n rule without having to renumber the existing rules. Select a rule from the Type list. For example, to add a rule\n for HTTP, choose HTTP . To add a rule to allow all TCP traffic,\n choose All TCP . For some of these options (for example, HTTP), we\n fill in the port for you. To use a protocol that's not listed, choose Custom\n Protocol Rule . (Optional) If you're creating a custom protocol rule, select the protocol's\n number and name from the Protocol list. For more\n information, see IANA\n List of Protocol Numbers . (Optional) If the protocol you've selected requires a port number, enter the port\n number or\n port range separated by a hyphen (for example, 49152-65535). In the Source or Destination field\n (depending on whether this is an inbound or outbound rule), enter the CIDR range that\n the rule applies to. From the Allow/Deny list, select ALLOW to\n allow the specified traffic or DENY to deny the specified\n traffic. (Optional) To add another rule, choose Add another rule , and\n repeat steps 4 to 9 as required. When you are done, choose Save . To delete a rule from a network ACL Open the Amazon VPC console at https://console.aws.amazon.com/vpc/ . In the navigation pane, choose Network ACLs , and then select\n the network ACL. In the details pane, select either the Inbound Rules or Outbound Rules tab, and then choose Edit .\n Choose Remove for the rule you want to delete, and then choose Save . Associating a Subnet with a Network ACL To apply the rules of a network ACL to a particular subnet, you must associate the\n subnet\n with the network ACL. You can associate a network ACL with multiple subnets; however,\n a subnet can be\n associated with only one network ACL. Any subnet not associated with a particular\n ACL is associated\n with the default network ACL by default. To associate a subnet with a network ACL Open the Amazon VPC console at https://console.aws.amazon.com/vpc/ . In the navigation pane, choose Network ACLs , and then select\n the network ACL. In the details pane, on the Subnet Associations tab, choose Edit . Select the Associate check box for the\n subnet to associate with the network ACL, and then choose Save . Disassociating a Network ACL from a Subnet You can disassociate a custom network ACL from a subnet — by doing so, the subnet\n is then automatically associated with the default network ACL. To disassociate a subnet from a network ACL Open the Amazon VPC console at https://console.aws.amazon.com/vpc/ . In the navigation pane, choose Network ACLs , and then select\n the network ACL. In the details pane, choose the Subnet Associations tab. Choose Edit , and then deselect the Associate check box for the subnet. Choose Save . Changing a Subnet's Network ACL You can change the network ACL that's associated with a subnet. For example, when\n you\n create a subnet, it is initially associated with the default network ACL. You might\n want to\n instead associate it with a custom network ACL that you've created. After changing a subnet's network ACL, you don't have to terminate and relaunch the\n instances in\n the subnet; the changes take effect after a short period. To change a subnet's network ACL association Open the Amazon VPC console at https://console.aws.amazon.com/vpc/ . In the navigation pane, choose Subnets , and then select the\n subnet. Choose the Network ACL tab, and then choose Edit . Select the network ACL to associate the subnet with from the Change\n to list, and then choose Save . Deleting a Network ACL You can delete a network ACL only if there are no subnets associated with it. You\n can't\n delete the default network ACL. To delete a network ACL Open the Amazon VPC console at https://console.aws.amazon.com/vpc/ . In the navigation pane, choose Network ACLs . Select the network ACL, and then choose Delete . In the confirmation dialog box, choose Yes, Delete . Example: Controlling Access to Instances in a Subnet In this example, instances in your subnet can communicate with each other, and are\n accessible from a trusted remote computer. The remote computer may be a computer in\n your local\n network or an instance in a different subnet or VPC that you use to connect to your\n instances\n to perform administrative tasks. Your security group rules and network ACL rules allow\n access\n from the IP address of your remote computer (172.31.1.2/32). All other traffic from\n the\n Internet or other networks is denied. All instances use the same security group (sg-1a2b3c4d), with the following rules. Inbound\n Rules Protocol Type Protocol Port Range Source Comments All traffic All All sg-1a2b3c4d Enables instances associated with the same security group to communicate with\n each other. SSH TCP 22 172.31.1.2/32 Allows inbound SSH access from the remote computer. If the instance is a Windows\n computer, then this rule must use the RDP protocol for port 3389 instead. Outbound\n Rules Protocol Type Protocol Port Range Destination Comments All traffic All All sg-1a2b3c4d Enables instances associated with the same security group to communicate with\n each other. The subnet is associated with a network ACL that has the following rules. Inbound\n Rules Rule # Type Protocol Port Range Source Allow/Deny Comments 100 SSH TCP 22 172.31.1.2/32 ALLOW Allows inbound traffic from the remote computer. If the instance is a Windows\n computer, then this rule must use the RDP protocol for port 3389 instead. * All traffic All All 0.0.0.0/0 DENY Denies all other inbound traffic that does not match the previous rule. Outbound\n Rules Rule # Type Protocol Port Range Destination Allow/Deny Comments 100 Custom TCP TCP 1024-65535 172.31.1.2/32 ALLOW Allows outbound responses to the remote computer. Network ACLs are stateless,\n therefore this rule is required to allow response traffic for inbound\n requests. * All traffic All All 0.0.0.0/0 DENY Denies all other outbound traffic that does not match the previous rule. This scenario gives you the flexibility to change the security groups or security\n group\n rules for your instances, and have the network ACL as the backup layer of defense.\n The network\n ACL rules apply to all instances in the subnet, so if you accidentally make your security\n group rules too permissive, the network ACL rules continue to permit access only from\n the\n single IP address. For example, the following rules are more permissive than the earlier\n rules\n — they allow inbound SSH access from any IP address. Inbound\n Rules Type Protocol Port Range Source Comments All traffic All All sg-1a2b3c4d Enables instances associated with the same security group to communicate with\n each other. SSH TCP 22 0.0.0.0/0 Allows SSH access from any IP address. Outbound\n Rules Type Protocol Port Range Destination Comments All traffic All All 0.0.0.0/0 Allows all outbound traffic. However, only other instances within the subnet and your remote computer are able\n to\n access this instance. The network ACL rules still prevent all inbound traffic to the\n subnet\n except from your remote computer. API and Command Overview You can perform the tasks described on this page using the command line or an API.\n \n For more information about the command line interfaces and a list of available APIs,\n see Accessing Amazon VPC . Create a network ACL for your VPC Describe one or more of your network ACLs Add a rule to a network ACL Delete a rule from a network ACL Replace an existing rule in a network ACL Replace a network ACL association Delete a network ACL", 'Thu Aug 01 13:44:02 UTC 2019', 'Thu Aug 01 13:44:09 UTC 2019', 'text/html', '21', 'docs.aws.amazon.com', '200', '/api/entries/13998', '1641690281004761088'], 'is_starred': 0, 'user_name': 'admin', 'user_email': '[email protected]', 'user_id': 1, 'tags': ['aws', 'aws.vpc'], 'slugs': ['aws', 'aws-vpc'], 'is_public': False, 'id': '13998', 'title': 'Network ACLs - Amazon Virtual Private Cloud', 'url': 'https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html', 'content_text': " AWS Documentation » Amazon VPC » User Guide » Security » Network ACLs A network access control list (ACL) is an optional layer of security\n for your VPC that acts as a firewall for controlling traffic in and out of one or\n more subnets.\n You might set up network ACLs with rules similar to your security groups in order\n to add an\n additional layer of security to your VPC. For more information about the differences\n between\n security groups and network ACLs, see Comparison of Security Groups and Network ACLs . Contents Network ACL Basics Network ACL Rules Default Network ACL Custom Network ACL Ephemeral Ports Working with Network ACLs Example: Controlling Access to Instances in a Subnet API and Command Overview Network ACL Basics The following are the basic things that you need to know about network ACLs: Your VPC automatically comes with a modifiable default network ACL. By default, it\n allows all inbound and outbound IPv4 traffic and, if applicable, IPv6 traffic. You can create a custom network ACL and associate it with a subnet. By default, each\n custom network ACL denies all inbound and outbound traffic until you add rules. Each subnet in your VPC must be associated with a network ACL. If you don't explicitly\n associate a subnet with a network ACL, the subnet is automatically associated with\n the\n default network ACL. You can associate a network ACL with multiple subnets; however, a subnet can be\n associated with only one network ACL at a time. When you associate a network ACL with\n a\n subnet, the previous association is removed. A network ACL contains a numbered list of rules that we evaluate in order, starting\n with the lowest numbered rule, to determine whether traffic is allowed in or out\n of any subnet associated with the network ACL. The highest number that you can\n use for a rule is 32766. We recommend that you start by creating rules in\n increments (for example, increments of 10 or 100) so that you can insert new\n rules where you need to later on. A network ACL has separate inbound and outbound rules, and each rule can either allow\n or deny traffic. Network ACLs are stateless; responses to allowed inbound traffic are subject to the\n rules for outbound traffic (and vice versa). For more information, see Amazon VPC Limits . Network ACL Rules You can add or remove rules from the default network ACL, or create additional network\n ACLs for your\n VPC. When you add or remove rules from a network ACL, the changes are automatically\n applied to the\n subnets it's associated with. The following are the parts of a network ACL rule: Rule number. Rules are evaluated starting with the lowest numbered rule. As soon as\n a\n rule matches traffic, it's applied regardless of any higher-numbered rule that may\n contradict it. Protocol. You can specify any protocol that has a standard protocol number. For more\n information, see Protocol\n Numbers . If you specify ICMP as the protocol, you can specify any or all of the\n ICMP types and codes. [Inbound rules only] The source of the traffic (CIDR range) and the destination\n (listening) port or port range. [Outbound rules only] The destination for the traffic (CIDR range) and the \n destination port or port range. Choice of ALLOW or DENY for the specified traffic. Default Network ACL The default network ACL is configured to allow all traffic to flow in and out of the\n subnets with which it is associated. Each network ACL also includes a rule whose rule\n number\n is an asterisk. This rule ensures that if a packet doesn't match any of the other\n numbered\n rules, it's denied. You can't modify or remove this rule. The following is an example default network ACL for a VPC that supports IPv4 only. Inbound Rule # Type Protocol Port Range Source Allow/Deny 100 All IPv4 traffic All All 0.0.0.0/0 ALLOW * All IPv4 traffic All All 0.0.0.0/0 DENY Outbound Rule # Type Protocol Port Range Destination Allow/Deny 100 All IPv4 traffic All All 0.0.0.0/0 ALLOW * All IPv4 traffic All All 0.0.0.0/0 DENY If you create a VPC with an IPv6 CIDR block or if you associate an IPv6 CIDR block\n with\n your existing VPC, we automatically add rules that allow all IPv6 traffic to flow\n in and out\n of your subnet. We also add rules whose rule numbers are an asterisk that ensures\n that a\n packet is denied if it doesn't match any of the other numbered rules. You can't modify\n or\n remove these rules. The following is an example default network ACL for a VPC that\n supports\n IPv4 and IPv6. Note If you've modified your default network ACL's inbound rules, we do not automatically\n add\n an ALLOW rule for inbound IPv6 traffic when you associate an IPv6 block with your\n VPC.\n Similarly, if you've modified the outbound rules, we do not automatically add an ALLOW\n rule\n for outbound IPv6 traffic. Inbound Rule # Type Protocol Port Range Source Allow/Deny 100 All IPv4 traffic All All 0.0.0.0/0 ALLOW 101 All IPv6 traffic All All ::/0 ALLOW * All traffic All All 0.0.0.0/0 DENY * All IPv6 traffic All All ::/0 DENY Outbound Rule # Type Protocol Port Range Destination Allow/Deny 100 All traffic All All 0.0.0.0/0 ALLOW 101 All IPv6 traffic All All ::/0 ALLOW * All traffic All All 0.0.0.0/0 DENY * All IPv6 traffic All All ::/0 DENY Custom Network ACL The following table shows an example of a custom network ACL for a VPC that supports\n IPv4\n only. It includes rules that allow HTTP and HTTPS traffic in (inbound rules 100 and\n 110). There's a corresponding outbound rule that enables responses to that inbound\n traffic (outbound rule 120, which covers ephemeral ports 32768-65535). For more\n information about how to select the appropriate ephemeral port range, see Ephemeral Ports . The network ACL also includes inbound rules that allow SSH and RDP traffic into the\n subnet. The outbound rule 120 enables responses to egress the subnet. The network ACL has outbound rules (100 and 110) that allow outbound HTTP and HTTPS\n traffic out of the subnet. There's a corresponding inbound rule that enables responses\n to that outbound traffic (inbound rule 140, which covers ephemeral ports 32768-65535). Note Each network ACL includes a default rule whose rule number is an asterisk. This rule\n ensures that if a packet doesn't match any of the other rules, it's denied. You can't\n modify\n or remove this rule. Inbound Rule # Type Protocol Port Range Source Allow/Deny Comments 100 HTTP TCP 80 0.0.0.0/0 ALLOW Allows inbound HTTP traffic from any IPv4 address. 110 HTTPS TCP 443 0.0.0.0/0 ALLOW Allows inbound HTTPS traffic from any IPv4 address. 120 SSH TCP 22 192.0.2.0/24 ALLOW Allows inbound SSH traffic from your home network's public IPv4 address range\n (over the Internet gateway). 130 RDP TCP 3389 192.0.2.0/24 ALLOW Allows inbound RDP traffic to the web servers from your home network's public\n IPv4 address range (over the Internet gateway). 140 Custom TCP TCP 32768-65535 0.0.0.0/0 ALLOW Allows inbound return IPv4 traffic from the Internet (that is, for requests\n that originate in the subnet). This range is an example only. For more information about how to select the\n \t\t\t\t\t\t\t\tappropriate ephemeral port range, see Ephemeral Ports . * All traffic All All 0.0.0.0/0 DENY Denies all inbound IPv4 traffic not already handled by a preceding rule (not\n modifiable). Outbound Rule # Type Protocol Port Range Destination Allow/Deny Comments 100 HTTP TCP 80 0.0.0.0/0 ALLOW Allows outbound IPv4 HTTP traffic from the subnet to the Internet. 110 HTTPS TCP 443 0.0.0.0/0 ALLOW Allows outbound IPv4 HTTPS traffic from the subnet to the Internet. 120 Custom TCP TCP 32768-65535 0.0.0.0/0 ALLOW Allows outbound IPv4 responses to clients on the Internet (for example,\n serving web pages to people visiting the web servers in the subnet). This range is an example only. For more information about how to select the\n \t\t\t\t\t\t\t\tappropriate ephemeral port range, see Ephemeral Ports . * All traffic All All 0.0.0.0/0 DENY Denies all outbound IPv4 traffic not already handled by a preceding rule (not\n modifiable). As a packet comes to the subnet, we evaluate it against the ingress rules of the ACL\n the\n subnet is associated with (starting at the top of the list of rules, and moving to\n the\n bottom). Here's how the evaluation goes if the packet is destined for the SSL port\n (443). The packet doesn't match the first rule evaluated (rule 100). It does match\n the\n second rule (110), which allows the packet into the subnet. If the packet had been\n destined for port 139 (NetBIOS), it doesn't match any of the rules, and the * rule\n ultimately denies the packet. You might want to add a DENY rule in a situation where you legitimately need to open\n a\n wide range of ports, but there are certain ports within that range you want to deny.\n Just make\n sure to place the DENY rule earlier in the table than the rule that allows the wide\n range of\n port traffic. Important With Elastic Load Balancing, if the subnet for your back-end instances has a network\n ACL in which you've\n added a DENY rule for all traffic with a source of 0.0.0.0/0 or the subnet's\n CIDR, then your load balancer can't carry out health checks on the instances. For\n more\n information about the recommended network ACL rules for your load balancers and back-end\n instances, see Network ACLs for Load Balancers in a VPC in the User Guide for Classic Load Balancers . The following table shows the same example of a custom network ACL for a VPC that\n has an\n associated IPv6 CIDR block. This network ACL includes rules for all IPv6 HTTP and\n HTTPS\n traffic. In this case, new rules were inserted between the existing rules for IPv4\n traffic;\n however, you can also add the rules as higher number rules after the IPv4 rules. IPv4\n and IPv6\n traffic are separate; therefore, none of the rules for the IPv4 traffic apply to the\n IPv6\n traffic. Inbound Rule # Type Protocol Port Range Source Allow/Deny Comments 100 HTTP TCP 80 0.0.0.0/0 ALLOW Allows inbound HTTP traffic from any IPv4 address. 105 HTTP TCP 80 ::/0 ALLOW Allows inbound HTTP traffic from any IPv6 address. 110 HTTPS TCP 443 0.0.0.0/0 ALLOW Allows inbound HTTPS traffic from any IPv4 address. 115 HTTPS TCP 443 ::/0 ALLOW Allows inbound HTTPS traffic from any IPv6 address. 120 SSH TCP 22 192.0.2.0/24 ALLOW Allows inbound SSH traffic from your home network's public IPv4 address range\n (over the Internet gateway). 130 RDP TCP 3389 192.0.2.0/24 ALLOW Allows inbound RDP traffic to the web servers from your home network's public\n IPv4 address range (over the Internet gateway). 140 Custom TCP TCP 32768-65535 0.0.0.0/0 ALLOW Allows inbound return IPv4 traffic from the Internet (that is, for requests\n that originate in the subnet). This range is an example only. For more information about how to select the\n \t\t\t\t\t\t\t\tappropriate ephemeral port range, see Ephemeral Ports . 145 Custom TCP TCP 32768-65535 ::/0 ALLOW Allows inbound return IPv6 traffic from the Internet (that is, for requests\n that originate in the subnet). This range is an example only. For more information about how to select the\n \t\t\t\t\t\t\t\tappropriate ephemeral port range, see Ephemeral Ports . * All traffic All All 0.0.0.0/0 DENY Denies all inbound IPv4 traffic not already handled by a preceding rule (not\n modifiable). * All traffic All All ::/0 DENY Denies all inbound IPv6 traffic not already handled by a preceding rule (not\n modifiable). Outbound Rule # Type Protocol Port Range Destination Allow/Deny Comments 100 HTTP TCP 80 0.0.0.0/0 ALLOW Allows outbound IPv4 HTTP traffic from the subnet to the Internet. 105 HTTP TCP 80 ::/0 ALLOW Allows outbound IPv6 HTTP traffic from the subnet to the Internet. 110 HTTPS TCP 443 0.0.0.0/0 ALLOW Allows outbound IPv4 HTTPS traffic from the subnet to the Internet. 115 HTTPS TCP 443 ::/0 ALLOW Allows outbound IPv6 HTTPS traffic from the subnet to the Internet. 120 Custom TCP TCP 32768-65535 0.0.0.0/0 ALLOW Allows outbound IPv4 responses to clients on the Internet (for example,\n serving web pages to people visiting the web servers in the subnet). This range is an example only. For more information about how to select the\n \t\t\t\t\t\t\t\tappropriate ephemeral port range, see Ephemeral Ports . 125 Custom TCP TCP 32768-65535 ::/0 ALLOW Allows outbound IPv6 responses to clients on the Internet (for example,\n serving web pages to people visiting the web servers in the subnet). This range is an example only. For more information about how to select the\n appropriate ephemeral port range, see Ephemeral Ports . * All traffic All All 0.0.0.0/0 DENY Denies all outbound IPv4 traffic not already handled by a preceding rule (not\n modifiable). * All traffic All All ::/0 DENY Denies all outbound IPv6 traffic not already handled by a preceding rule (not\n modifiable). Ephemeral Ports The example network ACL in the preceding section uses an ephemeral port range of\n \t\t\t32768-65535. However, you might want to use a different range for your network\n ACLs\n \t\t\tdepending on the type of client that you're using or with which you're\n \t\t\tcommunicating. The client that initiates the request chooses the ephemeral port range. The range\n varies\n depending on the client's operating system. Many Linux kernels (including the Amazon\n Linux kernel) use\n ports 32768-61000. Requests originating from Elastic Load Balancing use ports 1024-65535.\n Windows operating\n systems through Windows Server 2003 use ports 1025-5000. Windows Server 2008 and later\n versions use ports 49152-65535. A NAT gateway uses ports 1024-65535. For example,\n if a request\n comes into a web server in your VPC from a Windows XP client on the Internet, your\n network ACL\n must have an outbound rule to enable traffic destined for ports 1025-5000. If an instance in your VPC is the client initiating a request, your network ACL must\n have\n an inbound rule to enable traffic destined for the ephemeral ports specific to the\n type of\n instance (Amazon Linux, Windows Server 2008, and so on). In practice, to cover the different types of clients that might initiate traffic to\n public-facing instances in your VPC, you can open ephemeral ports 1024-65535. However,\n you can\n also add rules to the ACL to deny traffic on any malicious ports within that range.\n Ensure\n that you place the DENY rules earlier in the table than the ALLOW rules that open\n the wide\n range of ephemeral ports. Working with Network ACLs The following tasks show you how to work with network ACLs using the Amazon VPC console. Tasks Determining Network ACL Associations Creating a Network ACL Adding and Deleting Rules Associating a Subnet with a Network ACL Disassociating a Network ACL from a Subnet Changing a Subnet's Network ACL Deleting a Network ACL Determining Network ACL Associations You can use the Amazon VPC console to determine the network ACL that's associated\n with a\n subnet. Network ACLs can be associated with more than one subnet, so you can also\n determine\n the subnets that are associated with a network ACL. To determine which network ACL is associated with a subnet Open the Amazon VPC console at https://console.aws.amazon.com/vpc/ . In the navigation pane, choose Subnets , and then select the\n subnet. The network ACL associated with the subnet is included in the Network\n ACL tab, along with the network ACL's rules. To determine which subnets are associated with a network ACL Open the Amazon VPC console at https://console.aws.amazon.com/vpc/ . In the navigation pane, choose Network ACLs . The Associated With column indicates the number of associated subnets\n for each network ACL. Select a network ACL. In the details pane, choose Subnet Associations to display the\n subnets associated with the network ACL. Creating a Network ACL You can create a custom network ACL for your VPC. By default, a network ACL that you\n create blocks all inbound and outbound traffic until you add rules, and is not associated\n with a subnet until you explicitly associate it with one. To create a network ACL Open the Amazon VPC console at https://console.aws.amazon.com/vpc/ . In the navigation pane, choose Network ACLs . Choose Create Network ACL . In the Create Network ACL dialog box, optionally name your\n network ACL, and then select the ID of your VPC from the VPC list,\n and choose Yes, Create . Adding and Deleting Rules When you add or delete a rule from an ACL, any subnets associated with the ACL are\n subject to the change. You don't have to terminate and relaunch the instances in the\n subnet;\n the changes take effect after a short period. If you're using the Amazon EC2 API or a command line tool, you can't modify rules;\n you\n can only add and delete rules. If you're using the Amazon VPC console, you can modify\n the entries\n for existing rules (the console removes the rule and adds a new rule for you). If\n you need\n to change the order of a rule in the ACL, you must add a new rule with the new rule\n number,\n and then delete the original rule. To add rules to a network ACL Open the Amazon VPC console at https://console.aws.amazon.com/vpc/ . In the navigation pane, choose Network ACLs . In the details pane, choose either the Inbound Rules or Outbound Rules tab, depending on the type of rule that you need\n to add, and then choose Edit . In Rule # , enter a rule number (for example, 100). The rule\n \t\t\tnumber must not already be used in the network ACL. We process the rules in order,\n \t\t\tstarting with the lowest number. Tip We recommend that you leave gaps between the rule numbers (such as 100, 200, 300),\n rather than using sequential numbers (101, 102, 103). This makes it easier add a new\n rule without having to renumber the existing rules. Select a rule from the Type list. For example, to add a rule\n for HTTP, choose HTTP . To add a rule to allow all TCP traffic,\n choose All TCP . For some of these options (for example, HTTP), we\n fill in the port for you. To use a protocol that's not listed, choose Custom\n Protocol Rule . (Optional) If you're creating a custom protocol rule, select the protocol's\n number and name from the Protocol list. For more\n information, see IANA\n List of Protocol Numbers . (Optional) If the protocol you've selected requires a port number, enter the port\n number or\n port range separated by a hyphen (for example, 49152-65535). In the Source or Destination field\n (depending on whether this is an inbound or outbound rule), enter the CIDR range that\n the rule applies to. From the Allow/Deny list, select ALLOW to\n allow the specified traffic or DENY to deny the specified\n traffic. (Optional) To add another rule, choose Add another rule , and\n repeat steps 4 to 9 as required. When you are done, choose Save . To delete a rule from a network ACL Open the Amazon VPC console at https://console.aws.amazon.com/vpc/ . In the navigation pane, choose Network ACLs , and then select\n the network ACL. In the details pane, select either the Inbound Rules or Outbound Rules tab, and then choose Edit .\n Choose Remove for the rule you want to delete, and then choose Save . Associating a Subnet with a Network ACL To apply the rules of a network ACL to a particular subnet, you must associate the\n subnet\n with the network ACL. You can associate a network ACL with multiple subnets; however,\n a subnet can be\n associated with only one network ACL. Any subnet not associated with a particular\n ACL is associated\n with the default network ACL by default. To associate a subnet with a network ACL Open the Amazon VPC console at https://console.aws.amazon.com/vpc/ . In the navigation pane, choose Network ACLs , and then select\n the network ACL. In the details pane, on the Subnet Associations tab, choose Edit . Select the Associate check box for the\n subnet to associate with the network ACL, and then choose Save . Disassociating a Network ACL from a Subnet You can disassociate a custom network ACL from a subnet — by doing so, the subnet\n is then automatically associated with the default network ACL. To disassociate a subnet from a network ACL Open the Amazon VPC console at https://console.aws.amazon.com/vpc/ . In the navigation pane, choose Network ACLs , and then select\n the network ACL. In the details pane, choose the Subnet Associations tab. Choose Edit , and then deselect the Associate check box for the subnet. Choose Save . Changing a Subnet's Network ACL You can change the network ACL that's associated with a subnet. For example, when\n you\n create a subnet, it is initially associated with the default network ACL. You might\n want to\n instead associate it with a custom network ACL that you've created. After changing a subnet's network ACL, you don't have to terminate and relaunch the\n instances in\n the subnet; the changes take effect after a short period. To change a subnet's network ACL association Open the Amazon VPC console at https://console.aws.amazon.com/vpc/ . In the navigation pane, choose Subnets , and then select the\n subnet. Choose the Network ACL tab, and then choose Edit . Select the network ACL to associate the subnet with from the Change\n to list, and then choose Save . Deleting a Network ACL You can delete a network ACL only if there are no subnets associated with it. You\n can't\n delete the default network ACL. To delete a network ACL Open the Amazon VPC console at https://console.aws.amazon.com/vpc/ . In the navigation pane, choose Network ACLs . Select the network ACL, and then choose Delete . In the confirmation dialog box, choose Yes, Delete . Example: Controlling Access to Instances in a Subnet In this example, instances in your subnet can communicate with each other, and are\n accessible from a trusted remote computer. The remote computer may be a computer in\n your local\n network or an instance in a different subnet or VPC that you use to connect to your\n instances\n to perform administrative tasks. Your security group rules and network ACL rules allow\n access\n from the IP address of your remote computer (172.31.1.2/32). All other traffic from\n the\n Internet or other networks is denied. All instances use the same security group (sg-1a2b3c4d), with the following rules. Inbound\n Rules Protocol Type Protocol Port Range Source Comments All traffic All All sg-1a2b3c4d Enables instances associated with the same security group to communicate with\n each other. SSH TCP 22 172.31.1.2/32 Allows inbound SSH access from the remote computer. If the instance is a Windows\n computer, then this rule must use the RDP protocol for port 3389 instead. Outbound\n Rules Protocol Type Protocol Port Range Destination Comments All traffic All All sg-1a2b3c4d Enables instances associated with the same security group to communicate with\n each other. The subnet is associated with a network ACL that has the following rules. Inbound\n Rules Rule # Type Protocol Port Range Source Allow/Deny Comments 100 SSH TCP 22 172.31.1.2/32 ALLOW Allows inbound traffic from the remote computer. If the instance is a Windows\n computer, then this rule must use the RDP protocol for port 3389 instead. * All traffic All All 0.0.0.0/0 DENY Denies all other inbound traffic that does not match the previous rule. Outbound\n Rules Rule # Type Protocol Port Range Destination Allow/Deny Comments 100 Custom TCP TCP 1024-65535 172.31.1.2/32 ALLOW Allows outbound responses to the remote computer. Network ACLs are stateless,\n therefore this rule is required to allow response traffic for inbound\n requests. * All traffic All All 0.0.0.0/0 DENY Denies all other outbound traffic that does not match the previous rule. This scenario gives you the flexibility to change the security groups or security\n group\n rules for your instances, and have the network ACL as the backup layer of defense.\n The network\n ACL rules apply to all instances in the subnet, so if you accidentally make your security\n group rules too permissive, the network ACL rules continue to permit access only from\n the\n single IP address. For example, the following rules are more permissive than the earlier\n rules\n — they allow inbound SSH access from any IP address. Inbound\n Rules Type Protocol Port Range Source Comments All traffic All All sg-1a2b3c4d Enables instances associated with the same security group to communicate with\n each other. SSH TCP 22 0.0.0.0/0 Allows SSH access from any IP address. Outbound\n Rules Type Protocol Port Range Destination Comments All traffic All All 0.0.0.0/0 Allows all outbound traffic. However, only other instances within the subnet and your remote computer are able\n to\n access this instance. The network ACL rules still prevent all inbound traffic to the\n subnet\n except from your remote computer. API and Command Overview You can perform the tasks described on this page using the command line or an API.\n \n For more information about the command line interfaces and a list of available APIs,\n see Accessing Amazon VPC . Create a network ACL for your VPC Describe one or more of your network ACLs Add a rule to a network ACL Delete a rule from a network ACL Replace an existing rule in a network ACL Replace a network ACL association Delete a network ACL", 'created_at': '2019-08-01T13:44:02Z', 'updated_at': '2019-08-01T13:44:09Z', 'mimetype': 'text/html', 'reading_time': 21, 'domain_name': 'docs.aws.amazon.com', 'http_status': 200, '_links': ['/api/entries/13998'], 'content': '<table summary="Breadcrumbs"><tr><td>\n <p><a href="https://docs.aws.amazon.com/index.html">AWS Documentation</a> » <a href="https://docs.aws.amazon.com/vpc/index.html">Amazon VPC</a> » <a href="https://docs.aws.amazon.com/vpc/latest/userguide/index.html">User Guide</a> » <a href="https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Security.html">Security</a> » Network ACLs</p>\n </td>\n </tr></table><p>A <em>network access control list (ACL)</em> is an optional layer of security\n for your VPC that acts as a firewall for controlling traffic in and out of one or\n more subnets.\n You might set up network ACLs with rules similar to your security groups in order\n to add an\n additional layer of security to your VPC. For more information about the differences\n between\n security groups and network ACLs, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Security.html#VPC_Security_Comparison">Comparison of Security Groups and Network ACLs</a>.\n </p><div class="highlights" id="inline-topiclist"><p><strong>Contents</strong></p><ul><li><a href="#nacl-basics">Network ACL Basics</a></li>\n <li><a href="#nacl-rules">Network ACL Rules</a></li>\n <li><a href="#default-network-acl">Default Network ACL</a></li>\n <li><a href="#custom-network-acl">Custom Network ACL</a></li>\n <li><a href="#nacl-ephemeral-ports">Ephemeral Ports</a></li>\n <li><a href="#nacl-tasks">Working with Network ACLs</a></li>\n <li><a href="#nacl-examples">Example: Controlling Access to Instances in a Subnet</a></li>\n <li><a href="#nacl-api-cli">API and Command Overview</a></li>\n </ul></div><h2 id="nacl-basics">Network ACL Basics</h2><p>The following are the basic things that you need to know about network ACLs:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">\n \n <p>Your VPC automatically comes with a modifiable default network ACL. By default, it\n allows all inbound and outbound IPv4 traffic and, if applicable, IPv6 traffic.\n </p>\n \n </li>\n <li class="listitem">\n \n <p>You can create a custom network ACL and associate it with a subnet. By default, each\n custom network ACL denies all inbound and outbound traffic until you add rules. \n </p>\n \n </li>\n <li class="listitem">\n \n <p>Each subnet in your VPC must be associated with a network ACL. If you don\'t explicitly\n associate a subnet with a network ACL, the subnet is automatically associated with\n the\n default network ACL.\n </p>\n \n </li>\n <li class="listitem">\n \n <p>You can associate a network ACL with multiple subnets; however, a subnet can be\n associated with only one network ACL at a time. When you associate a network ACL with\n a\n subnet, the previous association is removed.\n </p>\n \n </li>\n <li class="listitem">\n \n <p>A network ACL contains a numbered list of rules that we evaluate in order, starting\n with the lowest numbered rule, to determine whether traffic is allowed in or out\n of any subnet associated with the network ACL. The highest number that you can\n use for a rule is 32766. We recommend that you start by creating rules in\n increments (for example, increments of 10 or 100) so that you can insert new\n rules where you need to later on.\n </p>\n \n </li>\n <li class="listitem">\n \n <p>A network ACL has separate inbound and outbound rules, and each rule can either allow\n or deny traffic. \n </p>\n \n </li>\n <li class="listitem">\n \n <p>Network ACLs are stateless; responses to allowed inbound traffic are subject to the\n rules for outbound traffic (and vice versa).\n </p>\n \n </li>\n </ul></div><p>For more information, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html">Amazon VPC Limits</a>.\n </p><h2 id="nacl-rules">Network ACL Rules</h2><p>You can add or remove rules from the default network ACL, or create additional network\n ACLs for your\n VPC. When you add or remove rules from a network ACL, the changes are automatically\n applied to the\n subnets it\'s associated with.\n </p><p>The following are the parts of a network ACL rule:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">\n \n <p>Rule number. Rules are evaluated starting with the lowest numbered rule. As soon as\n a\n rule matches traffic, it\'s applied regardless of any higher-numbered rule that may\n contradict it.\n </p>\n \n </li>\n <li class="listitem">\n \n <p>Protocol. You can specify any protocol that has a standard protocol number. For more\n information, see <a href="http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml" target="_blank">Protocol\n Numbers</a>. If you specify ICMP as the protocol, you can specify any or all of the\n ICMP types and codes.\n </p>\n \n </li>\n <li class="listitem">\n \n <p>[Inbound rules only] The source of the traffic (CIDR range) and the destination\n (listening) port or port range.\n </p>\n \n </li>\n <li class="listitem">\n \n <p>[Outbound rules only] The destination for the traffic (CIDR range) and the \n destination port or port range.\n </p>\n \n </li>\n <li class="listitem">\n \n <p>Choice of ALLOW or DENY for the specified traffic.</p>\n \n </li>\n </ul></div><h2 id="default-network-acl">Default Network ACL</h2><p>The default network ACL is configured to allow all traffic to flow in and out of the\n subnets with which it is associated. Each network ACL also includes a rule whose rule\n number\n is an asterisk. This rule ensures that if a packet doesn\'t match any of the other\n numbered\n rules, it\'s denied. You can\'t modify or remove this rule. \n </p><p>The following is an example default network ACL for a VPC that supports IPv4 only.</p><div class="table"><div class="table-contents"><table id="w120aac17c21c11b7"><tr style="background-color: #eeeeee;"><td colspan="6" align="left"><b>Inbound\n </b></td>\n \n </tr><tr><td><b>Rule #</b></td>\n \n <td><b>Type</b></td>\n \n <td>\n <b>Protocol</b></td>\n \n <td>\n <b>Port Range </b></td>\n \n <td><b>Source</b></td>\n \n <td>\n <b>Allow/Deny</b></td>\n \n </tr><tr><td>\n \n <p>100</p>\n \n </td>\n \n <td>All IPv4 traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>All IPv4 traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n </tr><tr style="background-color: #eeeeee;"><td colspan="6" align="left">\n <b>Outbound</b>\n \n </td>\n \n </tr><tr><td><b>Rule #</b></td>\n \n <td><b>Type</b></td>\n \n <td>\n <b>Protocol</b>\n \n </td>\n \n <td>\n <b>Port Range</b></td>\n \n <td><b>Destination</b></td>\n \n <td>\n <b>Allow/Deny</b></td>\n \n </tr><tr><td>\n \n <p>100</p>\n \n </td>\n \n <td>All IPv4 traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>All IPv4 traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n </tr></table></div></div><p>If you create a VPC with an IPv6 CIDR block or if you associate an IPv6 CIDR block\n with\n your existing VPC, we automatically add rules that allow all IPv6 traffic to flow\n in and out\n of your subnet. We also add rules whose rule numbers are an asterisk that ensures\n that a\n packet is denied if it doesn\'t match any of the other numbered rules. You can\'t modify\n or\n remove these rules. The following is an example default network ACL for a VPC that\n supports\n IPv4 and IPv6.\n </p><div class="aws-note"><p class="aws-note">Note</p><p>If you\'ve modified your default network ACL\'s inbound rules, we do not automatically\n add\n an ALLOW rule for inbound IPv6 traffic when you associate an IPv6 block with your\n VPC.\n Similarly, if you\'ve modified the outbound rules, we do not automatically add an ALLOW\n rule\n for outbound IPv6 traffic. \n </p></div><div class="table"><div class="table-contents"><table id="w120aac17c21c11c13"><tr style="background-color: #eeeeee;"><td colspan="6" align="left"><b>Inbound\n </b></td>\n \n </tr><tr><td><b>Rule #</b></td>\n \n <td><b>Type</b></td>\n \n <td>\n <b>Protocol</b></td>\n \n <td>\n <b>Port Range </b></td>\n \n <td><b>Source</b></td>\n \n <td>\n <b>Allow/Deny</b></td>\n \n </tr><tr><td>\n \n <p>100</p>\n \n </td>\n \n <td>All IPv4 traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>101</p>\n \n </td>\n \n <td>\n \n <p>All IPv6 traffic</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>All traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>\n \n <p>All IPv6 traffic</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n </tr><tr style="background-color: #eeeeee;"><td colspan="6" align="left">\n <b>Outbound</b>\n \n </td>\n \n </tr><tr><td><b>Rule #</b></td>\n \n <td><b>Type</b></td>\n \n <td>\n <b>Protocol</b>\n \n </td>\n \n <td>\n <b>Port Range</b></td>\n \n <td><b>Destination</b></td>\n \n <td>\n <b>Allow/Deny</b></td>\n \n </tr><tr><td>\n \n <p>100</p>\n \n </td>\n \n <td>All traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>101</p>\n \n </td>\n \n <td>\n \n <p>All IPv6 traffic</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>All traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>\n \n <p>All IPv6 traffic</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n </tr></table></div></div><h2 id="custom-network-acl">Custom Network ACL</h2><p>The following table shows an example of a custom network ACL for a VPC that supports\n IPv4\n only. It includes rules that allow HTTP and HTTPS traffic in (inbound rules 100 and\n 110). There\'s a corresponding outbound rule that enables responses to that inbound\n traffic (outbound rule 120, which covers ephemeral ports 32768-65535). For more\n information about how to select the appropriate ephemeral port range, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-ephemeral-ports">Ephemeral Ports</a>.\n </p><p>The network ACL also includes inbound rules that allow SSH and RDP traffic into the\n subnet. The outbound rule 120 enables responses to egress the subnet.\n </p><p>The network ACL has outbound rules (100 and 110) that allow outbound HTTP and HTTPS\n traffic out of the subnet. There\'s a corresponding inbound rule that enables responses\n to that outbound traffic (inbound rule 140, which covers ephemeral ports 32768-65535).\n \n </p><div class="aws-note"><p class="aws-note">Note</p><p>Each network ACL includes a default rule whose rule number is an asterisk. This rule\n ensures that if a packet doesn\'t match any of the other rules, it\'s denied. You can\'t\n modify\n or remove this rule.\n </p></div><div class="table"><div class="table-contents"><table id="w120aac17c21c13c11"><tr style="background-color: #eeeeee;"><td colspan="7" align="left">\n <b>Inbound</b>\n \n </td>\n \n </tr><tr><td>\n <b>Rule #</b>\n \n </td>\n \n <td><b>Type</b></td>\n \n <td>\n <b>Protocol</b>\n \n </td>\n \n <td>\n <b>Port Range</b>\n \n </td>\n \n <td><b>Source</b>\n \n </td>\n \n <td>\n <b>Allow/Deny</b>\n \n </td>\n \n <td>\n <b>Comments</b>\n \n </td>\n \n </tr><tr><td>\n \n <p>100</p>\n \n </td>\n \n <td>HTTP</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>80</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound HTTP traffic from any IPv4 address.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>110</p>\n \n </td>\n \n <td>HTTPS</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>443</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound HTTPS traffic from any IPv4 address.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>120</p>\n \n </td>\n \n <td>SSH</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>22</p>\n \n </td>\n \n <td>192.0.2.0/24</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound SSH traffic from your home network\'s public IPv4 address range\n (over the Internet gateway).\n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>130</p>\n \n </td>\n \n <td>RDP</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>3389</p>\n \n </td>\n \n <td>192.0.2.0/24</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound RDP traffic to the web servers from your home network\'s public\n IPv4 address range (over the Internet gateway). \n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>140</p>\n \n </td>\n \n <td>Custom TCP</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>32768-65535</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound return IPv4 traffic from the Internet (that is, for requests\n that originate in the subnet).\n </p>\n \n <p>This range is an example only. For more information about how to select the\n \t\t\t\t\t\t\t\tappropriate ephemeral port range, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-ephemeral-ports">Ephemeral Ports</a>.\n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>All traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n <td>\n \n <p>Denies all inbound IPv4 traffic not already handled by a preceding rule (not\n modifiable).\n </p>\n \n </td>\n \n </tr><tr style="background-color: #eeeeee;"><td colspan="7" align="left">\n <b>Outbound</b>\n \n </td>\n \n </tr><tr><td>\n <b>Rule #</b>\n \n </td>\n \n <td><b>Type</b></td>\n \n <td>\n <b>Protocol</b>\n \n </td>\n \n <td>\n <b>Port Range</b>\n \n </td>\n \n <td><b>Destination</b></td>\n \n <td>\n <b>Allow/Deny</b>\n \n </td>\n \n <td>\n <b>Comments</b>\n \n </td>\n \n </tr><tr><td>\n \n <p>100</p>\n \n </td>\n \n <td>HTTP</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>80</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows outbound IPv4 HTTP traffic from the subnet to the Internet.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>110</p>\n \n </td>\n \n <td>HTTPS</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>443</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows outbound IPv4 HTTPS traffic from the subnet to the Internet.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>120</p>\n \n </td>\n \n <td>Custom TCP</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>32768-65535</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows outbound IPv4 responses to clients on the Internet (for example,\n serving web pages to people visiting the web servers in the subnet).\n </p>\n \n <p>This range is an example only. For more information about how to select the\n \t\t\t\t\t\t\t\tappropriate ephemeral port range, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-ephemeral-ports">Ephemeral Ports</a>.\n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>All traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n <td>\n \n <p>Denies all outbound IPv4 traffic not already handled by a preceding rule (not\n modifiable).\n </p>\n \n </td>\n \n </tr></table></div></div><p>As a packet comes to the subnet, we evaluate it against the ingress rules of the ACL\n the\n subnet is associated with (starting at the top of the list of rules, and moving to\n the\n bottom). Here\'s how the evaluation goes if the packet is destined for the SSL port\n (443). The packet doesn\'t match the first rule evaluated (rule 100). It does match\n the\n second rule (110), which allows the packet into the subnet. If the packet had been\n destined for port 139 (NetBIOS), it doesn\'t match any of the rules, and the * rule\n ultimately denies the packet. \n </p><p>You might want to add a DENY rule in a situation where you legitimately need to open\n a\n wide range of ports, but there are certain ports within that range you want to deny.\n Just make\n sure to place the DENY rule earlier in the table than the rule that allows the wide\n range of\n port traffic.\n </p><div class="aws-note"><p class="aws-note">Important</p><p>With Elastic Load Balancing, if the subnet for your back-end instances has a network\n ACL in which you\'ve\n added a DENY rule for all traffic with a source of <code class="code">0.0.0.0/0</code> or the subnet\'s\n CIDR, then your load balancer can\'t carry out health checks on the instances. For\n more\n information about the recommended network ACL rules for your load balancers and back-end\n instances, see <a href="https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-security-groups.html#elb-vpc-nacl">Network ACLs for Load Balancers in a VPC</a> in the <em>User Guide for Classic Load Balancers</em>.\n </p></div><p>The following table shows the same example of a custom network ACL for a VPC that\n has an\n associated IPv6 CIDR block. This network ACL includes rules for all IPv6 HTTP and\n HTTPS\n traffic. In this case, new rules were inserted between the existing rules for IPv4\n traffic;\n however, you can also add the rules as higher number rules after the IPv4 rules. IPv4\n and IPv6\n traffic are separate; therefore, none of the rules for the IPv4 traffic apply to the\n IPv6\n traffic.\n </p><div class="table"><div class="table-contents"><table id="w120aac17c21c13c21"><tr style="background-color: #eeeeee;"><td colspan="7" align="left">\n <b>Inbound</b>\n \n </td>\n \n </tr><tr><td>\n <b>Rule #</b>\n \n </td>\n \n <td><b>Type</b></td>\n \n <td>\n <b>Protocol</b>\n \n </td>\n \n <td>\n <b>Port Range</b>\n \n </td>\n \n <td><b>Source</b>\n \n </td>\n \n <td>\n <b>Allow/Deny</b>\n \n </td>\n \n <td>\n <b>Comments</b>\n \n </td>\n \n </tr><tr><td>\n \n <p>100</p>\n \n </td>\n \n <td>HTTP</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>80</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound HTTP traffic from any IPv4 address.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>105</p>\n \n </td>\n \n <td>\n \n <p>HTTP</p>\n \n </td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>80</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound HTTP traffic from any IPv6 address.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>110</p>\n \n </td>\n \n <td>HTTPS</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>443</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound HTTPS traffic from any IPv4 address.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>115</p>\n \n </td>\n \n <td>\n \n <p>HTTPS</p>\n \n </td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>443</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound HTTPS traffic from any IPv6 address.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>120</p>\n \n </td>\n \n <td>SSH</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>22</p>\n \n </td>\n \n <td>192.0.2.0/24</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound SSH traffic from your home network\'s public IPv4 address range\n (over the Internet gateway).\n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>130</p>\n \n </td>\n \n <td>RDP</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>3389</p>\n \n </td>\n \n <td>192.0.2.0/24</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound RDP traffic to the web servers from your home network\'s public\n IPv4 address range (over the Internet gateway). \n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>140</p>\n \n </td>\n \n <td>Custom TCP</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>32768-65535</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows inbound return IPv4 traffic from the Internet (that is, for requests\n that originate in the subnet).\n </p>\n \n <p>This range is an example only. For more information about how to select the\n \t\t\t\t\t\t\t\tappropriate ephemeral port range, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-ephemeral-ports">Ephemeral Ports</a>.\n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>145</p>\n \n </td>\n \n <td>Custom TCP</td>\n \n <td>TCP</td>\n \n <td>32768-65535</td>\n \n <td>::/0</td>\n \n <td>ALLOW</td>\n \n <td>\n \n <p>Allows inbound return IPv6 traffic from the Internet (that is, for requests\n that originate in the subnet).\n </p>\n \n <p>This range is an example only. For more information about how to select the\n \t\t\t\t\t\t\t\tappropriate ephemeral port range, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-ephemeral-ports">Ephemeral Ports</a>.\n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>All traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n <td>\n \n <p>Denies all inbound IPv4 traffic not already handled by a preceding rule (not\n modifiable).\n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>\n \n <p>All traffic</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n <td>\n \n <p>Denies all inbound IPv6 traffic not already handled by a preceding rule (not\n modifiable).\n </p>\n \n </td>\n \n </tr><tr style="background-color: #eeeeee;"><td colspan="7" align="left">\n <b>Outbound</b>\n \n </td>\n \n </tr><tr><td>\n <b>Rule #</b>\n \n </td>\n \n <td><b>Type</b></td>\n \n <td>\n <b>Protocol</b>\n \n </td>\n \n <td>\n <b>Port Range</b>\n \n </td>\n \n <td><b>Destination</b></td>\n \n <td>\n <b>Allow/Deny</b>\n \n </td>\n \n <td>\n <b>Comments</b>\n \n </td>\n \n </tr><tr><td>\n \n <p>100</p>\n \n </td>\n \n <td>HTTP</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>80</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows outbound IPv4 HTTP traffic from the subnet to the Internet.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>105</p>\n \n </td>\n \n <td>\n \n <p>HTTP</p>\n \n </td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>80</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows outbound IPv6 HTTP traffic from the subnet to the Internet.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>110</p>\n \n </td>\n \n <td>HTTPS</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>443</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows outbound IPv4 HTTPS traffic from the subnet to the Internet.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>115</p>\n \n </td>\n \n <td>\n \n <p>HTTPS</p>\n \n </td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>443</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows outbound IPv6 HTTPS traffic from the subnet to the Internet.</p>\n \n </td>\n \n </tr><tr><td>\n \n <p>120</p>\n \n </td>\n \n <td>Custom TCP</td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>32768-65535</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows outbound IPv4 responses to clients on the Internet (for example,\n serving web pages to people visiting the web servers in the subnet).\n </p>\n \n <p>This range is an example only. For more information about how to select the\n \t\t\t\t\t\t\t\tappropriate ephemeral port range, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-ephemeral-ports">Ephemeral Ports</a>.\n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>125</p>\n \n </td>\n \n <td>\n \n <p>Custom TCP</p>\n \n </td>\n \n <td>\n \n <p>TCP</p>\n \n </td>\n \n <td>\n \n <p>32768-65535</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>ALLOW</p>\n \n </td>\n \n <td>\n \n <p>Allows outbound IPv6 responses to clients on the Internet (for example,\n serving web pages to people visiting the web servers in the subnet).\n </p>\n \n <p>This range is an example only. For more information about how to select the\n appropriate ephemeral port range, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-ephemeral-ports">Ephemeral Ports</a>.\n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>All traffic</td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>0.0.0.0/0</td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n <td>\n \n <p>Denies all outbound IPv4 traffic not already handled by a preceding rule (not\n modifiable).\n </p>\n \n </td>\n \n </tr><tr><td>\n \n <p>*</p>\n \n </td>\n \n <td>\n \n <p>All traffic</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>All</p>\n \n </td>\n \n <td>\n \n <p>::/0</p>\n \n </td>\n \n <td>\n \n <p>DENY</p>\n \n </td>\n \n <td>\n \n <p>Denies all outbound IPv6 traffic not already handled by a preceding rule (not\n modifiable).\n </p>\n \n </td>\n \n </tr></table></div></div><h2 id="nacl-ephemeral-ports">Ephemeral Ports</h2><p>The example network ACL in the preceding section uses an ephemeral port range of\n \t\t\t32768-65535. However, you might want to use a different range for your network\n ACLs\n \t\t\tdepending on the type of client that you\'re using or with which you\'re\n \t\t\tcommunicating.\n </p><p>The client that initiates the request chooses the ephemeral port range. The range\n varies\n depending on the client\'s operating system. Many Linux kernels (including the Amazon\n Linux kernel) use\n ports 32768-61000. Requests originating from Elastic Load Balancing use ports 1024-65535.\n Windows operating\n systems through Windows Server 2003 use ports 1025-5000. Windows Server 2008 and later\n versions use ports 49152-65535. A NAT gateway uses ports 1024-65535. For example,\n if a request\n comes into a web server in your VPC from a Windows XP client on the Internet, your\n network ACL\n must have an outbound rule to enable traffic destined for ports 1025-5000. \n </p><p>If an instance in your VPC is the client initiating a request, your network ACL must\n have\n an inbound rule to enable traffic destined for the ephemeral ports specific to the\n type of\n instance (Amazon Linux, Windows Server 2008, and so on). \n </p><p>In practice, to cover the different types of clients that might initiate traffic to\n public-facing instances in your VPC, you can open ephemeral ports 1024-65535. However,\n you can\n also add rules to the ACL to deny traffic on any malicious ports within that range.\n Ensure\n that you place the DENY rules earlier in the table than the ALLOW rules that open\n the wide\n range of ephemeral ports.\n </p><h2 id="nacl-tasks">Working with Network ACLs</h2><p>The following tasks show you how to work with network ACLs using the Amazon VPC console.</p><div class="highlights"><p><strong>Tasks</strong></p><ul><li><a href="#ACLSubnet">Determining Network ACL Associations</a></li>\n <li><a href="#CreateACL">Creating a Network ACL</a></li>\n <li><a href="#Rules">Adding and Deleting Rules</a></li>\n <li><a href="#NetworkACL">Associating a Subnet with a Network ACL</a></li>\n <li><a href="#DisassociateNetworkACL">Disassociating a Network ACL from a Subnet</a></li>\n <li><a href="#ChangeNetworkACL">Changing a Subnet\'s Network ACL</a></li>\n <li><a href="#DeleteNetworkACL">Deleting a Network ACL</a></li>\n </ul></div><h3 id="ACLSubnet">Determining Network ACL Associations</h3><p>You can use the Amazon VPC console to determine the network ACL that\'s associated\n with a\n subnet. Network ACLs can be associated with more than one subnet, so you can also\n determine\n the subnets that are associated with a network ACL.\n </p><p class="title"><b>To determine which network ACL is associated with a subnet</b></p><ol><li>\n <p>Open the Amazon VPC console at\n <a href="https://console.aws.amazon.com/vpc/" target="_blank">https://console.aws.amazon.com/vpc/</a>.\n </p>\n </li>\n <li>\n \n <p>In the navigation pane, choose <b>Subnets</b>, and then select the\n subnet.\n </p>\n \n <p>The network ACL associated with the subnet is included in the <b>Network\n ACL</b> tab, along with the network ACL\'s rules. \n </p>\n \n </li>\n </ol><p class="title"><b>To determine which subnets are associated with a network ACL</b></p><ol><li>\n \n <p>Open the Amazon VPC console at\n <a href="https://console.aws.amazon.com/vpc/" target="_blank">https://console.aws.amazon.com/vpc/</a>.\n </p>\n \n </li>\n <li>\n \n <p>In the navigation pane, choose <b>Network ACLs</b>. The\n <b>Associated With</b> column indicates the number of associated subnets\n for each network ACL.\n </p>\n \n </li>\n <li>\n \n <p>Select a network ACL.</p>\n \n </li>\n <li>\n \n <p>In the details pane, choose <b>Subnet Associations</b> to display the\n subnets associated with the network ACL.\n </p>\n \n </li>\n </ol><h3 id="CreateACL">Creating a Network ACL</h3><p>You can create a custom network ACL for your VPC. By default, a network ACL that you\n create blocks all inbound and outbound traffic until you add rules, and is not associated\n with a subnet until you explicitly associate it with one.\n </p><p class="title"><b>To create a network ACL</b></p><ol><li>\n \n <p>Open the Amazon VPC console at\n <a href="https://console.aws.amazon.com/vpc/" target="_blank">https://console.aws.amazon.com/vpc/</a>.\n </p>\n \n </li>\n <li>\n \n <p>In the navigation pane, choose <b>Network ACLs</b>.\n </p>\n \n </li>\n <li>\n \n <p>Choose <b>Create Network ACL</b>.\n </p>\n \n </li>\n <li>\n \n <p>In the <b>Create Network ACL</b> dialog box, optionally name your\n network ACL, and then select the ID of your VPC from the <b>VPC</b> list,\n and choose <b>Yes, Create</b>.\n </p>\n \n </li>\n </ol><h3 id="Rules">Adding and Deleting Rules</h3><p>When you add or delete a rule from an ACL, any subnets associated with the ACL are\n subject to the change. You don\'t have to terminate and relaunch the instances in the\n subnet;\n the changes take effect after a short period. \n </p><p>If you\'re using the Amazon EC2 API or a command line tool, you can\'t modify rules;\n you\n can only add and delete rules. If you\'re using the Amazon VPC console, you can modify\n the entries\n for existing rules (the console removes the rule and adds a new rule for you). If\n you need\n to change the order of a rule in the ACL, you must add a new rule with the new rule\n number,\n and then delete the original rule.\n </p><p class="title"><b>To add rules to a network ACL</b></p><ol><li>\n <p>Open the Amazon VPC console at\n <a href="https://console.aws.amazon.com/vpc/" target="_blank">https://console.aws.amazon.com/vpc/</a>.\n </p>\n </li>\n <li>\n \n <p>In the navigation pane, choose <b>Network ACLs</b>.\n </p>\n \n </li>\n <li>\n \n <p>In the details pane, choose either the <b>Inbound Rules</b> or\n <b>Outbound Rules</b> tab, depending on the type of rule that you need\n to add, and then choose <b>Edit</b>.\n </p>\n \n </li>\n <li>\n \t\t\n <p>In <b>Rule #</b>, enter a rule number (for example, 100). The rule\n \t\t\tnumber must not already be used in the network ACL. We process the rules in order,\n \t\t\tstarting with the lowest number.\n </p>\n \t\t\n <div class="aws-note"><p class="aws-note">Tip</p><p>We recommend that you leave gaps between the rule numbers (such as 100, 200, 300),\n rather than using sequential numbers (101, 102, 103). This makes it easier add a new\n rule without having to renumber the existing rules.\n </p></div>\n \t\n </li>\n <li>\n \n <p>Select a rule from the <b>Type</b> list. For example, to add a rule\n for HTTP, choose <b>HTTP</b>. To add a rule to allow all TCP traffic,\n choose <b>All TCP</b>. For some of these options (for example, HTTP), we\n fill in the port for you. To use a protocol that\'s not listed, choose <b>Custom\n Protocol Rule</b>.\n </p>\n \n </li>\n <li>\n \n <p>(Optional) If you\'re creating a custom protocol rule, select the protocol\'s\n number and name from the <b>Protocol</b> list. For more\n information, see <a href="http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml" target="_blank">IANA\n List of Protocol Numbers</a>.\n </p>\n \n </li>\n <li>\n \n <p>(Optional) If the protocol you\'ve selected requires a port number, enter the port\n number or\n port range separated by a hyphen (for example, 49152-65535). \n </p>\n \n </li>\n <li>\n \n <p>In the <b>Source</b> or <b>Destination</b> field\n (depending on whether this is an inbound or outbound rule), enter the CIDR range that\n the rule applies to.\n </p>\n \n </li>\n <li>\n \n <p>From the <b>Allow/Deny</b> list, select <b>ALLOW</b> to\n allow the specified traffic or <b>DENY</b> to deny the specified\n traffic.\n </p>\n \n </li>\n <li>\n \t\t\n <p>(Optional) To add another rule, choose <b>Add another rule</b>, and\n repeat steps 4 to 9 as required. \n </p>\n \t\n </li>\n <li>\n \n <p>When you are done, choose <b>Save</b>.\n </p>\n \n </li>\n </ol><p class="title"><b>To delete a rule from a network ACL</b></p><ol><li>\n <p>Open the Amazon VPC console at\n <a href="https://console.aws.amazon.com/vpc/" target="_blank">https://console.aws.amazon.com/vpc/</a>.\n </p>\n </li>\n <li>\n \n <p>In the navigation pane, choose <b>Network ACLs</b>, and then select\n the network ACL.\n </p>\n \n </li>\n <li>\n \n <p>In the details pane, select either the <b>Inbound Rules</b> or\n <b>Outbound Rules</b> tab, and then choose <b>Edit</b>.\n Choose <b>Remove</b> for the rule you want to delete, and then choose\n <b>Save</b>.\n </p>\n \n </li>\n </ol><h3 id="NetworkACL">Associating a Subnet with a Network ACL</h3><p>To apply the rules of a network ACL to a particular subnet, you must associate the\n subnet\n with the network ACL. You can associate a network ACL with multiple subnets; however,\n a subnet can be\n associated with only one network ACL. Any subnet not associated with a particular\n ACL is associated\n with the default network ACL by default.\n </p><p class="title"><b>To associate a subnet with a network ACL</b></p><ol><li>\n <p>Open the Amazon VPC console at\n <a href="https://console.aws.amazon.com/vpc/" target="_blank">https://console.aws.amazon.com/vpc/</a>.\n </p>\n </li>\n <li>\n \n <p>In the navigation pane, choose <b>Network ACLs</b>, and then select\n the network ACL.\n </p>\n \n </li>\n <li>\n \n <p>In the details pane, on the <b>Subnet Associations</b> tab, choose\n <b>Edit</b>. Select the <b>Associate</b> check box for the\n subnet to associate with the network ACL, and then choose\n <b>Save</b>.\n </p>\n \n </li>\n </ol><h3 id="DisassociateNetworkACL">Disassociating a Network ACL from a Subnet</h3><p>You can disassociate a custom network ACL from a subnet — by doing so, the subnet\n is then automatically associated with the default network ACL.\n </p><p class="title"><b>To disassociate a subnet from a network ACL</b></p><ol><li>\n <p>Open the Amazon VPC console at\n <a href="https://console.aws.amazon.com/vpc/" target="_blank">https://console.aws.amazon.com/vpc/</a>.\n </p>\n </li>\n <li>\n \n <p>In the navigation pane, choose <b>Network ACLs</b>, and then select\n the network ACL.\n </p>\n \n </li>\n <li>\n \n <p>In the details pane, choose the <b>Subnet Associations</b> tab.\n </p>\n \n </li>\n <li>\n \n <p>Choose <b>Edit</b>, and then deselect the\n <b>Associate</b> check box for the subnet. Choose\n <b>Save</b>.\n </p>\n \n </li>\n </ol><h3 id="ChangeNetworkACL">Changing a Subnet\'s Network ACL</h3><p>You can change the network ACL that\'s associated with a subnet. For example, when\n you\n create a subnet, it is initially associated with the default network ACL. You might\n want to\n instead associate it with a custom network ACL that you\'ve created.\n </p><p>After changing a subnet\'s network ACL, you don\'t have to terminate and relaunch the\n instances in\n the subnet; the changes take effect after a short period. \n </p><p class="title"><b>To change a subnet\'s network ACL association</b></p><ol><li>\n <p>Open the Amazon VPC console at\n <a href="https://console.aws.amazon.com/vpc/" target="_blank">https://console.aws.amazon.com/vpc/</a>.\n </p>\n </li>\n <li>\n \n <p>In the navigation pane, choose <b>Subnets</b>, and then select the\n subnet.\n </p>\n \n </li>\n <li>\n \n <p>Choose the <b>Network ACL</b> tab, and then choose\n <b>Edit</b>.\n </p>\n \n </li>\n <li>\n \n <p>Select the network ACL to associate the subnet with from the <b>Change\n to</b> list, and then choose <b>Save</b>.\n </p>\n \n \n </li>\n </ol><h3 id="DeleteNetworkACL">Deleting a Network ACL</h3><p>You can delete a network ACL only if there are no subnets associated with it. You\n can\'t\n delete the default network ACL.\n </p><p class="title"><b>To delete a network ACL</b></p><ol><li>\n \n <p>Open the Amazon VPC console at\n <a href="https://console.aws.amazon.com/vpc/" target="_blank">https://console.aws.amazon.com/vpc/</a>.\n </p>\n \n </li>\n <li>\n \n <p>In the navigation pane, choose <b>Network ACLs</b>.\n </p>\n \n </li>\n <li>\n \n <p>Select the network ACL, and then choose <b>Delete</b>.\n </p>\n \n </li>\n <li>\n \n <p>In the confirmation dialog box, choose <b>Yes, Delete</b>.\n </p>\n \n </li>\n </ol><h2 id="nacl-examples">Example: Controlling Access to Instances in a Subnet</h2><p>In this example, instances in your subnet can communicate with each other, and are\n accessible from a trusted remote computer. The remote computer may be a computer in\n your local\n network or an instance in a different subnet or VPC that you use to connect to your\n instances\n to perform administrative tasks. Your security group rules and network ACL rules allow\n access\n from the IP address of your remote computer (172.31.1.2/32). All other traffic from\n the\n Internet or other networks is denied.\n </p><div class="mediaobject"><img src="https://docs.aws.amazon.com/vpc/latest/userguide/images/nacl-example-diagram.png" alt=" Using a security group and an NACL " /></div><p>All instances use the same security group (sg-1a2b3c4d), with the following rules.</p><div class="table"><p></p><table id="w120aac17c21c19b9"><tr><td colspan="5"><b>Inbound\n Rules</b></td>\n \n </tr><tr><td><b>Protocol Type</b></td>\n \n <td><b>Protocol</b></td>\n \n <td><b>Port Range</b></td>\n \n <td><b>Source</b></td>\n \n <td><b>Comments</b></td>\n \n </tr><tr><td>All traffic</td>\n \n <td>All</td>\n \n <td>All</td>\n \n <td>sg-1a2b3c4d</td>\n \n <td>Enables instances associated with the same security group to communicate with\n each other.\n </td>\n \n </tr><tr><td>SSH</td>\n \n <td>TCP</td>\n \n <td>22</td>\n \n <td>172.31.1.2/32</td>\n \n <td>Allows inbound SSH access from the remote computer. If the instance is a Windows\n computer, then this rule must use the RDP protocol for port 3389 instead.\n </td>\n \n </tr><tr><td colspan="5"><b>Outbound\n Rules</b></td>\n \n </tr><tr><td><b>Protocol Type</b></td>\n \n <td><b>Protocol</b></td>\n \n <td><b>Port Range</b></td>\n \n <td><b>Destination</b></td>\n \n <td><b>Comments</b></td>\n \n </tr><tr><td>All traffic</td>\n \n <td>All</td>\n \n <td>All</td>\n \n <td>sg-1a2b3c4d</td>\n \n <td>Enables instances associated with the same security group to communicate with\n each other.\n </td>\n \n </tr></table></div><p>The subnet is associated with a network ACL that has the following rules.</p><div class="table"><p></p><table id="w120aac17c21c19c13"><tr><td colspan="7"><b>Inbound\n Rules</b></td>\n \n </tr><tr><td><b>Rule #</b></td>\n \n <td><b>Type</b></td>\n \n <td><b>Protocol</b></td>\n \n <td><b>Port Range</b></td>\n \n <td><b>Source</b></td>\n \n <td><b>Allow/Deny</b></td>\n \n <td><b>Comments</b></td>\n \n </tr><tr><td>100</td>\n \n <td>SSH</td>\n \n <td>TCP</td>\n \n <td>22</td>\n \n <td>172.31.1.2/32</td>\n \n <td>ALLOW</td>\n \n <td>Allows inbound traffic from the remote computer. If the instance is a Windows\n computer, then this rule must use the RDP protocol for port 3389 instead.\n </td>\n \n </tr><tr><td>*</td>\n \n <td>All traffic</td>\n \n <td>All</td>\n \n <td>All</td>\n \n <td>0.0.0.0/0</td>\n \n <td>DENY</td>\n \n <td>Denies all other inbound traffic that does not match the previous rule.</td>\n \n </tr><tr><td colspan="7"><b>Outbound\n Rules</b></td>\n \n </tr><tr><td><b>Rule #</b></td>\n \n <td><b>Type</b></td>\n \n <td><b>Protocol</b></td>\n \n <td><b>Port Range</b></td>\n \n <td><b>Destination</b></td>\n \n <td><b>Allow/Deny</b></td>\n \n <td><b>Comments</b></td>\n \n </tr><tr><td>100</td>\n \n <td>Custom TCP</td>\n \n <td>TCP</td>\n \n <td>1024-65535</td>\n \n <td>172.31.1.2/32</td>\n \n <td>ALLOW</td>\n \n <td>Allows outbound responses to the remote computer. Network ACLs are stateless,\n therefore this rule is required to allow response traffic for inbound\n requests.\n </td>\n \n </tr><tr><td>*</td>\n \n <td>All traffic</td>\n \n <td>All</td>\n \n <td>All</td>\n \n <td>0.0.0.0/0</td>\n \n <td>DENY</td>\n \n <td>Denies all other outbound traffic that does not match the previous rule.</td>\n \n </tr></table></div><p>This scenario gives you the flexibility to change the security groups or security\n group\n rules for your instances, and have the network ACL as the backup layer of defense.\n The network\n ACL rules apply to all instances in the subnet, so if you accidentally make your security\n group rules too permissive, the network ACL rules continue to permit access only from\n the\n single IP address. For example, the following rules are more permissive than the earlier\n rules\n — they allow inbound SSH access from any IP address. \n </p><div class="table"><p></p><table id="w120aac17c21c19c17"><tr><td colspan="5"><b>Inbound\n Rules</b></td>\n \n </tr><tr><td><b>Type</b></td>\n \n <td><b>Protocol</b></td>\n \n <td><b>Port Range</b></td>\n \n <td><b>Source</b></td>\n \n <td><b>Comments</b></td>\n \n </tr><tr><td>All traffic</td>\n \n <td>All</td>\n \n <td>All</td>\n \n <td>sg-1a2b3c4d</td>\n \n <td>Enables instances associated with the same security group to communicate with\n each other.\n </td>\n \n </tr><tr><td>SSH</td>\n \n <td>TCP</td>\n \n <td>22</td>\n \n <td>0.0.0.0/0</td>\n \n <td>Allows SSH access from any IP address.</td>\n \n </tr><tr><td colspan="5"><b>Outbound\n Rules</b></td>\n \n </tr><tr><td><b>Type</b></td>\n \n <td><b>Protocol</b></td>\n \n <td><b>Port Range</b></td>\n \n <td><b>Destination</b></td>\n \n <td><b>Comments</b></td>\n \n </tr><tr><td>All traffic</td>\n \n <td>All</td>\n \n <td>All</td>\n \n <td>0.0.0.0/0</td>\n \n <td>Allows all outbound traffic.</td>\n \n </tr></table></div><p>However, only other instances within the subnet and your remote computer are able\n to\n access this instance. The network ACL rules still prevent all inbound traffic to the\n subnet\n except from your remote computer.\n </p><h2 id="nacl-api-cli">API and Command Overview</h2><p>You can perform the tasks described on this page using the command line or an API.\n \n For more information about the command line interfaces and a list of available APIs,\n see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html#VPCInterfaces">Accessing Amazon VPC</a>.\n </p><div class="itemizedlist"><p class="title"><b>Create a network ACL for your VPC</b></p></div><div class="itemizedlist"><p class="title"><b>Describe one or more of your network ACLs</b></p></div><div class="itemizedlist"><p class="title"><b>Add a rule to a network ACL</b></p></div><div class="itemizedlist"><p class="title"><b>Delete a rule from a network ACL</b></p></div><div class="itemizedlist"><p class="title"><b>Replace an existing rule in a network ACL</b></p></div><div class="itemizedlist"><p class="title"><b>Replace a network ACL association</b></p></div><div class="itemizedlist"><p class="title"><b>Delete a network ACL</b></p></div>'},)
({'is_archived': 1, 'is_starred': 0, 'user_name': 'graphroot', 'user_email': '[email protected]', 'user_id': 1, 'is_public': False, 'id': '3', 'title': 'Large Graph Loading Best Practices: Tactics (Part 2)', 'url': 'https://www.datastax.com/dev/blog/large-graph-loading-tactics-part-2', 'content_text': 'The previous post introduced DSE Graph and summarized some key considerations related to dealing with large graphs. This post aims to: describe the tooling available to load large data sets to DSE Graph point out tips, tricks, and key learnings for bulk loading with DSE Graph Loader provide code samples to simplify your bulk loading process into DSE Graph Tooling DSE Graph Loader (DGL) is a powerful tool for loading graph data into DSE Graph. As shown in the marchitecture diagram below, the DGL supports multiple data input sources for bulk loading and provides high flexibility for manipulating data on ingest by requiring custom groovy data mapping scripts to map source data to graph objects. See the DataStax docs which cover the DGL, it\'s API, and DGL mapping scripts in detail. This article breaks down the tactics for efficient data loading with DGL into the following areas: file processing best practices mapping script best practices DGL configuration Code and Tactics Code to accompany this section can be found at: https://github.com/phact/rundgl Shout out to Daniel Kuppitz, Pierre Laporte, Caroline George, Ulisses Beresi, Bryn Cooke among others who helped create and refine this framework. Any bugs / mistakes are mine. The code repository consists of: a wrapper bash script that is used for bookkeeping and calling DGL a mapping script whith some helpful utilities and * a generic structure that can be used as a starting point for your own custom mapping scripts a set of analysis scripts that can be used to monitor your load The rest of this article will be focused on DGL loading best practices linking to specific code in the repo for clarity. File Bucketing The main consideration to take when loading large data volumes is that DGL performance will suffer if fed too much data in a single run. At the time of this article (2/28/2017), the DGL has features designed for non-idempotent graphs (including deduplication of vertices via an internal vertex cache) that limit its performance with large idempotent graphs. Splitting your loading files into chunks of about ~120Million or fewer vertices will ensure that the DGL does not lock up when the vertex cache is saturated. UPDATE: In modern versions of the graph loader, custom vertices are no longer cached. This means there should not be a performance impact of large files for this kind of load. Chunking may still be useful for percentage tracking / restarting / etc. The rundgl script found in the repo is designed to traverse a directory and bucket files, feeding them to DGL a bucket at a time to maximize performance. Track your progress The analysis directory in the rundgl repo contains a script called chart. This script will aggregate statistics from the DGL loader.log and generate throughput statistics and charts for the different loading phases that have occurred (Vertices, Edges, and Properties). Note - these scripts have only been tested with DGL < 5.0.6 Navigate to the analysis directory and run ./charts to get a dump of the throughput for your job: It will also start a simple http server in the directory for easy access to the png charts it generates, here is an example chart output: Thank you Pierre for building and sharing the analysis scripts Monitor DGL errors When the DGL gets timeouts from the server it does not log them to STDOUT, they can only be seen in logger.log. In a busy system, it is normal to see timeouts. These timeouts will be handled by retry policies which are baked into the loader. Too many timeouts may be a sign that you are overwhelming your cluster and need to either slow down (reduce threads in the loader) or scale out (add nodes in DSE). You will know if timeouts are affecting your cluster if your overall throughput starts trending down or if you are seeing backed up threadpools or dropped mutations in OpsCenter. Aside from Timeouts, you may also see errors in the DGL log that are caused by bad data or bugs in your mapping script. If enough of these errors happen the job will stop. To avoid having to restart from the beginning on data related issues, take a look at the bookeeping section below. Don\'t use S3 If you are looking to load significant amounts of data, do not use S3 as a source for performance reasons. It will take less time to parallel rsync your data from s3 to a local SSD and then load it than to load directly from s3. DGL does have S3 hooks and from a functionality perspective it works quite well (including aws authentication) so if you are not in a hurry, the repo also includes an example for pulling data from S3. Just be aware of the performance overhead. Groovy mapper best practices Custom groovy mapping scripts can be error prone and the DGL\'s error messages sometimes leave a bit to be desired. The framework provided aims to simplify the loading process by providing a standard framework for all your mapping scripts and minimizing the amount of logic that goes into the mapping scripts. Use the logger DGL mapping scripts can use the log4j logger to log messages. This can be very useful when troubleshooting issues in a load, especially issues that only show up at runtime with a particular file. It also allows you to track when particular loading events occur during execution. INFO, WARN, and ERROR messages will be logged to logger.log and will include a timestamp. DGL takes arguments If you need to pass an argument to the groovy mapper just pass it with - <argname> in the command line. The variable argname will be available in your mapping script. For example, ./rundgl passes -inputfilename to DGL here leveraging this feature. You can see the mapping script use it here . The argument inputfilename is a list of files to process to the DGL. This helps us avoid having to do complex directory traversals in the mapping script itself. By traversing files in the wrapper script, we are also able to do some bookeeping. Bookeeping loadedfiles.txt tracks the start and end of your job as well as the list of files that were loaded and when each particular load completed. This also enables us to "resume" progress by modifying the STARTBUCKET . STARTBUCKET represents the first bucket that will be processed by ./rundgl , if you stopped your job and want to continue where you left off, count the number of files in loadedfiles.txt and divide by the BUCKETSIZE , this will give you the bucket you were on. Starting from that bucket will ensure you don\'t miss any files. Since we are working with idempotent graphs, we don\'t have to worry about duplicates etc. DGL Vertex Cache Temp Directory Especially when using EBS, make sure to move the default directory of the DGL Vertex Cache temp directory. IO contention against the mapdb files used by DGL for its internal vertex cache will overwhelm amazon instances\' root EBS partitions Djava.io.tmpdir=/data/tmp If you are working on a graph schema that uses DSE Search indexes, you can optimize for overall load + indexing time by loading the data without the search indexes first and then creating the indexes once the data is in the system. Some screenshots Here are some screenshots from a system using this method to load billons of vertices. The spikes are each run of the DGL kicked off in sequence by the rundgl mapping script. You can see the load and performance are steady throughout the load giving us dependable throughput. Like with other DSE workloads, if you need more speed, scale out! Throughput: OS Load: Conclusion With the tooling, code, and tactics in this article you should be ready to load billions of V\'s, E\'s, and P\'s into DSE graph. The ./rundgl repo is there to help with error handling, logging, bookeeping, and file bucketing so that your loading experience is smooth. Enjoy! DataStax has many ways for you to advance in your career and knowledge. You can take free classes , get certified , or read one of our many white papers . register for classes get certified DBA\'s Guide to NoSQL Subscribe for newsletter:', 'created_at': '2017-05-08T14:13:36Z', 'updated_at': '2018-07-20T01:13:45Z', 'published_at': '2017-03-14T13:58:32Z', 'mimetype': 'text/html', 'language': 'en_US', 'reading_time': 6, 'domain_name': 'www.datastax.com', 'preview_picture': 'https://www.datastax.com/wp-content/uploads/2017/06/dgl.png', 'http_status': 200, '_links': ['/api/entries/3'], 'content': '<section class="post-content">The<a href="https://www.datastax.com/dev/blog/large-graph-loading-best-practices-strategies-part-1">previous post</a>introduced DSE Graph and summarized some key considerations related to dealing with large graphs. This post aims to:<ol><li>describe the tooling available to load large data sets to DSE Graph</li>\n<li>point out tips, tricks, and key learnings for bulk loading with DSE Graph Loader</li>\n<li>provide code samples to simplify your bulk loading process into DSE Graph</li>\n</ol><h3 id="tooling">Tooling</h3><p>DSE Graph Loader (DGL) is a powerful tool for loading graph data into DSE Graph. As shown in the marchitecture diagram below, the DGL supports multiple data input sources for bulk loading and provides high flexibility for manipulating data on ingest by requiring custom groovy data mapping scripts to map source data to graph objects. See the <a href="http://docs.datastax.com/en/latest-dse/datastax_enterprise/graph/dgl/graphloaderTOC.html">DataStax docs</a> which cover the DGL, it\'s API, and DGL mapping scripts in detail.</p><p><img src="https://www.datastax.com/wp-content/uploads/2017/06/dgl.png" alt="landscape" /></p><p>This article breaks down the tactics for efficient data loading with DGL into the following areas:</p><ul><li>file processing best practices</li>\n<li>mapping script best practices</li>\n<li>DGL configuration</li>\n</ul><h3 id="codeandtactics">Code and Tactics</h3><p>Code to accompany this section can be found at:</p><p><a href="https://github.com/phact/rundgl">https://github.com/phact/rundgl</a></p><p><em>Shout out to Daniel Kuppitz, Pierre Laporte, Caroline George, Ulisses Beresi, Bryn Cooke among others who helped create and refine this framework. Any bugs / mistakes are mine.</em></p><p>The code repository consists of:</p><ul><li>a wrapper bash script that is used for bookkeeping and calling DGL</li>\n<li>a mapping script whith some helpful utilities and * a generic structure that can be used as a starting point for your own custom mapping scripts</li>\n<li>a set of analysis scripts that can be used to monitor your load</li>\n</ul><p>The rest of this article will be focused on DGL loading best practices linking to specific code in the repo for clarity.</p><h4 id="filebucketing">File Bucketing</h4><p>The main consideration to take when loading large data volumes is that DGL performance will suffer if fed too much data in a single run. At the time of this article (2/28/2017), the DGL has features designed for non-idempotent graphs (including deduplication of vertices via an internal vertex cache) that limit its performance with large idempotent graphs.</p><p>Splitting your loading files into chunks of about ~120Million or fewer vertices will ensure that the DGL does not lock up when the vertex cache is saturated.</p></section><p><strong>UPDATE:</strong> In modern versions of the graph loader, custom vertices are no longer cached. This means there should not be a performance impact of large files for this kind of load. Chunking may still be useful for percentage tracking / restarting / etc.</p><section class="post-content">The rundgl script found in the repo is designed to traverse a directory and bucket files, feeding them to DGL a bucket at a time to maximize performance.<h4 id="trackyourprogress">Track your progress</h4><p>The analysis directory in the rundgl repo contains a script called chart. This script will aggregate statistics from the DGL loader.log and generate throughput statistics and charts for the different loading phases that have occurred (Vertices, Edges, and Properties).</p><p><strong><em>Note</em></strong><em>- these scripts have only been tested with DGL < 5.0.6</em></p><p>Navigate to the analysis directory and run <code>./charts</code> to get a dump of the throughput for your job:</p><p><img src="https://www.datastax.com/wp-content/uploads/2017/06/dgl_results.png" alt="analysis" /></p><p>It will also start a simple http server in the directory for easy access to the png charts it generates, here is an example chart output:</p><p><img src="https://www.datastax.com/wp-content/uploads/2017/06/total-throughput.png" alt="total throughput" /></p><p><em>Thank you Pierre for building and sharing the analysis scripts</em></p><h4 id="monitordglerrors">Monitor DGL errors</h4><p>When the DGL gets timeouts from the server it does not log them to STDOUT, they can only be seen in logger.log. In a busy system, it is normal to see timeouts. These timeouts will be handled by retry policies which are baked into the loader. Too many timeouts may be a sign that you are overwhelming your cluster and need to either slow down (reduce threads in the loader) or scale out (add nodes in DSE). You will know if timeouts are affecting your cluster if your overall throughput starts trending down or if you are seeing backed up threadpools or dropped mutations in OpsCenter.</p><p>Aside from Timeouts, you may also see errors in the DGL log that are caused by bad data or bugs in your mapping script. If enough of these errors happen the job will stop. To avoid having to restart from the beginning on data related issues, take a look at the bookeeping section below.</p><h4 id="dontuses3">Don\'t use S3</h4><p>If you are looking to load significant amounts of data, do not use S3 as a source for performance reasons. It will take less time to parallel rsync your data from s3 to a local SSD and then load it than to load directly from s3.</p><p>DGL does have S3 hooks and from a functionality perspective it works quite well (including aws authentication) so if you are not in a hurry, the repo also includes an example for pulling data from S3. Just be aware of the performance overhead.</p><h4 id="groovymapperbestpractices">Groovy mapper best practices</h4><p>Custom groovy mapping scripts can be error prone and the DGL\'s error messages sometimes leave a bit to be desired. The framework provided aims to simplify the loading process by providing a standard framework for all your mapping scripts and minimizing the amount of logic that goes into the mapping scripts.</p><h4 id="usethelogger">Use the logger</h4><p>DGL mapping scripts can use the log4j logger to log messages. This can be very useful when troubleshooting issues in a load, especially issues that only show up at runtime with a particular file.</p><p>It also allows you to track when particular loading events occur during execution.</p><p>INFO, WARN, and ERROR messages will be logged to logger.log and will include a timestamp.</p><h4 id="dgltakesarguments">DGL takes arguments</h4><p>If you need to pass an argument to the groovy mapper just pass it with <code>- <argname></code> in the command line.<br />The variable argname will be available in your mapping script.</p><p>For example, ./rundgl passes <code>-inputfilename</code> to DGL <a href="https://github.com/phact/rundgl/commit/6d008c86e98403c001c4164fcd8772ee9c2fa9bd#diff-ee4a3dcdb94cf3b56f6b0f191b4d4fd9R51">here</a> leveraging this feature. You can see the mapping script use it <a href="https://github.com/phact/rundgl/commit/6d008c86e98403c001c4164fcd8772ee9c2fa9bd#diff-46c8d2f865ad43987bc511d246a4b159R101">here</a>.</p><p>The argument <code>inputfilename</code> is a list of files to process to the DGL. This helps us avoid having to do complex directory traversals in the mapping script itself.</p><p>By traversing files in the wrapper script, we are also able to do some bookeeping.</p><h4 id="bookeeping">Bookeeping</h4><p><code>loadedfiles.txt</code> tracks the start and end of your job as well as the list of files that were loaded and when each particular load completed. This also enables us to "resume" progress by modifying the <code>STARTBUCKET</code>.</p><p><code>STARTBUCKET</code> represents the first bucket that will be processed by <code>./rundgl</code>, if you stopped your job and want to continue where you left off, count the number of files in <code>loadedfiles.txt</code> and divide by the <code>BUCKETSIZE</code>, this will give you the bucket you were on. Starting from that bucket will ensure you don\'t miss any files. Since we are working with idempotent graphs, we don\'t have to worry about duplicates etc.</p><h4 id="dglvertexcachetempdirectory">DGL Vertex Cache Temp Directory</h4><p>Especially when using EBS, make sure to move the default directory of the DGL Vertex Cache temp directory.</p><p>IO contention against the mapdb files used by DGL for its internal vertex cache will overwhelm amazon instances\' root EBS partitions</p><p><code>Djava.io.tmpdir=/data/tmp</code></p><p>If you are working on a graph schema that uses DSE Search indexes, you can optimize for overall load + indexing time by loading the data without the search indexes first and then creating the indexes once the data is in the system.</p><h3 id="somescreenshots">Some screenshots</h3><p>Here are some screenshots from a system using this method to load billons of vertices. The spikes are each run of the DGL kicked off in sequence by the rundgl mapping script. You can see the load and performance are steady throughout the load giving us dependable throughput.<br />Like with other DSE workloads, if you need more speed, scale out!</p><h4 id="throughput">Throughput:</h4><p><img src="https://www.datastax.com/wp-content/uploads/2017/06/long_throughput.png" alt="throughput" /></p><h4 id="osload">OS Load:</h4><p><img src="https://www.datastax.com/wp-content/uploads/2017/06/os-load.png" alt="osload" /></p><h3 id="conclusion">Conclusion</h3><p>With the tooling, code, and tactics in this article you should be ready to load billions of V\'s, E\'s, and P\'s into DSE graph. The <code>./rundgl</code> repo is there to help with error handling, logging, bookeeping, and file bucketing so that your loading experience is smooth. Enjoy!</p></section><hr /><p><a href="https://www.datastax.com/">DataStax</a> has many ways for you to advance in your career and knowledge. \n</p><p>You can take <a href="https://academy.datastax.com/user/register?destination=home&utm_campaign=DevBlog&utm_medium=blog&utm_source=devblog&utm_term=DevBlogPosts_CTA1_DSA_register" target="_self" title="academy.datastax.com">free classes</a>, <a href="https://academy.datastax.com/certifications?utm_campaign=DevBlog&utm_medium=blog&utm_source=devblog&utm_term=DevBlogPosts_CTA1_DSA_certifications" target="_self" title="academy.datastax.com/certifications">get certified</a>, or read <a href="https://www.datastax.com/dbas-guide-to-nosql" target="_self" title="dbas-guide-to-nosql">one of our many white papers</a>.\n</p><p><a href="https://academy.datastax.com/user/register?destination=home&utm_campaign=DevBlog&utm_medium=blog&utm_source=devblog&utm_term=DevBlogPosts_CTA1_DSA_register" target="_self" class="dxAllButtons_v3Rad2_whiteNGrayOL" title="academy.datastax.com">register for classes</a>\n</p><p><a href="https://academy.datastax.com/certifications?utm_campaign=DevBlog&utm_medium=blog&utm_source=devblog&utm_term=DevBlogPosts_CTA1_DSA_certifications" target="_self" class="dxAllButtons_v3Rad2_whiteNGrayOL" title="academy.datastax.com/certifications">get certified</a>\n</p><p><a href="http://www.datastax.com/dbas-guide-to-nosql?utm_campaign=DevBlog&utm_medium=blog&utm_source=devblog&utm_term=DevBlogPosts_CTA1_dbasguidetonosql" target="_self" class="dxAllButtons_v3Rad2_whiteNGrayOL" title="dbas-guide-to-nosql">DBA\'s Guide to NoSQL</a>\n</p><br class="clear" /><div id="mto_newsletter_121316_Css"><p>Subscribe for newsletter:</p><br /></div>'},)
({'is_archived': 1, 'is_starred': 0, 'user_name': 'graphroot', 'user_email': '[email protected]', 'user_id': 1, 'is_public': False, 'id': '2', 'title': 'The DataStax Partner Network', 'url': 'https://github.com/DSPN', 'content_text': ' azure-resource-manager-dse Azure Resource Manager templates for DataStax Enterprise Python azure-deployment-guide DataStax Enterprise (DSE) Deployment Guide for Azure google-deployment-guide DataStax Enterprise (DSE) Deployment Guide for Google Cloud Platform (GCP) amazon-deployment-guide DataStax Enterprise (DSE) Deployment Guide for Amazon Web Services (AWS) azure-resource-manager-dse Azure Resource Manager templates for DataStax Enterprise Python 13 38 UpdatedJun 22, 2018 google-compute-engine-dse Google Deployment Manager scripts for deploying DataStax Enterprise (DSE) on Google Compute Engine (GCE) Python 10 10 Apache-2.0\n \n UpdatedJun 17, 2018 oracle-bmc-terraform-dse Oracle Bare Metal Cloud Services Terraform-based provisioning HCL 1 2 Apache-2.0\n \n UpdatedJun 14, 2018 install-datastax-redhat bash scripts to install and configure DataStax Enterprise (DSE) and OpsCenter on RedHat Shell 3 3 UpdatedJun 13, 2018 install-datastax-ubuntu bash scripts to install and configure DataStax Enterprise (DSE) and OpsCenter on Ubuntu Python 3 16 UpdatedJun 10, 2018 google-container-engine-dse Scripts for deploying DataStax Enterprise (DSE) on Google Kubernetes Engine (GKE) 15 16 Apache-2.0\n \n UpdatedMay 22, 2018 azure-deployment-guide DataStax Enterprise (DSE) Deployment Guide for Azure 9 5 Apache-2.0\n \n UpdatedMay 1, 2018 oracle-jumpstart HCL 1 Apache-2.0\n \n UpdatedJan 29, 2018 google-deployment-guide DataStax Enterprise (DSE) Deployment Guide for Google Cloud Platform (GCP) 6 5 Apache-2.0\n \n UpdatedNov 14, 2017 amazon-deployment-guide DataStax Enterprise (DSE) Deployment Guide for Amazon Web Services (AWS) 9 2 Apache-2.0\n \n UpdatedNov 2, 2017 oracle-public-cloud-dse Scripts for deploying DataStax Enterprise (DSE) to Oracle Public Cloud (OPC) Python 2 Apache-2.0\n \n UpdatedAug 28, 2017 oracle-deployment-guide DataStax Enterprise (DSE) Deployment Guide for Oracle Cloud Offerings Shell 1 Apache-2.0\n \n UpdatedJul 20, 2017 docs-partners-template Forked from pivotal-cf/docs-partners-template HTML 10 UpdatedApr 26, 2017 oracle-bare-metal-cloud-dse Scripts to deploy DSE to Oracle Bare Metal Cloud Ruby 1 1 Apache-2.0\n \n UpdatedMar 8, 2017 DataStaxDay Hands on instructions for DataStax Labs during Microsoft Events and Test Drives HTML 46 Apache-2.0\n \n UpdatedJan 11, 2017 partners Selected links to information on DataStax Partners 2 3 Apache-2.0\n \n UpdatedJan 3, 2017 2 People cholick Matt Cholick mohitsoni Mohit Soni You can’t perform that action at this time. Press h to open a hovercard with more details.', 'created_at': '2017-05-08T14:16:32Z', 'updated_at': '2018-07-20T01:13:47Z', 'mimetype': 'text/html', 'language': 'en', 'reading_time': 1, 'domain_name': 'github.com', 'preview_picture': 'https://avatars2.githubusercontent.com/u/7607276?s=280&v=4', 'http_status': 200, '_links': ['/api/entries/2'], 'content': '<div role="main" class="application-main"><div id="js-pjax-container" data-pjax-container=""><div itemscope="itemscope" itemtype="http://schema.org/Organization"><div class="org-profile container js-pinned-repos-reorder-container"><ol class="pinned-repos-list org-pinned-repos-list mb-4 js-pinned-repos-reorder-list"><li class="pinned-repo-item org-pinned-repo-item p-3 mb-3 border border-gray-dark rounded-1 js-pinned-repo-list-item public source sortable-button-item">\n <div class="pinned-repo-item-content"><a href="https://github.com/DSPN/azure-resource-manager-dse" class="text-bold">\n azure-resource-manager-dse\n </a><p class="pinned-repo-desc text-gray text-small d-block mt-2 mb-3">Azure Resource Manager templates for DataStax Enterprise</p><p class="mb-0 f6 text-gray">\n \n Python\n \n \n </p></div>\n </li>\n <li class="pinned-repo-item org-pinned-repo-item p-3 mb-3 border border-gray-dark rounded-1 js-pinned-repo-list-item public source sortable-button-item">\n \n </li>\n <li class="pinned-repo-item org-pinned-repo-item p-3 mb-3 border border-gray-dark rounded-1 js-pinned-repo-list-item public source sortable-button-item">\n <div class="pinned-repo-item-content"><a href="https://github.com/DSPN/azure-deployment-guide" class="text-bold">\n azure-deployment-guide\n </a><p class="pinned-repo-desc text-gray text-small d-block mt-2 mb-3">DataStax Enterprise (DSE) Deployment Guide for Azure</p></div>\n </li>\n <li class="pinned-repo-item org-pinned-repo-item p-3 mb-3 border border-gray-dark rounded-1 js-pinned-repo-list-item public source sortable-button-item">\n <div class="pinned-repo-item-content"><a href="https://github.com/DSPN/google-deployment-guide" class="text-bold">\n google-deployment-guide\n </a><p class="pinned-repo-desc text-gray text-small d-block mt-2 mb-3">DataStax Enterprise (DSE) Deployment Guide for Google Cloud Platform (GCP)</p></div>\n </li>\n <li class="pinned-repo-item org-pinned-repo-item p-3 mb-3 border border-gray-dark rounded-1 js-pinned-repo-list-item public source sortable-button-item">\n <div class="pinned-repo-item-content"><a href="https://github.com/DSPN/amazon-deployment-guide" class="text-bold">\n amazon-deployment-guide\n </a><p class="pinned-repo-desc text-gray text-small d-block mt-2 mb-3">DataStax Enterprise (DSE) Deployment Guide for Amazon Web Services (AWS)</p></div>\n </li>\n</ol><div id="org-repositories" data-pjax-container=""><div class="col-8 d-inline-block"><div class="org-repos repo-list">\n <p></p><h3>\n <a href="https://github.com/DSPN/azure-resource-manager-dse" itemprop="name codeRepository">\n azure-resource-manager-dse</a>\n </h3>\n <div><p class="col-9 d-inline-block text-gray mb-2 pr-4" itemprop="description">\n Azure Resource Manager templates for DataStax Enterprise\n </p></div>\n <div class="f6 text-gray mt-2">Python<a class="muted-link mr-3" href="https://github.com/DSPN/azure-resource-manager-dse/stargazers">\n \n 13\n </a><a class="muted-link mr-3" href="https://github.com/DSPN/azure-resource-manager-dse/network">\n \n 38\n </a>UpdatedJun 22, 2018</div>\n \n <p></p><h3>\n <a href="https://github.com/DSPN/google-compute-engine-dse" itemprop="name codeRepository">\n google-compute-engine-dse</a>\n </h3>\n <div><p class="col-9 d-inline-block text-gray mb-2 pr-4" itemprop="description">\n Google Deployment Manager scripts for deploying DataStax Enterprise (DSE) on Google Compute Engine (GCE)\n </p></div>\n <div class="f6 text-gray mt-2">Python<a class="muted-link mr-3" href="https://github.com/DSPN/google-compute-engine-dse/stargazers">\n \n 10\n </a><a class="muted-link mr-3" href="https://github.com/DSPN/google-compute-engine-dse/network">\n \n 10\n </a>Apache-2.0\n \n UpdatedJun 17, 2018</div>\n \n <p></p><h3>\n <a href="https://github.com/DSPN/oracle-bmc-terraform-dse" itemprop="name codeRepository">\n oracle-bmc-terraform-dse</a>\n </h3>\n <div><p class="col-9 d-inline-block text-gray mb-2 pr-4" itemprop="description">\n Oracle Bare Metal Cloud Services Terraform-based provisioning\n </p></div>\n <div class="f6 text-gray mt-2">HCL<a class="muted-link mr-3" href="https://github.com/DSPN/oracle-bmc-terraform-dse/stargazers">\n \n 1\n </a><a class="muted-link mr-3" href="https://github.com/DSPN/oracle-bmc-terraform-dse/network">\n \n 2\n </a>Apache-2.0\n \n UpdatedJun 14, 2018</div>\n \n <p></p><h3>\n <a href="https://github.com/DSPN/install-datastax-redhat" itemprop="name codeRepository">\n install-datastax-redhat</a>\n </h3>\n <div><p class="col-9 d-inline-block text-gray mb-2 pr-4" itemprop="description">\n bash scripts to install and configure DataStax Enterprise (DSE) and OpsCenter on RedHat\n </p></div>\n <div class="f6 text-gray mt-2">Shell<a class="muted-link mr-3" href="https://github.com/DSPN/install-datastax-redhat/stargazers">\n \n 3\n </a><a class="muted-link mr-3" href="https://github.com/DSPN/install-datastax-redhat/network">\n \n 3\n </a>UpdatedJun 13, 2018</div>\n \n <p></p><h3>\n <a href="https://github.com/DSPN/install-datastax-ubuntu" itemprop="name codeRepository">\n install-datastax-ubuntu</a>\n </h3>\n <div><p class="col-9 d-inline-block text-gray mb-2 pr-4" itemprop="description">\n bash scripts to install and configure DataStax Enterprise (DSE) and OpsCenter on Ubuntu\n </p></div>\n <div class="f6 text-gray mt-2">Python<a class="muted-link mr-3" href="https://github.com/DSPN/install-datastax-ubuntu/stargazers">\n \n 3\n </a><a class="muted-link mr-3" href="https://github.com/DSPN/install-datastax-ubuntu/network">\n \n 16\n </a>UpdatedJun 10, 2018</div>\n \n <p></p><h3>\n <a href="https://github.com/DSPN/google-container-engine-dse" itemprop="name codeRepository">\n google-container-engine-dse</a>\n </h3>\n <div><p class="col-9 d-inline-block text-gray mb-2 pr-4" itemprop="description">\n Scripts for deploying DataStax Enterprise (DSE) on Google Kubernetes Engine (GKE)\n </p></div>\n <div class="f6 text-gray mt-2"><a class="muted-link mr-3" href="https://github.com/DSPN/google-container-engine-dse/stargazers">\n \n 15\n </a><a class="muted-link mr-3" href="https://github.com/DSPN/google-container-engine-dse/network">\n \n 16\n </a>Apache-2.0\n \n UpdatedMay 22, 2018</div>\n \n <p></p><h3>\n <a href="https://github.com/DSPN/azure-deployment-guide" itemprop="name codeRepository">\n azure-deployment-guide</a>\n </h3>\n <div><p class="col-9 d-inline-block text-gray mb-2 pr-4" itemprop="description">\n DataStax Enterprise (DSE) Deployment Guide for Azure\n </p></div>\n <div class="f6 text-gray mt-2"><a class="muted-link mr-3" href="https://github.com/DSPN/azure-deployment-guide/stargazers">\n \n 9\n </a><a class="muted-link mr-3" href="https://github.com/DSPN/azure-deployment-guide/network">\n \n 5\n </a>Apache-2.0\n \n UpdatedMay 1, 2018</div>\n \n <p></p><h3>\n <a href="https://github.com/DSPN/oracle-jumpstart" itemprop="name codeRepository">\n oracle-jumpstart</a>\n </h3>\n \n <div class="f6 text-gray mt-2">HCL<a class="muted-link mr-3" href="https://github.com/DSPN/oracle-jumpstart/network">\n \n 1\n </a>Apache-2.0\n \n UpdatedJan 29, 2018</div>\n \n <p></p><h3>\n <a href="https://github.com/DSPN/google-deployment-guide" itemprop="name codeRepository">\n google-deployment-guide</a>\n </h3>\n <div><p class="col-9 d-inline-block text-gray mb-2 pr-4" itemprop="description">\n DataStax Enterprise (DSE) Deployment Guide for Google Cloud Platform (GCP)\n </p></div>\n <div class="f6 text-gray mt-2"><a class="muted-link mr-3" href="https://github.com/DSPN/google-deployment-guide/stargazers">\n \n 6\n </a><a class="muted-link mr-3" href="https://github.com/DSPN/google-deployment-guide/network">\n \n 5\n </a>Apache-2.0\n \n UpdatedNov 14, 2017</div>\n \n <p></p><h3>\n <a href="https://github.com/DSPN/amazon-deployment-guide" itemprop="name codeRepository">\n amazon-deployment-guide</a>\n </h3>\n <div><p class="col-9 d-inline-block text-gray mb-2 pr-4" itemprop="description">\n DataStax Enterprise (DSE) Deployment Guide for Amazon Web Services (AWS)\n </p></div>\n <div class="f6 text-gray mt-2"><a class="muted-link mr-3" href="https://github.com/DSPN/amazon-deployment-guide/stargazers">\n \n 9\n </a><a class="muted-link mr-3" href="https://github.com/DSPN/amazon-deployment-guide/network">\n \n 2\n </a>Apache-2.0\n \n UpdatedNov 2, 2017</div>\n \n <p></p><h3>\n <a href="https://github.com/DSPN/oracle-public-cloud-dse" itemprop="name codeRepository">\n oracle-public-cloud-dse</a>\n </h3>\n <div><p class="col-9 d-inline-block text-gray mb-2 pr-4" itemprop="description">\n Scripts for deploying DataStax Enterprise (DSE) to Oracle Public Cloud (OPC)\n </p></div>\n <div class="f6 text-gray mt-2">Python<a class="muted-link mr-3" href="https://github.com/DSPN/oracle-public-cloud-dse/network">\n \n 2\n </a>Apache-2.0\n \n UpdatedAug 28, 2017</div>\n \n <p></p><h3>\n <a href="https://github.com/DSPN/oracle-deployment-guide" itemprop="name codeRepository">\n oracle-deployment-guide</a>\n </h3>\n <div><p class="col-9 d-inline-block text-gray mb-2 pr-4" itemprop="description">\n DataStax Enterprise (DSE) Deployment Guide for Oracle Cloud Offerings\n </p></div>\n <div class="f6 text-gray mt-2">Shell<a class="muted-link mr-3" href="https://github.com/DSPN/oracle-deployment-guide/network">\n \n 1\n </a>Apache-2.0\n \n UpdatedJul 20, 2017</div>\n \n <p></p><h3>\n <a href="https://github.com/DSPN/docs-partners-template" itemprop="name codeRepository">\n docs-partners-template</a>\n </h3>\n \n Forked from <a class="muted-link" href="https://github.com/pivotal-cf/docs-partners-template">pivotal-cf/docs-partners-template</a>\n \n <div class="f6 text-gray mt-2">HTML<a class="muted-link mr-3" href="https://github.com/DSPN/docs-partners-template/network">\n \n 10\n </a>UpdatedApr 26, 2017</div>\n \n <p></p><h3>\n <a href="https://github.com/DSPN/oracle-bare-metal-cloud-dse" itemprop="name codeRepository">\n oracle-bare-metal-cloud-dse</a>\n </h3>\n <div><p class="col-9 d-inline-block text-gray mb-2 pr-4" itemprop="description">\n Scripts to deploy DSE to Oracle Bare Metal Cloud\n </p></div>\n <div class="f6 text-gray mt-2">Ruby<a class="muted-link mr-3" href="https://github.com/DSPN/oracle-bare-metal-cloud-dse/stargazers">\n \n 1\n </a><a class="muted-link mr-3" href="https://github.com/DSPN/oracle-bare-metal-cloud-dse/network">\n \n 1\n </a>Apache-2.0\n \n UpdatedMar 8, 2017</div>\n \n <p></p><h3>\n <a href="https://github.com/DSPN/DataStaxDay" itemprop="name codeRepository">\n DataStaxDay</a>\n </h3>\n <div><p class="col-9 d-inline-block text-gray mb-2 pr-4" itemprop="description">\n Hands on instructions for DataStax Labs during Microsoft Events and Test Drives\n </p></div>\n <div class="f6 text-gray mt-2">HTML<a class="muted-link mr-3" href="https://github.com/DSPN/DataStaxDay/network">\n \n 46\n </a>Apache-2.0\n \n UpdatedJan 11, 2017</div>\n \n <p></p><h3>\n <a href="https://github.com/DSPN/partners" itemprop="name codeRepository">\n partners</a>\n </h3>\n <div><p class="col-9 d-inline-block text-gray mb-2 pr-4" itemprop="description">\n Selected links to information on DataStax Partners\n </p></div>\n <div class="f6 text-gray mt-2"><a class="muted-link mr-3" href="https://github.com/DSPN/partners/stargazers">\n \n 2\n </a><a class="muted-link mr-3" href="https://github.com/DSPN/partners/network">\n \n 3\n </a>Apache-2.0\n \n UpdatedJan 3, 2017</div>\n </div></div><div class="col-4 float-right pl-4"><div class="Box mb-3"><div class="Box-body"><a class="d-block text-gray-dark" href="https://github.com/orgs/DSPN/people" data-ga-click="Orgs, go to people, location:profile people module; text:People">\n \n 2\n <h4 class="f4 text-normal mb-3">People</h4>\n </a><div class="member-avatar-group d-flex flex-wrap"><div class="member-row"><a href="https://github.com/cholick">\n <img class="avatar" src="https://avatars1.githubusercontent.com/u/782256?s=80&v=4" width="40" height="40" alt="@cholick" /></a><a href="https://github.com/cholick">\n <strong class="member-name">cholick</strong>\n Matt Cholick\n</a></div><div class="member-row"><a href="https://github.com/mohitsoni">\n <img class="avatar" src="https://avatars2.githubusercontent.com/u/102390?s=80&v=4" width="40" height="40" alt="@mohitsoni" /></a><a href="https://github.com/mohitsoni">\n <strong class="member-name">mohitsoni</strong>\n Mohit Soni\n</a></div></div></div></div></div></div></div></div></div></div><div id="ajax-error-message" class="ajax-error-message flash flash-error">You can’t perform that action at this time.</div>\n \n \n \n \n<p>Press h to open a hovercard with more details.</p>'},)
({'is_archived': 1, 'is_starred': 0, 'user_name': 'graphroot', 'user_email': '[email protected]', 'user_id': 1, 'is_public': False, 'id': '6', 'title': 'Landoop/stream-reactor', 'url': 'https://github.com/Landoop/stream-reactor', 'content_text': "README.md Join us on slack Lenses offers SQL (for data browsing and Kafka Streams), Kafka Connect connector management, cluster monitoring and more. You can find more on landoop.com! A collection of components to build a real time ingestion pipeline. Connectors Please take a moment and read the documentation and make sure the software prerequisites are met!! Connector Type Description Docs AzureDocumentDb Sink Kafka connect Azure DocumentDb sink to subscribe to write to the cloud Azure Document Db. Docs BlockChain Source Kafka connect Blockchain source to subscribe to Blockchain streams and write to Kafka. Docs Bloomberg Source Kafka connect source to subscribe to Bloomberg streams and write to Kafka. Docs Cassandra Source Kafka connect Cassandra source to read Cassandra and write to Kafka. Docs *Cassandra Sink Certified DSE Kafka connect Cassandra sink task to write Kafka topic payloads to Cassandra. Docs Coap Source Kafka connect Coap source to read from IoT Coap endpoints using Californium. Docs Coap Sink Kafka connect Coap sink to write kafka topic payload to IoT Coap endpoints using Californium. Docs Druid Sink Kafka connect Druid sink to write Kafka topic payloads to Druid. Elastic Sink Kafka connect Elastic Search sink to write Kafka topic payloads to Elastic Search 2.x Docs Elastic 5 Sink Kafka connect Elastic Search sink to write payloads to Elastic Search 5.x w. tcp or http Docs Elastic 6 Sink Kafka connect Elastic Search sink to write payloads to Elastic Search 6.x w. tcp or http Docs FTP/HTTP Source Kafka connect FTP and HTTP source to write file data into Kafka topics. Docs HBase Sink Kafka connect HBase sink to write Kafka topic payloads to HBase. Docs Hazelcast Sink Kafka connect Hazelcast sink to write Kafka topic payloads to Hazelcast. Docs Kudu Sink Kafka connect Kudu sink to write Kafka topic payloads to Kudu. Docs InfluxDb Sink Kafka connect InfluxDb sink to write Kafka topic payloads to InfluxDb. Docs JMS Source Kafka connect JMS source to write from JMS to Kafka topics. Docs JMS Sink Kafka connect JMS sink to write Kafka topic payloads to JMS. Docs MongoDB Sink Kafka connect MongoDB sink to write Kafka topic payloads to MongoDB. Docs MQTT Source Kafka connect MQTT source to write data from MQTT to Kafka. Docs MQTT Sink Kafka connect MQTT sink to write data from Kafka to MQTT. Docs Pulsar Source Kafka connect Pulsar source to write data from Pulsar to Kafka. Docs Pulsar Sink Kafka connect Pulsar sink to write data from Kafka to Pulsar. Docs Redis Sink Kafka connect Redis sink to write Kafka topic payloads to Redis. Docs ReThinkDB Source Kafka connect RethinkDb source subscribe to ReThinkDB changefeeds and write to Kafka. Docs ReThinkDB Sink Kafka connect RethinkDb sink to write Kafka topic payloads to RethinkDb. Docs VoltDB Sink Kafka connect Voltdb sink to write Kafka topic payloads to Voltdb. Docs Release Notes 1.1.0 Upgrade to Kafka 1.1.0 Added SSL, subscription, partitioning, batching and key selection to Pulsar source and sink Elastic6 connector @caiooliveiraeti ! HTTP Basic Auth for Elasticsearch http client thanks @justinsoong ! Add polling timeout on the JMS source connector to avoid high CPU in the source connector poll thanks #373 @matthedude Fixes on the elastic primary key separator thanks @caiooliveiraeti! Fix on the MQTT class loader Fix on the JMS class loader Fix on JMS to close down connections cleanly #363 thanks @matthedude! Fix on MQTT to correctly handle authentication Moved MongoDB batch size to KCQL. connect.mongodb.batch.size is deprecated Added connect.mapping.collection.to.json to treat maps, list, sets as json when inserting into Cassandra Added support for Elastic Pipelines thanks @caiooliveiraeti! Moved ReThinkDB batch size to KCQL connect.rethink.batch.size is deprecated MQTT source allows full control of matching the topic INSERT INTO targetTopic SELECT * FROM mqttTopic ... WITHREGEX=`$THE_REGEX` Upgrade Kudu Client to 0.7 Upgrade Azure documentDB client to 1.16.0 Upgrade Elastic5 to elastic4s 5.6.5 Upgrade Elastic6 to elastic4s 6.2.5 Upgrade Hazelcast client to 3.10 Upgrade InfluxDB client to 2.9 Upgrade MongoDB client to 3.6.3 Upgrade Redis client to 2.9 Kudu connector now accepts a comma separated list of master addresses Added missing connect.elastic.retry.interval to elastic5 and elastic6 Added a default value set property to Cassandra to allow DEFAULT UNSET to be added on insert. Omitted columns from maps default to null.\nAlternatively, if set UNSET , pre-existing value will be preserved Cassandra source batch size now in KCQL. connect.cassandra.batch.size is deprecated . 1.0.0 Kafka 1.0.0 Support 0.4.0 Add FTPS support to FTP connector, new configuration option ftp.protocol introduced, either ftp (default) or ftps. Fix for MQTT source High CPU Thanks @masahirom! Improve logging on Kudu DELETE functionality add to the Cassandra sink, deletion now possible for null payloads, thanks @sandonjacobs ! Fix in kafka-connect-common to handle primary keys with doc strings thanks, @medvekoma ! Fix writing multiple topics to the same table in Cassandra #284 Upgrade to Cassandra driver 3.3.0 and refactor Cassandra tests Fix on JMS source transacted queues #285 thanks @matthedude ! Fix on Cassandra source, configurable timespan queries. You can now control the timespan the Connector will query for Allow setting initial query timestamp on Cassandra source Allow multiple primary keys on the redis sink 0.3.0 Upgrade CoAP to 2.0.0-M4 Upgrade to Confluent 3.3 and Kafka 0.11.0.0. Added MQTT Sink. Add MQTT wildcard support. Upgrade CoAP to 2.0.0-M4. Added WITHCONVERTERS and WITHTYPE to JMS and MQTT connectors in KCQL to simplify configuration. Added FLUSH MODE to Kudu. Thanks! @patsak 0.2.6 Features Added MQTT Sink Upgrade to Confluent 3.2.2 Upgrade to KCQL 2x Add CQL generator to Cassandra source Add KCQL INCREMENTALMODE support to the Cassandra source, bulk mode and the timestamp column type is now take from KCQL Support for setting key and truststore type on Cassandra connectors Added token based paging support for Cassandra source Added default bytes converter to JMS Source Added default connection factory to JMS Source Added support for SharedDurableConsumers to JMS Connectors Upgraded JMS Connector to JMS 2.0 Moved to Elastic4s 2.4 Added Elastic5s with TCP, TCP+XPACK and HTTP client support Upgrade Azure Documentdb to 1.11.0 Added optional progress counter to all connectors, it can be enabled with connect.progress.enabled which will periodically report log messages processed Added authentication and TLS to ReThink Connectors Added TLS support for ReThinkDB, add batch size option to source for draining the internal queues. Upgrade Kudu Client to 1.4.0 Support for dates in Elastic Indexes and custom document types Upgrade Connect CLI to 1.0.2 (Renamed to connect-cli) Bug Fixes Fixes for high CPU on CoAP source Fixes for high CPU on Cassandra source Fixed Avro double fields mapping to Kudu columns Fixes on JMS properties converter, Invalid schema when extracting properties Misc Refactored Cassandra Tests to use only one embedded instance Removed unused batch size and bucket size options from Kudu, they are taken from KCQL Removed unused batch size option from DocumentDb Rename Azure DocumentDb connect.documentdb.db to connect.documentdb.db Rename Azure DocumentDb connect.documentdb.database.create to connect.documentdb.db.create Rename Cassandra Source connect.cassandra.source.kcql to connect.cassandra.kcql Rename Cassandra Source connect.cassandra.source.timestamp.type to connect.cassandra.timestamp.type Rename Cassandra Source connect.cassandra.source.import.poll.interval to connect.cassandra.import.poll.interval Rename Cassandra Source connect.cassandra.source.error.policy to connect.cassandra.error.policy Rename Cassandra Source connect.cassandra.source.max.retries to connect.cassandra.max.retries Rename Cassandra Sink connect.cassandra.source.retry.interval to connect.cassandra.retry.interval Rename Cassandra Sink connect.cassandra.sink.kcql to connect.cassandra.kcql Rename Cassandra Sink connect.cassandra.sink.error.policy to connect.cassandra.error.policy Rename Cassandra Sink connect.cassandra.sink.max.retries to connect.cassandra.max.retries Rename Cassandra Sink Sink connect.cassandra.sink.retry.interval to connect.cassandra.retry.interval Rename Coap Source connect.coap.bind.port to connect.coap.port Rename Coap Sink connect.coap.bind.port to connect.coap.port Rename Coap Source connect.coap.bind.host to connect.coap.host Rename Coap Sink connect.coap.bind.host to connect.coap.host Rename MongoDb connect.mongo.database to connect.mongo.db Rename MongoDb connect.mongo.sink.batch.size to connect.mongo.batch.size Rename Druid connect.druid.sink.kcql to connect.druid.kcql Rename Druid connect.druid.sink.conf.file to connect.druid.kcql Rename Druid connect.druid.sink.write.timeout to connect.druid.write.timeout Rename Elastic connect.elastic.sink.kcql to connect.elastic.kcql Rename HBase connect.hbase.sink.column.family to connect.hbase.column.family Rename HBase connect.hbase.sink.kcql to connect.hbase.kcql Rename HBase connect.hbase.sink.error.policy to connect.hbase.error.policy Rename HBase connect.hbase.sink.max.retries to connect.hbase.max.retries Rename HBase connect.hbase.sink.retry.interval to connect.hbase.retry.interval Rename Influx connect.influx.sink.kcql to connect.influx.kcql Rename Influx connect.influx.connection.user to connect.influx.username Rename Influx connect.influx.connection.password to connect.influx.password Rename Influx connect.influx.connection.database to connect.influx.db Rename Influx connect.influx.connection.url to connect.influx.url Rename Kudu connect.kudu.sink.kcql to connect.kudu.kcql Rename Kudu connect.kudu.sink.error.policy to connect.kudu.error.policy Rename Kudu connect.kudu.sink.retry.interval to connect.kudu.retry.interval Rename Kudu connect.kudu.sink.max.retries to connect.kudu.max.reties Rename Kudu connect.kudu.sink.schema.registry.url to connect.kudu.schema.registry.url Rename Redis connect.redis.connection.password to connect.redis.password Rename Redis connect.redis.sink.kcql to connect.redis.kcql Rename Redis connect.redis.connection.host to connect.redis.host Rename Redis connect.redis.connection.port to connect.redis.port Rename ReThink connect.rethink.source.host to connect.rethink.host Rename ReThink connect.rethink.source.port to connect.rethink.port Rename ReThink connect.rethink.source.db to connect.rethink.db Rename ReThink connect.rethink.source.kcql to connect.rethink.kcql Rename ReThink Sink connect.rethink.sink.host to connect.rethink.host Rename ReThink Sink connect.rethink.sink.port to connect.rethink.port Rename ReThink Sink connect.rethink.sink.db to connect.rethink.db Rename ReThink Sink connect.rethink.sink.kcql to connect.rethink.kcql Rename JMS connect.jms.user to connect.jms.username Rename JMS connect.jms.source.converters to connect.jms.converters Remove JMS connect.jms.converters and replace my kcql withConverters Remove JMS connect.jms.queues and replace my kcql withType QUEUE Remove JMS connect.jms.topics and replace my kcql withType TOPIC Rename Mqtt connect.mqtt.source.kcql to connect.mqtt.kcql Rename Mqtt connect.mqtt.user to connect.mqtt.username Rename Mqtt connect.mqtt.hosts to connect.mqtt.connection.hosts Remove Mqtt connect.mqtt.converters and replace my kcql withConverters Remove Mqtt connect.mqtt.queues and replace my kcql withType=QUEUE Remove Mqtt connect.mqtt.topics and replace my kcql withType=TOPIC Rename Hazelcast connect.hazelcast.sink.kcql to connect.hazelcast.kcql Rename Hazelcast connect.hazelcast.sink.group.name to connect.hazelcast.group.name Rename Hazelcast connect.hazelcast.sink.group.password to connect.hazelcast.group.password Rename Hazelcast connect.hazelcast.sink.cluster.members tp connect.hazelcast.cluster.members Rename Hazelcast connect.hazelcast.sink.batch.size to connect.hazelcast.batch.size Rename Hazelcast connect.hazelcast.sink.error.policy to connect.hazelcast.error.policy Rename Hazelcast connect.hazelcast.sink.max.retries to connect.hazelcast.max.retries Rename Hazelcast connect.hazelcast.sink.retry.interval to connect.hazelcast.retry.interval Rename VoltDB connect.volt.sink.kcql to connect.volt.kcql Rename VoltDB connect.volt.sink.connection.servers to connect.volt.servers Rename VoltDB connect.volt.sink.connection.user to connect.volt.username Rename VoltDB connect.volt.sink.connection.password to connect.volt.password Rename VoltDB connect.volt.sink.error.policy to connect.volt.error.policy Rename VoltDB connect.volt.sink.max.retries to connect.volt.max.retries Rename VoltDB connect.volt.sink.retry.interval to connect.volt.retry.interval 0.2.5 (8 Apr 2017) Added Azure DocumentDB Sink Connector Added JMS Source Connector. Added UPSERT to Elastic Search Support Confluent 3.2 and Kafka 0.10.2. Cassandra improvements withunwrap Upgrade to Kudu 1.0 and CLI 1.0 Add ingest_time to CoAP Source InfluxDB bug fixes for tags and field selection. Added Schemaless Json and Json with schema support to JMS Sink. Support for Cassandra data type of timestamp in the Cassandra Source for timestamp tracking. 0.2.4 (26 Jan 2017) Added FTP and HTTP Source. Added InfluxDB tag support. KCQL: INSERT INTO targetdimension SELECT * FROM influx-topic WITHTIMESTAMP sys_time() WITHTAG(field1, CONSTANT_KEY1=CONSTANT_VALUE1, field2,CONSTANT_KEY2=CONSTANT_VALUE1) Added InfluxDb consistency level. Default is ALL . Use connect.influx.consistency.level to set it to ONE/QUORUM/ALL/ANY InfluxDb connect.influx.sink.route.query was renamed to connect.influx.sink.kcql Added support for multiple contact points in Cassandra 0.2.3 (5 Jan 2017) Added CoAP Source and Sink. Added MongoDB Sink. Added MQTT Source. Hazelcast support for ring buffers. Redis support for Sorted Sets. Added start scripts. Added Kafka Connect and Schema Registry CLI. Kafka Connect CLI now supports pause/restart/resume; checking connectors on the classpath and validating configuration of connectors. Support for Struct , Schema.STRING and Json with schema in the Cassandra, ReThinkDB, InfluxDB and MongoDB sinks. Rename export.query.route to sink.kcql . Rename import.query.route to source.kcql . Upgrade to KCQL 0.9.5 - Add support for STOREAS so specify target sink types, e.g. Redis Sorted Sets, Hazelcast map, queues, ringbuffers. Building Requires gradle 3.0 to build. To build gradle compile To test gradle test To create a fat jar gradle shadowJar You can also use the gradle wrapper ./gradlew shadowJar To view dependency trees gradle dependencies #\xa0or\ngradle :kafka-connect-cassandra:dependencies To build a particular project gradle :kafka-connect-elastic5:build To create a jar of a particular project: gradle :kafka-connect-elastic5:shadowJar Contributing We'd love to accept your contributions! Please use GitHub pull requests: fork the repo, develop and test your code, semantically commit and submit a pull request. Thanks! ", 'created_at': '2017-05-06T22:55:29Z', 'updated_at': '2018-07-20T01:13:38Z', 'mimetype': 'text/html', 'language': 'en', 'reading_time': 11, 'domain_name': 'github.com', 'preview_picture': 'https://avatars2.githubusercontent.com/u/11728472?s=400&v=4', 'http_status': 200, '_links': ['/api/entries/6'], 'content': '<h3>\n \n README.md\n </h3><article class="markdown-body entry-content" itemprop="text"><p><a href="https://datamountaineer.ci.landoop.com/job/stream-reactor/" rel="nofollow"><img src="https://camo.githubusercontent.com/66bb79f11d5cecbbc57c12f7b8bf4cfb61be30e7/68747470733a2f2f646174616d6f756e7461696e6565722e63692e6c616e646f6f702e636f6d2f6275696c645374617475732f69636f6e3f6a6f623d73747265616d2d72656163746f72267374796c653d666c6174262e706e67" alt="Build Status" data-canonical-src="https://datamountaineer.ci.landoop.com/buildStatus/icon?job=stream-reactor&style=flat&.png" /></a>\n<a href="http://lenses.stream/connectors/index.html" rel="nofollow"><img src="https://camo.githubusercontent.com/0b233e4a210326868c5be7197bd9ccb416aacff0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f63732d2d6f72616e67652e7376673f" data-canonical-src="https://img.shields.io/badge/docs--orange.svg?" alt="image" /></a>\n<a href="http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.datamountaineer%22" rel="nofollow"><img src="https://camo.githubusercontent.com/c0fb8d333898ab15428ba7e8b2420b7427908d7e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c617465737425323072656c656173652d312e302e302d626c75652e7376673f6c6162656c3d6c617465737425323072656c65617365" data-canonical-src="https://img.shields.io/badge/latest%20release-1.0.0-blue.svg?label=latest%20release" alt="image" /></a></p>\n<p>Join us on slack <a href="https://launchpass.com/landoop-community" rel="nofollow"><img src="https://github.com/Landoop/stream-reactor/raw/master/images/slack.jpeg" alt="Alt text" /></a></p>\n<p>Lenses offers SQL (for data browsing and Kafka Streams), Kafka Connect connector management, cluster monitoring and more.</p>\n<p>You can find more on <a href="http://www.landoop.com/kafka-lenses/" rel="nofollow">landoop.com!</a></p>\n<p><a target="_blank" href="https://github.com/Landoop/stream-reactor/blob/master/images/streamreactor-logo.png"><img src="https://github.com/Landoop/stream-reactor/raw/master/images/streamreactor-logo.png" alt="Alt text" /></a></p>\n<p>A collection of components to build a real time ingestion pipeline.</p>\n<h3><a id="user-content-connectors" class="anchor" aria-hidden="true" href="#connectors"></a>Connectors</h3>\n<p><strong>Please take a moment and read the documentation and make sure the software prerequisites are met!!</strong></p>\n<table><thead><tr><th>Connector</th>\n<th>Type</th>\n<th>Description</th>\n<th>Docs</th>\n</tr></thead><tbody><tr><td>AzureDocumentDb</td>\n<td>Sink</td>\n<td>Kafka connect Azure DocumentDb sink to subscribe to write to the cloud Azure Document Db.</td>\n<td><a href="https://lenses.stream/connectors/sink/azuredocdb.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>BlockChain</td>\n<td>Source</td>\n<td>Kafka connect Blockchain source to subscribe to Blockchain streams and write to Kafka.</td>\n<td><a href="https://lenses.stream/connectors/source/blockchain.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>Bloomberg</td>\n<td>Source</td>\n<td>Kafka connect source to subscribe to Bloomberg streams and write to Kafka.</td>\n<td><a href="https://lenses.stream/connectors/source/bloomberg.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>Cassandra</td>\n<td>Source</td>\n<td>Kafka connect Cassandra source to read Cassandra and write to Kafka.</td>\n<td><a href="https://lenses.stream/connectors/source/cassandra.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>*Cassandra</td>\n<td>Sink</td>\n<td>Certified DSE Kafka connect Cassandra sink task to write Kafka topic payloads to Cassandra.</td>\n<td><a href="https://lenses.stream/connectors/sink/cassandra.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>Coap</td>\n<td>Source</td>\n<td>Kafka connect Coap source to read from IoT Coap endpoints using Californium.</td>\n<td><a href="https://lenses.stream/connectors/source/coap.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>Coap</td>\n<td>Sink</td>\n<td>Kafka connect Coap sink to write kafka topic payload to IoT Coap endpoints using Californium.</td>\n<td><a href="https://lenses.stream/connectors/sink/coap.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>Druid</td>\n<td>Sink</td>\n<td>Kafka connect Druid sink to write Kafka topic payloads to Druid.</td>\n<td>\n</td></tr><tr><td>Elastic</td>\n<td>Sink</td>\n<td>Kafka connect Elastic Search sink to write Kafka topic payloads to Elastic Search 2.x</td>\n<td><a href="https://lenses.stream/connectors/sink/elastic.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>Elastic 5</td>\n<td>Sink</td>\n<td>Kafka connect Elastic Search sink to write payloads to Elastic Search 5.x w. tcp or http</td>\n<td><a href="https://lenses.stream/connectors/sink/elastic5.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>Elastic 6</td>\n<td>Sink</td>\n<td>Kafka connect Elastic Search sink to write payloads to Elastic Search 6.x w. tcp or http</td>\n<td><a href="https://lenses.stream/connectors/sink/elastic6.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>FTP/HTTP</td>\n<td>Source</td>\n<td>Kafka connect FTP and HTTP source to write file data into Kafka topics.</td>\n<td><a href="https://lenses.stream/connectors/source/ftp.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>HBase</td>\n<td>Sink</td>\n<td>Kafka connect HBase sink to write Kafka topic payloads to HBase.</td>\n<td><a href="https://lenses.stream/connectors/sink/hbase.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>Hazelcast</td>\n<td>Sink</td>\n<td>Kafka connect Hazelcast sink to write Kafka topic payloads to Hazelcast.</td>\n<td><a href="https://lenses.stream/connectors/sink/hazelcast.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>Kudu</td>\n<td>Sink</td>\n<td>Kafka connect Kudu sink to write Kafka topic payloads to Kudu.</td>\n<td><a href="https://lenses.stream/connectors/sink/kudu.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>InfluxDb</td>\n<td>Sink</td>\n<td>Kafka connect InfluxDb sink to write Kafka topic payloads to InfluxDb.</td>\n<td><a href="https://lenses.stream/connectors/sink/influx.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>JMS</td>\n<td>Source</td>\n<td>Kafka connect JMS source to write from JMS to Kafka topics.</td>\n<td><a href="https://lenses.stream/connectors/source/jms.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>JMS</td>\n<td>Sink</td>\n<td>Kafka connect JMS sink to write Kafka topic payloads to JMS.</td>\n<td><a href="https://lenses.stream/connectors/sink/jms.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>MongoDB</td>\n<td>Sink</td>\n<td>Kafka connect MongoDB sink to write Kafka topic payloads to MongoDB.</td>\n<td><a href="https://lenses.stream/connectors/sink/mongo.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>MQTT</td>\n<td>Source</td>\n<td>Kafka connect MQTT source to write data from MQTT to Kafka.</td>\n<td><a href="https://lenses.stream/connectors/source/mqtt.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>MQTT</td>\n<td>Sink</td>\n<td>Kafka connect MQTT sink to write data from Kafka to MQTT.</td>\n<td><a href="https://lenses.stream/connectors/sink/mqtt.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>Pulsar</td>\n<td>Source</td>\n<td>Kafka connect Pulsar source to write data from Pulsar to Kafka.</td>\n<td><a href="https://lenses.stream/connectors/source/pulsar.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>Pulsar</td>\n<td>Sink</td>\n<td>Kafka connect Pulsar sink to write data from Kafka to Pulsar.</td>\n<td><a href="https://lenses.stream/connectors/sink/pulsar.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>Redis</td>\n<td>Sink</td>\n<td>Kafka connect Redis sink to write Kafka topic payloads to Redis.</td>\n<td><a href="https://lenses.stream/connectors/sink/redis.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>ReThinkDB</td>\n<td>Source</td>\n<td>Kafka connect RethinkDb source subscribe to ReThinkDB changefeeds and write to Kafka.</td>\n<td><a href="https://lenses.stream/connectors/source/rethink.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>ReThinkDB</td>\n<td>Sink</td>\n<td>Kafka connect RethinkDb sink to write Kafka topic payloads to RethinkDb.</td>\n<td><a href="https://lenses.stream/connectors/sink/rethink.html" rel="nofollow">Docs</a></td>\n</tr><tr><td>VoltDB</td>\n<td>Sink</td>\n<td>Kafka connect Voltdb sink to write Kafka topic payloads to Voltdb.</td>\n<td><a href="https://lenses.stream/connectors/sink/voltdb.html" rel="nofollow">Docs</a></td>\n</tr></tbody></table><h2><a id="user-content-release-notes" class="anchor" aria-hidden="true" href="#release-notes"></a>Release Notes</h2>\n<p><strong>1.1.0</strong></p>\n<ul><li>Upgrade to Kafka 1.1.0</li>\n<li>Added SSL, subscription, partitioning, batching and key selection to Pulsar source and sink</li>\n<li>Elastic6 connector @caiooliveiraeti !</li>\n<li>HTTP Basic Auth for Elasticsearch http client thanks @justinsoong !</li>\n<li>Add polling timeout on the JMS source connector to avoid high CPU in the source connector poll thanks #373 @matthedude</li>\n<li>Fixes on the elastic primary key separator thanks @caiooliveiraeti!</li>\n<li>Fix on the MQTT class loader</li>\n<li>Fix on the JMS class loader</li>\n<li>Fix on JMS to close down connections cleanly #363 thanks @matthedude!</li>\n<li>Fix on MQTT to correctly handle authentication</li>\n<li>Moved MongoDB batch size to KCQL. <code>connect.mongodb.batch.size</code> is deprecated</li>\n<li>Added <code>connect.mapping.collection.to.json</code> to treat maps, list, sets as json when inserting into Cassandra</li>\n<li>Added support for Elastic Pipelines thanks @caiooliveiraeti!</li>\n<li>Moved ReThinkDB batch size to KCQL <code>connect.rethink.batch.size</code> is deprecated</li>\n<li>MQTT source allows full control of matching the topic <code>INSERT INTO targetTopic SELECT * FROM mqttTopic ... WITHREGEX=`$THE_REGEX`</code></li>\n<li>Upgrade Kudu Client to 0.7</li>\n<li>Upgrade Azure documentDB client to 1.16.0</li>\n<li>Upgrade Elastic5 to elastic4s 5.6.5</li>\n<li>Upgrade Elastic6 to elastic4s 6.2.5</li>\n<li>Upgrade Hazelcast client to 3.10</li>\n<li>Upgrade InfluxDB client to 2.9</li>\n<li>Upgrade MongoDB client to 3.6.3</li>\n<li>Upgrade Redis client to 2.9</li>\n<li>Kudu connector now accepts a comma separated list of master addresses</li>\n<li>Added missing <code>connect.elastic.retry.interval</code> to elastic5 and elastic6</li>\n<li>Added a default value set property to Cassandra to allow <code>DEFAULT UNSET</code> to be added on insert. Omitted columns from maps default to null.\nAlternatively, if set <code>UNSET</code>, pre-existing value will be preserved</li>\n<li>Cassandra source batch size now in KCQL. <code>connect.cassandra.batch.size</code> is deprecated .</li>\n</ul><p><strong>1.0.0</strong></p>\n<ul><li>Kafka 1.0.0 Support</li>\n</ul><p><strong>0.4.0</strong></p>\n<ul><li>Add FTPS support to FTP connector, new configuration option <code>ftp.protocol</code> introduced, either ftp (default) or ftps.</li>\n<li>Fix for MQTT source High CPU Thanks @masahirom!</li>\n<li>Improve logging on Kudu</li>\n<li>DELETE functionality add to the Cassandra sink, deletion now possible for null payloads, thanks @sandonjacobs !</li>\n<li>Fix in kafka-connect-common to handle primary keys with doc strings thanks, @medvekoma !</li>\n<li>Fix writing multiple topics to the same table in Cassandra #284</li>\n<li>Upgrade to Cassandra driver 3.3.0 and refactor Cassandra tests</li>\n<li>Fix on JMS source transacted queues #285 thanks @matthedude !</li>\n<li>Fix on Cassandra source, configurable timespan queries. You can now control the timespan the Connector will query for</li>\n<li>Allow setting initial query timestamp on Cassandra source</li>\n<li>Allow multiple primary keys on the redis sink</li>\n</ul><p><strong>0.3.0</strong></p>\n<ul><li>Upgrade CoAP to 2.0.0-M4</li>\n<li>Upgrade to Confluent 3.3 and Kafka 0.11.0.0.</li>\n<li>Added MQTT Sink.</li>\n<li>Add MQTT wildcard support.</li>\n<li>Upgrade CoAP to 2.0.0-M4.</li>\n<li>Added WITHCONVERTERS and WITHTYPE to JMS and MQTT connectors in KCQL to simplify configuration.</li>\n<li>Added FLUSH MODE to Kudu. Thanks! @patsak</li>\n</ul><p><strong>0.2.6</strong></p>\n<h3><a id="user-content-features" class="anchor" aria-hidden="true" href="#features"></a>Features</h3>\n<ul><li>Added MQTT Sink</li>\n<li>Upgrade to Confluent 3.2.2</li>\n<li>Upgrade to KCQL 2x</li>\n<li>Add CQL generator to Cassandra source</li>\n<li>Add KCQL INCREMENTALMODE support to the Cassandra source, bulk mode and the timestamp column type is now take from KCQL</li>\n<li>Support for setting key and truststore type on Cassandra connectors</li>\n<li>Added token based paging support for Cassandra source</li>\n<li>Added default bytes converter to JMS Source</li>\n<li>Added default connection factory to JMS Source</li>\n<li>Added support for SharedDurableConsumers to JMS Connectors</li>\n<li>Upgraded JMS Connector to JMS 2.0</li>\n<li>Moved to Elastic4s 2.4</li>\n<li>Added Elastic5s with TCP, TCP+XPACK and HTTP client support</li>\n<li>Upgrade Azure Documentdb to 1.11.0</li>\n<li>Added optional progress counter to all connectors, it can be enabled with <code>connect.progress.enabled</code> which will periodically report log messages processed</li>\n<li>Added authentication and TLS to ReThink Connectors</li>\n<li>Added TLS support for ReThinkDB, add batch size option to source for draining the internal queues.</li>\n<li>Upgrade Kudu Client to 1.4.0</li>\n<li>Support for dates in Elastic Indexes and custom document types</li>\n<li>Upgrade Connect CLI to 1.0.2 (Renamed to connect-cli)</li>\n</ul><h3><a id="user-content-bug-fixes" class="anchor" aria-hidden="true" href="#bug-fixes"></a>Bug Fixes</h3>\n<ul><li>Fixes for high CPU on CoAP source</li>\n<li>Fixes for high CPU on Cassandra source</li>\n<li>Fixed Avro double fields mapping to Kudu columns</li>\n<li>Fixes on JMS properties converter, Invalid schema when extracting properties</li>\n</ul><h3><a id="user-content-misc" class="anchor" aria-hidden="true" href="#misc"></a>Misc</h3>\n<ul><li>Refactored Cassandra Tests to use only one embedded instance</li>\n<li>Removed unused batch size and bucket size options from Kudu, they are taken from KCQL</li>\n<li>Removed unused batch size option from DocumentDb</li>\n<li>Rename Azure DocumentDb <code>connect.documentdb.db</code> to <code>connect.documentdb.db</code></li>\n<li>Rename Azure DocumentDb <code>connect.documentdb.database.create</code> to <code>connect.documentdb.db.create</code></li>\n<li>Rename Cassandra Source <code>connect.cassandra.source.kcql</code> to <code>connect.cassandra.kcql</code></li>\n<li>Rename Cassandra Source <code>connect.cassandra.source.timestamp.type</code> to <code>connect.cassandra.timestamp.type</code></li>\n<li>Rename Cassandra Source <code>connect.cassandra.source.import.poll.interval</code> to <code>connect.cassandra.import.poll.interval</code></li>\n<li>Rename Cassandra Source <code>connect.cassandra.source.error.policy</code> to <code>connect.cassandra.error.policy</code></li>\n<li>Rename Cassandra Source <code>connect.cassandra.source.max.retries</code> to <code>connect.cassandra.max.retries</code></li>\n<li>Rename Cassandra Sink <code>connect.cassandra.source.retry.interval</code> to <code>connect.cassandra.retry.interval</code></li>\n<li>Rename Cassandra Sink <code>connect.cassandra.sink.kcql</code> to <code>connect.cassandra.kcql</code></li>\n<li>Rename Cassandra Sink <code>connect.cassandra.sink.error.policy</code> to <code>connect.cassandra.error.policy</code></li>\n<li>Rename Cassandra Sink <code>connect.cassandra.sink.max.retries</code> to <code>connect.cassandra.max.retries</code></li>\n<li>Rename Cassandra Sink Sink <code>connect.cassandra.sink.retry.interval</code> to <code>connect.cassandra.retry.interval</code></li>\n<li>Rename Coap Source <code>connect.coap.bind.port</code> to <code>connect.coap.port</code></li>\n<li>Rename Coap Sink <code>connect.coap.bind.port</code> to <code>connect.coap.port</code></li>\n<li>Rename Coap Source <code>connect.coap.bind.host</code> to <code>connect.coap.host</code></li>\n<li>Rename Coap Sink <code>connect.coap.bind.host</code> to <code>connect.coap.host</code></li>\n<li>Rename MongoDb <code>connect.mongo.database</code> to <code>connect.mongo.db</code></li>\n<li>Rename MongoDb <code>connect.mongo.sink.batch.size</code> to <code>connect.mongo.batch.size</code></li>\n<li>Rename Druid <code>connect.druid.sink.kcql</code> to <code>connect.druid.kcql</code></li>\n<li>Rename Druid <code>connect.druid.sink.conf.file</code> to <code>connect.druid.kcql</code></li>\n<li>Rename Druid <code>connect.druid.sink.write.timeout</code> to <code>connect.druid.write.timeout</code></li>\n<li>Rename Elastic <code>connect.elastic.sink.kcql</code> to <code>connect.elastic.kcql</code></li>\n<li>Rename HBase <code>connect.hbase.sink.column.family</code> to <code>connect.hbase.column.family</code></li>\n<li>Rename HBase <code>connect.hbase.sink.kcql</code> to <code>connect.hbase.kcql</code></li>\n<li>Rename HBase <code>connect.hbase.sink.error.policy</code> to <code>connect.hbase.error.policy</code></li>\n<li>Rename HBase <code>connect.hbase.sink.max.retries</code> to <code>connect.hbase.max.retries</code></li>\n<li>Rename HBase <code>connect.hbase.sink.retry.interval</code> to <code>connect.hbase.retry.interval</code></li>\n<li>Rename Influx <code>connect.influx.sink.kcql</code> to <code>connect.influx.kcql</code></li>\n<li>Rename Influx <code>connect.influx.connection.user</code> to <code>connect.influx.username</code></li>\n<li>Rename Influx <code>connect.influx.connection.password</code> to <code>connect.influx.password</code></li>\n<li>Rename Influx <code>connect.influx.connection.database</code> to <code>connect.influx.db</code></li>\n<li>Rename Influx <code>connect.influx.connection.url</code> to <code>connect.influx.url</code></li>\n<li>Rename Kudu <code>connect.kudu.sink.kcql</code> to <code>connect.kudu.kcql</code></li>\n<li>Rename Kudu <code>connect.kudu.sink.error.policy</code> to <code>connect.kudu.error.policy</code></li>\n<li>Rename Kudu <code>connect.kudu.sink.retry.interval</code> to <code>connect.kudu.retry.interval</code></li>\n<li>Rename Kudu <code>connect.kudu.sink.max.retries</code> to <code>connect.kudu.max.reties</code></li>\n<li>Rename Kudu <code>connect.kudu.sink.schema.registry.url</code> to <code>connect.kudu.schema.registry.url</code></li>\n<li>Rename Redis <code>connect.redis.connection.password</code> to <code>connect.redis.password</code></li>\n<li>Rename Redis <code>connect.redis.sink.kcql</code> to <code>connect.redis.kcql</code></li>\n<li>Rename Redis <code>connect.redis.connection.host</code> to <code>connect.redis.host</code></li>\n<li>Rename Redis <code>connect.redis.connection.port</code> to <code>connect.redis.port</code></li>\n<li>Rename ReThink <code>connect.rethink.source.host</code> to <code>connect.rethink.host</code></li>\n<li>Rename ReThink <code>connect.rethink.source.port</code> to <code>connect.rethink.port</code></li>\n<li>Rename ReThink <code>connect.rethink.source.db</code> to <code>connect.rethink.db</code></li>\n<li>Rename ReThink <code>connect.rethink.source.kcql</code> to <code>connect.rethink.kcql</code></li>\n<li>Rename ReThink Sink <code>connect.rethink.sink.host</code> to <code>connect.rethink.host</code></li>\n<li>Rename ReThink Sink <code>connect.rethink.sink.port</code> to <code>connect.rethink.port</code></li>\n<li>Rename ReThink Sink <code>connect.rethink.sink.db</code> to <code>connect.rethink.db</code></li>\n<li>Rename ReThink Sink <code>connect.rethink.sink.kcql</code> to <code>connect.rethink.kcql</code></li>\n<li>Rename JMS <code>connect.jms.user</code> to <code>connect.jms.username</code></li>\n<li>Rename JMS <code>connect.jms.source.converters</code> to <code>connect.jms.converters</code></li>\n<li>Remove JMS <code>connect.jms.converters</code> and replace my kcql <code>withConverters</code></li>\n<li>Remove JMS <code>connect.jms.queues</code> and replace my kcql <code>withType QUEUE</code></li>\n<li>Remove JMS <code>connect.jms.topics</code> and replace my kcql <code>withType TOPIC</code></li>\n<li>Rename Mqtt <code>connect.mqtt.source.kcql</code> to <code>connect.mqtt.kcql</code></li>\n<li>Rename Mqtt <code>connect.mqtt.user</code> to <code>connect.mqtt.username</code></li>\n<li>Rename Mqtt <code>connect.mqtt.hosts</code> to <code>connect.mqtt.connection.hosts</code></li>\n<li>Remove Mqtt <code>connect.mqtt.converters</code> and replace my kcql <code>withConverters</code></li>\n<li>Remove Mqtt <code>connect.mqtt.queues</code> and replace my kcql <code>withType=QUEUE</code></li>\n<li>Remove Mqtt <code>connect.mqtt.topics</code> and replace my kcql <code>withType=TOPIC</code></li>\n<li>Rename Hazelcast <code>connect.hazelcast.sink.kcql</code> to <code>connect.hazelcast.kcql</code></li>\n<li>Rename Hazelcast <code>connect.hazelcast.sink.group.name</code> to <code>connect.hazelcast.group.name</code></li>\n<li>Rename Hazelcast <code>connect.hazelcast.sink.group.password</code> to <code>connect.hazelcast.group.password</code></li>\n<li>Rename Hazelcast <code>connect.hazelcast.sink.cluster.members</code> tp <code>connect.hazelcast.cluster.members</code></li>\n<li>Rename Hazelcast <code>connect.hazelcast.sink.batch.size</code> to <code>connect.hazelcast.batch.size</code></li>\n<li>Rename Hazelcast <code>connect.hazelcast.sink.error.policy</code> to <code>connect.hazelcast.error.policy</code></li>\n<li>Rename Hazelcast <code>connect.hazelcast.sink.max.retries</code> to <code>connect.hazelcast.max.retries</code></li>\n<li>Rename Hazelcast <code>connect.hazelcast.sink.retry.interval</code> to <code>connect.hazelcast.retry.interval</code></li>\n<li>Rename VoltDB <code>connect.volt.sink.kcql</code> to <code>connect.volt.kcql</code></li>\n<li>Rename VoltDB <code>connect.volt.sink.connection.servers</code> to <code>connect.volt.servers</code></li>\n<li>Rename VoltDB <code>connect.volt.sink.connection.user</code> to <code>connect.volt.username</code></li>\n<li>Rename VoltDB <code>connect.volt.sink.connection.password</code> to <code>connect.volt.password</code></li>\n<li>Rename VoltDB <code>connect.volt.sink.error.policy</code> to <code>connect.volt.error.policy</code></li>\n<li>Rename VoltDB <code>connect.volt.sink.max.retries</code> to <code>connect.volt.max.retries</code></li>\n<li>Rename VoltDB <code>connect.volt.sink.retry.interval</code> to <code>connect.volt.retry.interval</code></li>\n</ul><p><strong>0.2.5 (8 Apr 2017)</strong></p>\n<ul><li>Added Azure DocumentDB Sink Connector</li>\n<li>Added JMS Source Connector.</li>\n<li>Added UPSERT to Elastic Search</li>\n<li>Support Confluent 3.2 and Kafka 0.10.2.</li>\n<li>Cassandra improvements <code>withunwrap</code></li>\n<li>Upgrade to Kudu 1.0 and CLI 1.0</li>\n<li>Add ingest_time to CoAP Source</li>\n<li>InfluxDB bug fixes for tags and field selection.</li>\n<li>Added Schemaless Json and Json with schema support to JMS Sink.</li>\n<li>Support for Cassandra data type of <code>timestamp</code> in the Cassandra Source for timestamp tracking.</li>\n</ul><p><strong>0.2.4</strong> (26 Jan 2017)</p>\n<ul><li>Added FTP and HTTP Source.</li>\n<li>Added InfluxDB tag support. KCQL: INSERT INTO targetdimension <code>SELECT * FROM influx-topic WITHTIMESTAMP sys_time() WITHTAG(field1, CONSTANT_KEY1=CONSTANT_VALUE1, field2,CONSTANT_KEY2=CONSTANT_VALUE1)</code></li>\n<li>Added InfluxDb consistency level. Default is <code>ALL</code>. Use <code>connect.influx.consistency.level</code> to set it to ONE/QUORUM/ALL/ANY</li>\n<li>InfluxDb <code>connect.influx.sink.route.query</code> was renamed to <code>connect.influx.sink.kcql</code></li>\n<li>Added support for multiple contact points in Cassandra</li>\n</ul><p><strong>0.2.3</strong> (5 Jan 2017)</p>\n<ul><li>Added CoAP Source and Sink.</li>\n<li>Added MongoDB Sink.</li>\n<li>Added MQTT Source.</li>\n<li>Hazelcast support for ring buffers.</li>\n<li>Redis support for Sorted Sets.</li>\n<li>Added start scripts.</li>\n<li>Added Kafka Connect and Schema Registry CLI.</li>\n<li>Kafka Connect CLI now supports pause/restart/resume; checking connectors on the classpath and validating configuration of connectors.</li>\n<li>Support for <code>Struct</code>, <code>Schema.STRING</code> and <code>Json</code> with schema in the Cassandra, ReThinkDB, InfluxDB and MongoDB sinks.</li>\n<li>Rename <code>export.query.route</code> to <code>sink.kcql</code>.</li>\n<li>Rename <code>import.query.route</code> to <code>source.kcql</code>.</li>\n<li>Upgrade to KCQL 0.9.5 - Add support for <code>STOREAS</code> so specify target sink types, e.g. Redis Sorted Sets, Hazelcast map, queues, ringbuffers.</li>\n</ul><h3><a id="user-content-building" class="anchor" aria-hidden="true" href="#building"></a>Building</h3>\n<p><em><strong>Requires gradle 3.0 to build.</strong></em></p>\n<p>To build</p>\n<div class="highlight highlight-source-shell"><pre>gradle compile</pre></div>\n<p>To test</p>\n<div class="highlight highlight-source-shell"><pre>gradle test</pre></div>\n<p>To create a fat jar</p>\n<div class="highlight highlight-source-shell"><pre>gradle shadowJar</pre></div>\n<p>You can also use the gradle wrapper</p>\n<pre>./gradlew shadowJar\n</pre>\n<p>To view dependency trees</p>\n<pre>gradle dependencies #\xa0or\ngradle :kafka-connect-cassandra:dependencies\n</pre>\n<p>To build a particular project</p>\n<pre>gradle :kafka-connect-elastic5:build\n</pre>\n<p>To create a jar of a particular project:</p>\n<pre>gradle :kafka-connect-elastic5:shadowJar\n</pre>\n<h2><a id="user-content-contributing" class="anchor" aria-hidden="true" href="#contributing"></a>Contributing</h2>\n<p>We\'d love to accept your contributions! Please use GitHub pull requests: fork the repo, develop and test your code,\n<a href="http://karma-runner.github.io/1.0/dev/git-commit-msg.html" rel="nofollow">semantically commit</a> and submit a pull request. Thanks!</p>\n</article>'},)
({'is_archived': 1, 'is_starred': 0, 'user_name': 'graphroot', 'user_email': '[email protected]', 'user_id': 1, 'is_public': False, 'id': '5', 'title': 'Hello DataStax Enterprise Graph', 'url': 'https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph', 'content_text': ' SlideShare Explore You Successfully reported this slideshow. Hello DataStax Enterprise Graph Upcoming SlideShare Loading in …5 × 0 Comments 1 Like Statistics Notes Eugene Necheporenko\n \n \n , \n Digital Professional\n \n \n at \n 585 GOLD No Downloads No notes for slide 1.\n Hello DSE Graph\nLets build a knowledge graph\nMarkus Höfer, codecentric AG\nDataStax Summit Europe 2016 2. 2\nWhat is this talk about? 3. 3\nKnowledge Graph\nWhat is the problem? 4. 4\n15 locations 5. 5\nMany customers 6. 6\n300+ employees 7. 7\nA lot of knowledge 8. 8\nResults in graph 9. 9\nHow can we answer the following questions?\n!\u202fWhich projects are currently running?\n!\u202fWhich employee has expertise in required fields and\ndoesn’t work for a project at the requested time?\n!\u202fWhich employees already worked for a customer?\n!\u202fWhich employees are currently not working for a\nproject?\n!\u202fWhich skills are requested most by customers? 10. 10\nImplementation 11. 11\nThe Setup 12. 12\nJava driver\n•\u202f Query execution very similar to "normal"\nDataStax Java Driver queries\nGraphResultSet executeGraph(String var1);\nGraphResultSet executeGraph(String var1, Map<String, Object> var2);\nGraphResultSet executeGraph(GraphStatement var1); 13. 13\nCreate a graph\nGraphResultSet resultSet = dseSession.executeGraph(\n"system.createGraph(name).ifNotExist().build()",\nImmutableMap.<String, Object> of("name", GRAPH_NAME)\n); 14. 14\nThe Schema\n// Vertex label\nschema.vertexLabel(\'employee\').ifNotExists().create()\nschema.vertexLabel(\'project\').ifNotExists().create()\n// Edge label\nschema.edgeLabel(\'worked_for\').ifNotExists().create()\n// Property keys\nschema.propertyKey(\'from\').Timestamp().ifNotExists().create()\nschema.propertyKey(\'name\').Text().ifNotExists().create() 15. 15\nIndexes\n// Materialized\nschema.vertexLabel(\'customer\').index(\'byName\')\n.materialized().by(\'name\').add()\n// Secondary\nschema.vertexLabel(\'employee\').index(\'byCity\')\n.secondary().by(\'city\').add()\n// Search\nschema.vertexLabel(‘project\').index(\'search\')\n.search().by(‘discription\').add() 16. 16\nInsert Data\ng.V().has(\'employee\', \'name\', \'Markus Höfer\')\n.tryNext().orElseGet {\ngraph.addVertex(\nlabel, \'employee\',\n\'name\', \'Markus Höfer\',\n\'geo\', POINT(51.926164 7.718504)\n)\n}\nAdd employee vertex 17. 17\nInsert Data\nAdd project vertex\ng.V().has(\'project\', \'name\', \'ProjectX\')\n.tryNext().orElseGet { graph.addVertex(\nlabel, \'project\',\n\'name\', \'ProjectX\'\n)\n} 18. 18\nAdd edge\ndef employee = g.V(employee_id).next()\ndef project = g.V(project_id).next()\nemployee.addEdge( \'worked_for\', project,\n\'from\', Instant.parse(\'2015-11-30T00:00:00.00Z\'),\n\'until\', Instant.parse(\'2016-11-30T00:00:00.00Z\')\n) 19. 19\nSubgraph looks like this 20. 20\nWorking with DataStax Studio 21. 21\nWorking with DataStax Studio\n•\u202f Markdown for\ndocumentation\n•\u202f Gremlin for schema and\ntraversal development 22. 22\nWorking with DataStax Studio\n•\u202f Schema aware content assist! 23. 23\nWorking with DataStax Studio\nProfiling\nWithout index\nWith materialized\nindex 24. 24\nThe Result 25. 25\nLooking back to our initial questions 26. 26\nWorking with DataStax Studio\nWhich skills are requested\nmost by customers?\ng.V().hasLabel(\'project\')\n.out(\'requires\').groupCount().by(\'name\')\n.order(local).by(valueDecr).limit(local,\n10) 27. 27\nWorking with DataStax Studio\nWhich employee has expertise in required fields and doesn‘t work for\na project at the requested time? 28. 28\nWorking with DataStax Studio\nWhich employees are currently not working for a project? 29. 29\nWhats next?\nAdd more connections, e.g.\n-\u202f Community events\n-\u202f Blog posts\n-\u202f Trainings\n-\u202f Geospatial traversals\n-\u202f etc 30. 30\nQuestions?\nMarkus Höfer\nIT Consultant\[email protected]\nwww.codecentric.de\nblog.codecentric.de/en\n#HashtagMarkus Recommended Communication in the 21st Century Classroom Online Course - LinkedIn Learning Creative Insights: Renaldo Lawrence on Elearning Online Course - LinkedIn Learning Learning to Write a Syllabus Online Course - LinkedIn Learning Enterprise knowledge graphs Sören Auer Enterprise Knowledge Graph Benjamin Raethlein 3800 die-bonder overview fastbr DataStax | Graph Computing with Apache TinkerPop (Marko Rodriguez) | Cassandr... DataStax Apache Cassandra and DataStax Enterprise Explained with Peter Halliday at Wil... DataStax Academy Introduction to DataStax Enterprise Graph Database DataStax Academy Webinar: DataStax Enterprise 6: 10 Ways to Multiply the Power of Apache Cassa... DataStax About Blog Terms Privacy Copyright LinkedIn Corporation © 2018 Public clipboards featuring this slide No public clipboards found for this slide Select another clipboard × Looks like you’ve clipped this slide to already. Create a clipboard You just clipped your first slide! Clipping is a handy way to collect important slides you want to go back to later. Now customize the name of a clipboard to store your clips. Description Visibility Others can see my Clipboard ', 'created_at': '2017-05-07T20:54:09Z', 'updated_at': '2018-07-20T01:13:40Z', 'published_by': 'DataStax', 'mimetype': 'text/html', 'language': 'en', 'reading_time': 3, 'domain_name': 'www.slideshare.net', 'preview_picture': 'https://cdn.slidesharecdn.com/ss_thumbnails/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413-thumbnail-4.jpg?cb=1463070934', 'http_status': 200, '_links': ['/api/entries/5'], 'content': 'Hello DataStax Enterprise Graph \n \n \n <div id="main-nav" class="contain-to-grid fixed"><p><a class="item" href="https://www.slideshare.net/" aria-labelledby="#home">\n \n </a><label id="home">SlideShare</label>\n \n <a class="item" href="https://www.slideshare.net/explore" aria-labelledby="#explore">\n <i class="fa fa-compass">\n </i></a><label id="explore">Explore</label>\n \n \n <a class="item" href="https://www.slideshare.net/login" aria-labelledby="#you">\n <i class="fa fa-user">\n </i></a><label id="you">You</label>\n </p></div>\n <div class="wrapper"><p>Successfully reported this slideshow.</p><div id="slideview-container" class=""><div class="row"><div id="main-panel" class="small-12 large-8 columns"><div class="sectionElements"><div class="playerWrapper"><div><div class="player lightPlayer fluidImage presentation_player" id="svPlayerId">Hello DataStax Enterprise Graph<div class="stage valign-first-slide"><div class="slide_container"><section data-index="1" class="slide show" itemprop="image"><img class="slide_image" src="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-1-638.jpg?cb=1463070934" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-1-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-1-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-1-1024.jpg?cb=1463070934" alt="Hello DSE Graph Lets build a knowledge graph Markus Höfer, codecentric AG DataStax Summit Europe 2016 " /></section><section data-index="2" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-2-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-2-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-2-1024.jpg?cb=1463070934" alt="2 What is this talk about? " /></i></section><section data-index="3" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-3-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-3-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-3-1024.jpg?cb=1463070934" alt="3 Knowledge Graph What is the problem? " /></i></section><section data-index="4" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-4-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-4-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-4-1024.jpg?cb=1463070934" alt="4 15 locations " /></i></section><section data-index="5" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-5-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-5-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-5-1024.jpg?cb=1463070934" alt="5 Many customers " /></i></section><section data-index="6" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-6-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-6-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-6-1024.jpg?cb=1463070934" alt="6 300+ employees " /></i></section><section data-index="7" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-7-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-7-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-7-1024.jpg?cb=1463070934" alt="7 A lot of knowledge " /></i></section><section data-index="8" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-8-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-8-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-8-1024.jpg?cb=1463070934" alt="8 Results in graph " /></i></section><section data-index="9" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-9-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-9-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-9-1024.jpg?cb=1463070934" alt="9 How can we answer the following questions? !\u202fWhich projects are currently running? !\u202fWhich employee has expertise in req..." /></i></section><section data-index="10" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-10-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-10-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-10-1024.jpg?cb=1463070934" alt="10 Implementation " /></i></section><section data-index="11" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-11-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-11-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-11-1024.jpg?cb=1463070934" alt="11 The Setup " /></i></section><section data-index="12" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-12-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-12-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-12-1024.jpg?cb=1463070934" alt="12 Java driver •\u202f Query execution very similar to "normal" DataStax Java Driver queries GraphResultSet executeGraph(String..." /></i></section><section data-index="13" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-13-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-13-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-13-1024.jpg?cb=1463070934" alt="13 Create a graph GraphResultSet resultSet = dseSession.executeGraph( "system.createGraph(name).ifNotExist().build()", Imm..." /></i></section><section data-index="14" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-14-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-14-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-14-1024.jpg?cb=1463070934" alt="14 The Schema // Vertex label schema.vertexLabel(\'employee\').ifNotExists().create() schema.vertexLabel(\'project\').ifNotExi..." /></i></section><section data-index="15" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-15-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-15-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-15-1024.jpg?cb=1463070934" alt="15 Indexes // Materialized schema.vertexLabel(\'customer\').index(\'byName\') .materialized().by(\'name\').add() // Secondary sc..." /></i></section><section data-index="16" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-16-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-16-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-16-1024.jpg?cb=1463070934" alt="16 Insert Data g.V().has(\'employee\', \'name\', \'Markus Höfer\') .tryNext().orElseGet { graph.addVertex( label, \'employee\', \'n..." /></i></section><section data-index="17" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-17-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-17-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-17-1024.jpg?cb=1463070934" alt="17 Insert Data Add project vertex g.V().has(\'project\', \'name\', \'ProjectX\') .tryNext().orElseGet { graph.addVertex( label, ..." /></i></section><section data-index="18" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-18-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-18-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-18-1024.jpg?cb=1463070934" alt="18 Add edge def employee = g.V(employee_id).next() def project = g.V(project_id).next() employee.addEdge( \'worked_for\', pr..." /></i></section><section data-index="19" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-19-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-19-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-19-1024.jpg?cb=1463070934" alt="19 Subgraph looks like this " /></i></section><section data-index="20" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-20-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-20-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-20-1024.jpg?cb=1463070934" alt="20 Working with DataStax Studio " /></i></section><section data-index="21" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-21-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-21-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-21-1024.jpg?cb=1463070934" alt="21 Working with DataStax Studio •\u202f Markdown for documentation •\u202f Gremlin for schema and traversal development " /></i></section><section data-index="22" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-22-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-22-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-22-1024.jpg?cb=1463070934" alt="22 Working with DataStax Studio •\u202f Schema aware content assist! " /></i></section><section data-index="23" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-23-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-23-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-23-1024.jpg?cb=1463070934" alt="23 Working with DataStax Studio Profiling Without index With materialized index " /></i></section><section data-index="24" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-24-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-24-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-24-1024.jpg?cb=1463070934" alt="24 The Result " /></i></section><section data-index="25" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-25-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-25-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-25-1024.jpg?cb=1463070934" alt="25 Looking back to our initial questions " /></i></section><section data-index="26" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-26-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-26-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-26-1024.jpg?cb=1463070934" alt="26 Working with DataStax Studio Which skills are requested most by customers? g.V().hasLabel(\'project\') .out(\'requires\').g..." /></i></section><section data-index="27" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-27-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-27-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-27-1024.jpg?cb=1463070934" alt="27 Working with DataStax Studio Which employee has expertise in required fields and doesn‘t work for a project at the reque..." /></i></section><section data-index="28" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-28-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-28-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-28-1024.jpg?cb=1463070934" alt="28 Working with DataStax Studio Which employees are currently not working for a project? " /></i></section><section data-index="29" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-29-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-29-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-29-1024.jpg?cb=1463070934" alt="29 Whats next? Add more connections, e.g. -\u202f Community events -\u202f Blog posts -\u202f Trainings -\u202f Geospatial traversals -\u202f etc " /></i></section><section data-index="30" class="slide"><i class="fa fa-spinner fa-spin"><img class="slide_image" src="https://www.slideshare.net/DataStax/hello-datastax-enterprise-graph" data-small="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/85/hello-datastax-enterprise-graph-30-320.jpg?cb=1463070934" data-normal="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-30-638.jpg?cb=1463070934" data-full="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-30-1024.jpg?cb=1463070934" alt="30 Questions? Markus Höfer IT Consultant [email protected] www.codecentric.de blog.codecentric.de/en #HashtagMa..." /></i></section><div class="j-next-container next-container"><div class="content-container"><div class="next-slideshow-wrapper"><div class="j-next-slideshow next-slideshow"><p>Upcoming SlideShare</p></div><p>Loading in …5</p><p>×</p></div></div></div></div></div></div></div></div></div><div class="slideshow-info-container" itemscope="itemscope" itemtype="https://schema.org/MediaObject"><div class="slideshow-tabs-container show-for-medium-up"><ul class="tabs" data-tab="" role="tablist"><li class="active" role="presentation">\n <a href="#comments-panel" role="tab" aria-selected="true" aria-controls="comments-panel">\n \n 0 Comments\n </a>\n </li>\n <li class="" role="presentation">\n <a href="#likes-panel" role="tab" aria-selected="false" aria-controls="likes-panel">\n <i class="fa fa-heart">\n \n 1 Like\n \n </i></a>\n </li>\n <li role="presentation">\n <a href="#stats-panel" class="j-stats-tab" role="tab" aria-selected="false" aria-controls="stats-panel">\n <i class="fa fa-bar-chart">\n Statistics\n </i></a>\n </li>\n <li role="presentation">\n <a href="#notes-panel" role="tab" aria-selected="false" aria-controls="notes-panel">\n <i class="fa fa-file-text">\n Notes\n </i></a>\n </li>\n </ul><div class="tabs-content"><div class="content" id="likes-panel" role="tabpanel" aria-hidden="false"><ul id="favsList" class="j-favs-list notranslate user-list no-bullet" itemtype="http://schema.org/UserLikes" itemscope="itemscope"><li itemtype="http://schema.org/Person" itemscope="itemscope">\n <div class="row"><div class="small-11 columns"><a class="favoriter notranslate" title="ssuserc70e92" rel="nofollow" href="https://www.slideshare.net/ssuserc70e92?utm_campaign=profiletracking&utm_medium=sssite&utm_source=ssslideshow">\n Eugene Necheporenko\n \n \n , \n Digital Professional\n \n \n at \n 585 GOLD\n \n \n \n </a></div></div>\n </li>\n </ul></div><div class="content" id="downloads-panel" role="tabpanel" aria-hidden="true"><p>No Downloads</p></div><div class="content" id="notes-panel" role="tabpanel" aria-hidden="true"><p>No notes for slide</p></div></div></div><div class="notranslate transcript add-padding-right j-transcript"><ol class="j-transcripts transcripts no-bullet no-style" itemprop="text"><li>\n 1.\n Hello DSE Graph\nLets build a knowledge graph\nMarkus Höfer, codecentric AG\nDataStax Summit Europe 2016\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-2-638.jpg?cb=1463070934" title="2 What is this talk about? " target="_blank">\n 2.\n </a>\n 2\nWhat is this talk about?\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-3-638.jpg?cb=1463070934" title="3 Knowledge Graph What is the problem? " target="_blank">\n 3.\n </a>\n 3\nKnowledge Graph\nWhat is the problem?\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-4-638.jpg?cb=1463070934" title="4 15 locations " target="_blank">\n 4.\n </a>\n 4\n15 locations\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-5-638.jpg?cb=1463070934" title="5 Many customers " target="_blank">\n 5.\n </a>\n 5\nMany customers\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-6-638.jpg?cb=1463070934" title="6 300+ employees " target="_blank">\n 6.\n </a>\n 6\n300+ employees\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-7-638.jpg?cb=1463070934" title="7 A lot of knowledge " target="_blank">\n 7.\n </a>\n 7\nA lot of knowledge\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-8-638.jpg?cb=1463070934" title="8 Results in graph " target="_blank">\n 8.\n </a>\n 8\nResults in graph\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-9-638.jpg?cb=1463070934" title="9 How can we answer the following questions? !\u202fWhich projec..." target="_blank">\n 9.\n </a>\n 9\nHow can we answer the following questions?\n!\u202fWhich projects are currently running?\n!\u202fWhich employee has expertise in required fields and\ndoesn’t work for a project at the requested time?\n!\u202fWhich employees already worked for a customer?\n!\u202fWhich employees are currently not working for a\nproject?\n!\u202fWhich skills are requested most by customers?\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-10-638.jpg?cb=1463070934" title="10 Implementation " target="_blank">\n 10.\n </a>\n 10\nImplementation\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-11-638.jpg?cb=1463070934" title="11 The Setup " target="_blank">\n 11.\n </a>\n 11\nThe Setup\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-12-638.jpg?cb=1463070934" title="12 Java driver •\u202f Query execution very similar to "normal" ..." target="_blank">\n 12.\n </a>\n 12\nJava driver\n•\u202f Query execution very similar to "normal"\nDataStax Java Driver queries\nGraphResultSet executeGraph(String var1);\nGraphResultSet executeGraph(String var1, Map<String, Object> var2);\nGraphResultSet executeGraph(GraphStatement var1);\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-13-638.jpg?cb=1463070934" title="13 Create a graph GraphResultSet resultSet = dseSession.exe..." target="_blank">\n 13.\n </a>\n 13\nCreate a graph\nGraphResultSet resultSet = dseSession.executeGraph(\n"system.createGraph(name).ifNotExist().build()",\nImmutableMap.<String, Object> of("name", GRAPH_NAME)\n);\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-14-638.jpg?cb=1463070934" title="14 The Schema // Vertex label schema.vertexLabel(\'employee\'..." target="_blank">\n 14.\n </a>\n 14\nThe Schema\n// Vertex label\nschema.vertexLabel(\'employee\').ifNotExists().create()\nschema.vertexLabel(\'project\').ifNotExists().create()\n// Edge label\nschema.edgeLabel(\'worked_for\').ifNotExists().create()\n// Property keys\nschema.propertyKey(\'from\').Timestamp().ifNotExists().create()\nschema.propertyKey(\'name\').Text().ifNotExists().create()\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-15-638.jpg?cb=1463070934" title="15 Indexes // Materialized schema.vertexLabel(\'customer\').i..." target="_blank">\n 15.\n </a>\n 15\nIndexes\n// Materialized\nschema.vertexLabel(\'customer\').index(\'byName\')\n.materialized().by(\'name\').add()\n// Secondary\nschema.vertexLabel(\'employee\').index(\'byCity\')\n.secondary().by(\'city\').add()\n// Search\nschema.vertexLabel(‘project\').index(\'search\')\n.search().by(‘discription\').add()\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-16-638.jpg?cb=1463070934" title="16 Insert Data g.V().has(\'employee\', \'name\', \'Markus Höfer\'..." target="_blank">\n 16.\n </a>\n 16\nInsert Data\ng.V().has(\'employee\', \'name\', \'Markus Höfer\')\n.tryNext().orElseGet {\ngraph.addVertex(\nlabel, \'employee\',\n\'name\', \'Markus Höfer\',\n\'geo\', POINT(51.926164 7.718504)\n)\n}\nAdd employee vertex\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-17-638.jpg?cb=1463070934" title="17 Insert Data Add project vertex g.V().has(\'project\', \'nam..." target="_blank">\n 17.\n </a>\n 17\nInsert Data\nAdd project vertex\ng.V().has(\'project\', \'name\', \'ProjectX\')\n.tryNext().orElseGet { graph.addVertex(\nlabel, \'project\',\n\'name\', \'ProjectX\'\n)\n}\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-18-638.jpg?cb=1463070934" title="18 Add edge def employee = g.V(employee_id).next() def proj..." target="_blank">\n 18.\n </a>\n 18\nAdd edge\ndef employee = g.V(employee_id).next()\ndef project = g.V(project_id).next()\nemployee.addEdge( \'worked_for\', project,\n\'from\', Instant.parse(\'2015-11-30T00:00:00.00Z\'),\n\'until\', Instant.parse(\'2016-11-30T00:00:00.00Z\')\n)\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-19-638.jpg?cb=1463070934" title="19 Subgraph looks like this " target="_blank">\n 19.\n </a>\n 19\nSubgraph looks like this\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-20-638.jpg?cb=1463070934" title="20 Working with DataStax Studio " target="_blank">\n 20.\n </a>\n 20\nWorking with DataStax Studio\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-21-638.jpg?cb=1463070934" title="21 Working with DataStax Studio •\u202f Markdown for documentati..." target="_blank">\n 21.\n </a>\n 21\nWorking with DataStax Studio\n•\u202f Markdown for\ndocumentation\n•\u202f Gremlin for schema and\ntraversal development\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-22-638.jpg?cb=1463070934" title="22 Working with DataStax Studio •\u202f Schema aware content ass..." target="_blank">\n 22.\n </a>\n 22\nWorking with DataStax Studio\n•\u202f Schema aware content assist!\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-23-638.jpg?cb=1463070934" title="23 Working with DataStax Studio Profiling Without index With..." target="_blank">\n 23.\n </a>\n 23\nWorking with DataStax Studio\nProfiling\nWithout index\nWith materialized\nindex\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-24-638.jpg?cb=1463070934" title="24 The Result " target="_blank">\n 24.\n </a>\n 24\nThe Result\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-25-638.jpg?cb=1463070934" title="25 Looking back to our initial questions " target="_blank">\n 25.\n </a>\n 25\nLooking back to our initial questions\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-26-638.jpg?cb=1463070934" title="26 Working with DataStax Studio Which skills are requested ..." target="_blank">\n 26.\n </a>\n 26\nWorking with DataStax Studio\nWhich skills are requested\nmost by customers?\ng.V().hasLabel(\'project\')\n.out(\'requires\').groupCount().by(\'name\')\n.order(local).by(valueDecr).limit(local,\n10)\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-27-638.jpg?cb=1463070934" title="27 Working with DataStax Studio Which employee has expertis..." target="_blank">\n 27.\n </a>\n 27\nWorking with DataStax Studio\nWhich employee has expertise in required fields and doesn‘t work for\na project at the requested time?\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-28-638.jpg?cb=1463070934" title="28 Working with DataStax Studio Which employees are current..." target="_blank">\n 28.\n </a>\n 28\nWorking with DataStax Studio\nWhich employees are currently not working for a project?\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-29-638.jpg?cb=1463070934" title="29 Whats next? Add more connections, e.g. -\u202f Community even..." target="_blank">\n 29.\n </a>\n 29\nWhats next?\nAdd more connections, e.g.\n-\u202f Community events\n-\u202f Blog posts\n-\u202f Trainings\n-\u202f Geospatial traversals\n-\u202f etc\n \n </li>\n <li>\n <a href="https://image.slidesharecdn.com/jizg8hxvq2go5uurpusf-signature-d40beb11e1b33b450258566b2d743b69605d31e2e69e7187ff58eba46821549d-poli-160512163413/95/hello-datastax-enterprise-graph-30-638.jpg?cb=1463070934" title="30 Questions? Markus Höfer IT Consultant markus.hoefer@code..." target="_blank">\n 30.\n </a>\n 30\nQuestions?\nMarkus Höfer\nIT Consultant\[email protected]\nwww.codecentric.de\nblog.codecentric.de/en\n#HashtagMarkus\n \n </li>\n </ol></div></div></div><aside id="side-panel" class="small-12 large-4 columns j-related-more-tab"><dl class="tabs related-tabs small" data-tab=""><dd class="active">\n <a href="#related-tab-content" data-ga-cat="bigfoot_slideview" data-ga-action="relatedslideshows_tab">\n Recommended\n </a>\n </dd>\n</dl><div class="tabs-content"><ul id="related-tab-content" class="content active no-bullet notranslate"><li class="lynda-item">\n <a data-ssid="61956156" title="Communication in the 21st Century Classroom" href="https://www.linkedin.com/learning/communication-in-the-21st-century-classroom?trk=slideshare_sv_learning" data-ga-cat="sv_loggedout" data-ga-label="lil_rec_Communication in the 21st Century Classroom" data-ga-action="click">\n <div class="lynda-thumbnail"><img class="j-thumbnail j-lazy-thumb" alt="Communication in the 21st Century Classroom" src="https://www.linkedin.com/media-proxy/ext?w=1200&h=675&hash=jpGZZw5ymAXBiG%2B8nbN88R%2BVVZo%3D&ora=1%2CaFBCTXdkRmpGL2lvQUFBPQ%2CxAVta5g-0R6plxVUzgUv5K_PrkC9q0RIUJDPBy-lWCWq_defZHTpecDdZLSiol4QfyoDlg00fuutSDPoEo69LcLmY4Yx3A" /></div>\n <div class="lynda-content"><p>Communication in the 21st Century Classroom</p><p>Online Course - LinkedIn Learning</p></div>\n </a>\n</li>\n <li class="lynda-item">\n <a data-ssid="61956156" title="Creative Insights: Renaldo Lawrence on Elearning" href="https://www.linkedin.com/learning/creative-insights-renaldo-lawrence-on-elearning?trk=slideshare_sv_learning" data-ga-cat="sv_loggedout" data-ga-label="lil_rec_Creative Insights: Renaldo Lawrence on Elearning" data-ga-action="click">\n <div class="lynda-thumbnail"><img class="j-thumbnail j-lazy-thumb" alt="Creative Insights: Renaldo Lawrence on Elearning" src="https://www.linkedin.com/media-proxy/ext?w=1200&h=675&hash=ug5jeowEfnyQ7I5IVmcyuEIdaWk%3D&ora=1%2CaFBCTXdkRmpGL2lvQUFBPQ%2CxAVta5g-0R6plxVUzgUv5K_PrkC9q0RIUJDPBy-iXCSv_tGfY3DofMPbZLSioVsSfiwIlgIzfOirSTjgEY69LcLmY4Yx3A" /></div>\n <div class="lynda-content"><p>Creative Insights: Renaldo Lawrence on Elearning</p><p>Online Course - LinkedIn Learning</p></div>\n </a>\n</li>\n <li class="lynda-item">\n <a data-ssid="61956156" title="Learning to Write a Syllabus" href="https://www.linkedin.com/learning/learning-to-write-a-syllabus?trk=slideshare_sv_learning" data-ga-cat="sv_loggedout" data-ga-label="lil_rec_Learning to Write a Syllabus" data-ga-action="click">\n <div class="lynda-thumbnail"><img class="j-thumbnail j-lazy-thumb" alt="Learning to Write a Syllabus" src="https://www.linkedin.com/media-proxy/ext?w=1200&h=675&hash=G9ihy3kZ3fW%2FNM2bPpGdopMCRdQ%3D&ora=1%2CaFBCTXdkRmpGL2lvQUFBPQ%2CxAVta5g-0R6plxVUzgUv5K_PrkC9q0RIUJDPBy-lXCai8t2fZHDqcc_XZLSiol0Rei4AkQw3eeyqQjPnFI69LcLmY4Yx3A" /></div>\n <div class="lynda-content"><p>Learning to Write a Syllabus</p><p>Online Course - LinkedIn Learning</p></div>\n </a>\n</li>\n <li class="j-related-item">\n <a data-ssid="66007184" data-algo-id="21" data-source-name="BROWSEMAP" data-source-model="21" data-urn-type="Slideshow" data-score="1" class="j-related-impression slideview_related_item j-recommendation-tracking" title="Enterprise knowledge graphs" href="https://www.slideshare.net/soeren1611/enterprise-knowledge-graphs">\n \n <div class="related-content"><p>Enterprise knowledge graphs</p><p>Sören Auer</p></div>\n </a>\n</li>\n <li class="j-related-item">\n <a data-ssid="56858153" data-algo-id="21" data-source-name="BROWSEMAP" data-source-model="21" data-urn-type="Slideshow" data-score="1" class="j-related-impression slideview_related_item j-recommendation-tracking" title="Enterprise Knowledge Graph" href="https://www.slideshare.net/BenjaminRaethlein/enterprise-knowledge-graph-56858153">\n \n <div class="related-content"><p>Enterprise Knowledge Graph</p><p>Benjamin Raethlein</p></div>\n </a>\n</li>\n <li class="j-related-item">\n <a data-ssid="47794799" data-algo-id="21" data-source-name="BROWSEMAP" data-source-model="21" data-urn-type="Slideshow" data-score="1" class="j-related-impression slideview_related_item j-recommendation-tracking" title="3800 die-bonder overview" href="https://www.slideshare.net/fastbr/3800-diebonder-overview">\n \n <div class="related-content"><p>3800 die-bonder overview</p><p>fastbr</p></div>\n </a>\n</li>\n <li class="j-related-item">\n <a data-ssid="66524084" data-algo-id="21" data-source-name="BROWSEMAP" data-source-model="21" data-urn-type="Slideshow" data-score="1" class="j-related-impression slideview_related_item j-recommendation-tracking" title="DataStax | Graph Computing with Apache TinkerPop (Marko Rodriguez) | Cassandra Summit 2016" href="https://www.slideshare.net/DataStax/datastax-graph-computing-with-apache-tinkerpop-marko-rodriguez-cassandra-summit-2016">\n \n <div class="related-content"><p>DataStax | Graph Computing with Apache TinkerPop (Marko Rodriguez) | Cassandr...</p><p>DataStax</p></div>\n </a>\n</li>\n <li class="j-related-item">\n <a data-ssid="41914543" data-algo-id="21" data-source-name="BROWSEMAP" data-source-model="21" data-urn-type="Slideshow" data-score="1" class="j-related-impression slideview_related_item j-recommendation-tracking" title="Apache Cassandra and DataStax Enterprise Explained with Peter Halliday at WildHacks NU" href="https://www.slideshare.net/planetcassandra/apache-cassandra-and-datastax-enterprise-explained-with-peter-halliday-at-wildhacks-nu">\n \n <div class="related-content"><p>Apache Cassandra and DataStax Enterprise Explained with Peter Halliday at Wil...</p><p>DataStax Academy</p></div>\n </a>\n</li>\n <li class="j-related-item">\n <a data-ssid="64947458" data-algo-id="21" data-source-name="BROWSEMAP" data-source-model="21" data-urn-type="Slideshow" data-score="1" class="j-related-impression slideview_related_item j-recommendation-tracking" title="Introduction to DataStax Enterprise Graph Database" href="https://www.slideshare.net/planetcassandra/introduction-to-datastax-enterprise-graph-database">\n \n <div class="related-content"><p>Introduction to DataStax Enterprise Graph Database</p><p>DataStax Academy</p></div>\n </a>\n</li>\n <li class="j-related-item">\n <a data-ssid="95288307" data-algo-id="" data-source-name="MORE_FROM_USER" data-source-model="" data-urn-type="Slideshow" data-score="" class="j-related-impression slideview_related_item j-recommendation-tracking" title="Webinar: DataStax Enterprise 6: 10 Ways to Multiply the Power of Apache Cassandra™ Without the Complexity" href="https://www.slideshare.net/DataStax/webinar-datastax-enterprise-6-10-ways-to-multiply-the-power-of-apache-cassandra-without-the-complexity-95288307">\n \n <div class="related-content"><p>Webinar: DataStax Enterprise 6: 10 Ways to Multiply the Power of Apache Cassa...</p><p>DataStax</p></div>\n </a>\n</li>\n </ul></div>\n </aside></div></div><footer>\n <div class="row"><div class="columns"><ul class="main-links text-center"><li><a href="https://www.slideshare.net/about">About</a></li>\n \n <li><a href="http://blog.slideshare.net/">Blog</a></li>\n <li><a href="https://www.slideshare.net/terms">Terms</a></li>\n <li><a href="https://www.slideshare.net/privacy">Privacy</a></li>\n <li><a href="http://www.linkedin.com/legal/copyright-policy">Copyright</a></li>\n \n </ul></div></div>\n \n <div class="row"><div class="columns"><p class="copyright text-center">LinkedIn Corporation © 2018</p></div></div>\n </footer></div>\n \n <div class="modal_popup_container"><div id="top-clipboards-modal" class="reveal-modal xlarge top-clipboards-modal" data-reveal="" aria-labelledby="modal-title" aria-hidden="true" role="dialog"><h4 class="modal-title">Public clipboards featuring this slide</h4><hr /><p>No public clipboards found for this slide</p></div><div id="select-clipboard-modal" class="reveal-modal medium" data-reveal="" aria-labelledby="modal-title" aria-hidden="true" role="dialog" translate="no"><p></p><h4 class="modal-title">Select another clipboard</h4>\n <hr /><a class="close-reveal-modal button-lrg" href="#" aria-label="Close">×</a><div class="modal-content"><div class="default-clipboard-panel radius"><p>Looks like you’ve clipped this slide to <strong class="default-clipboard-title"> already.</strong></p></div><div class="clipboard-list-container"><div class="clipboard-create-new"><p>Create a clipboard</p></div></div></div></div><div id="clipboard-create-modal" class="reveal-modal medium" data-reveal="" aria-labelledby="modal-title" aria-hidden="true" role="dialog" translate="no"><p></p><h3>You just clipped your first slide!</h3>\n \n Clipping is a handy way to collect important slides you want to go back to later. Now customize the name of a clipboard to store your clips.<h4 class="modal-title" id="modal-title">\n \n <label>Description\n \n </label></h4></div>\n <div class="row"><label>Visibility\n <small id="privacy-switch-description">Others can see my Clipboard</small>\n </label><label for="privacy-switch">\n </label></div>\n \n </div>\n \n \n <noscript>\n </noscript>'},)
({'is_archived': 1, 'is_starred': 0, 'user_name': 'graphroot', 'user_email': '[email protected]', 'user_id': 1, 'is_public': False, 'id': '7', 'title': 'agcorrea/cassandra-csv', 'url': 'https://github.com/agcorrea/cassandra-csv', 'content': '<h3>\n \n README.md\n </h3><article class="markdown-body entry-content" itemprop="text">\n<p>Simple utility java class to import data from a csv file directly to Cassandra using Spark SQL</p>\n<pre>ImportCsv.start(csc)\n // csv path\n .read("cassandra-csv/src/main/resources/example.csv")\n // csv structure\n .schema(schema)\n // options from spark-csv package. see https://github.com/databricks/spark-csv\n .option("header", "true")\n // select expression to be applied on csv data frame\n .selectExpr("id", "type AS transaction_type", "value")\n // keyspace and table name\n .saveToCassandra("my_keyspace", "my_table");\n</pre>\n<p>Based on package <a href="https://github.com/databricks/spark-csv">https://github.com/databricks/spark-csv</a>.</p>\n</article>', 'content_text': 'README.md Simple utility java class to import data from a csv file directly to Cassandra using Spark SQL ImportCsv.start(csc)\n // csv path\n .read("cassandra-csv/src/main/resources/example.csv")\n // csv structure\n .schema(schema)\n // options from spark-csv package. see https://github.com/databricks/spark-csv\n .option("header", "true")\n // select expression to be applied on csv data frame\n .selectExpr("id", "type AS transaction_type", "value")\n // keyspace and table name\n .saveToCassandra("my_keyspace", "my_table"); Based on package https://github.com/databricks/spark-csv . ', 'created_at': '2017-05-03T02:23:27Z', 'updated_at': '2018-07-20T01:13:36Z', 'mimetype': 'text/html', 'language': 'en', 'reading_time': 0, 'domain_name': 'github.com', 'preview_picture': 'https://avatars3.githubusercontent.com/u/4535123?s=400&v=4', 'http_status': 200, '_links': ['/api/entries/7']},)