forked from cadencedata/cadencedata.github.io
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
217 lines (217 loc) · 13 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
<!DOCTYPE html>
<html lang="en">
<head>
<title>Cadence</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="tachyons.min.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body class="georgia">
<main class="pa3 pa4-ns cover bg-yellow black-80 vh-100">
<div class="measure-wide pa3 pa4-ns mt7-ns mt3 v-mid">
<h3 class="f-headline-ns f1-m f2 measure-wide avenir mb0 mt4">Cadence</h3>
<h3 class="f2-ns f3-m f4 fw4 measure-wide">Let your data scientists do data science.</h3>
<div>
<a href="#features" class="black-80 fw5 ph3 pv2 link ttu tracked avenir ba bw1 b--black-70 bg-transparent pointer f6 dim dib">Learn more</a>
<a href="#contact" class="black-80 mt1 fw5 ph3 pv2 link ttu tracked avenir ba bw1 b--black-70 bg-transparent pointer f6 dim dib">Request a demo</a>
</div>
</div>
</main>
<main class="cf ph3 ph5-ns pb5 bg-light-green black-70"><a id="features" name="features"></a>
<div class="mw9 center">
<h1 class="fl w-100 mt5 f5 ttu tracked fw6 avenir">Features</h1>
<article class="pv2 fl w-100 ">
<h2 class="f4 f1-ns fw6 mb2 avenir">Make your data work for you — not vice versa.</h2>
<p class="f5 f4-ns measure lh-copy mt0">How do you handle constantly-changing data sources writing to different database nodes? <a class="link hover-black black-70 underline" href="#contact">Use Cadence to safely schedule and reliably perform</a> your data pulls and ETL operations.</p>
</article>
<div class="cf">
<article class="pv2 fl w-100 w-50-l pr0 pr2-l">
<h2 class="f4 f2-ns fw6 mb2 avenir">Job scheduling</h2>
<p class="f5 measure lh-copy mt0"> Use Cadence's intuitive scheduling interface to quickly set up complex triggers for your data operations. No need to learn and configure Airflow or other complicated scheduling packages. Cadence can intelligently modify your schedule to avoid data corruption and maximize throughput.
</p>
</article>
<article class="pv2 fl w-100 w-50-l pl0 pl2-l">
<h2 class="f4 f2-ns fw6 mb2 avenir">Distributed execution</h2>
<p class="f5 measure lh-copy mt0">Choose which hardware you want each job to run on — Cadence will spin up the machine of your choice, load your supporting libraries, execute your job, and clean up afterwards.
</p>
</article>
</div>
<div class="cf">
<article class="pv2 fl w-100 w-50-l pr0 pr2-l">
<h2 class="f4 f2-ns fw6 mb2 avenir">Monitoring</h2>
<p class="f5 measure lh-copy mt0">Track the health of your jobs — if they're failing, Cadence provides error logs to help you debug quickly. If asked, Cadence will learn your jobs' write patterns and can notify you of subtle data errors that might not otherwise raise execution errors.</p>
</article>
<article class="pv2 fl w-100 w-50-l pl0 pl2-l">
<h2 class="f4 f2-ns fw6 mb2 avenir">Hooks</h2>
<p class="f5 measure lh-copy mt0">Cadence lets you define SQL hooks into your data targets. You can pull your data into your desired analysis environment with the hook you defined simply by hitting an API endpoint. Cadence even allows you to parametrize hooks for greater flexibility.</p>
</article>
</div>
</div>
</main>
<main class="cf ph3 ph5-ns pb5 bg-washed-red black-70"><a id="workflow" name="workflow"></a>
<div class="mw9 center">
<h1 class="fl w-100 mt5 f5 ttu tracked fw6 avenir">Workflow</h1>
<article class="pv2 fl w-100 ">
<h2 class="f4 f1-ns fw6 mb2 avenir">Build models, not infrastructure.</h2>
<p class="f5 f4-ns measure lh-copy mt0">Don't waste your data science team's time — let us <a class="link hover-black black-70 underline" href="#contact">turn months of engineering into an afternoon's project</a>.</p>
</article>
<div class="cf">
<article class="pv2 fl w-100 w-50-l pr0 pr2-l">
<h2 class="f4 f2-ns fw6 mb2 avenir"><span class="black-30">1</span> Register data targets</h2>
<p class="f5 measure lh-copy mt0">Register the database nodes and database tables (data targets) that your jobs will operate on. In most cases, this is as easy as providing a connection string.
</p>
</article>
<article class="pv2 fl w-100 w-50-l pr0 pr2-l">
<h2 class="f4 f2-ns fw6 mb2 avenir"><span class="black-30">2</span> Upload kits</h2>
<p class="f5 measure lh-copy mt0">A kit is a zipped folder containing your data operations code and any necessary supporting libraries. Upload your kits through the Cadence interface.
</p>
</article>
</div>
<div class="cf">
<article class="pv2 fl w-100 w-50-l pr0 pr2-l">
<h2 class="f4 f2-ns fw6 mb2 avenir"><span class="black-30">3</span> Schedule jobs</h2>
<p class="f5 measure lh-copy mt0">Once you have kits, define and schedule jobs to execute your code. To create a job, you supply a <span class="code">cdnc.sh</span> file, the schedule to run the job, and the hardware that should be provisioned. You can also specify inter-job dependencies and enable advanced health checks.
</p>
</article>
<article class="pv2 fl w-100 w-50-l pr0 pr2-l">
<h2 class="f4 f2-ns fw6 mb2 avenir"><span class="black-30">4</span> Monitor results</h2>
<p class="f5 measure lh-copy mt0">As your jobs are run, the Cadence dashboard displays the health of each of your jobs. The dashboard shows the output your jobs produce to enable easy debugging. Additionally, Cadence can notify you of subtler data errors based on that job's previous activity.
</p>
</article>
</div>
<div class="cf">
<article class="pv2 fl w-100 w-50-l pr0 pr2-l">
<h2 class="f4 f2-ns fw6 mb2 avenir"><span class="black-30">5</span> Define hooks</h2>
<p class="f5 measure lh-copy mt0">Through the Cadence interface, provide a SQL snippet that acts on a certain target, and we'll give you an API endpoint to return the result of that query as a CSV or JSON file. This step is optional -- you can directly query your data targets with SQL, of course.
</p>
</article>
<article class="pv2 fl w-100 w-50-l pr0 pr2-l">
<h2 class="f4 f2-ns fw6 mb2 avenir"><span class="black-30">6</span> Build models</h2>
<p class="f5 measure lh-copy mt0">Congratulations! You can now query your data targets with your hooks or directly in SQL. Relax — your data scientists can take it from here :-)
</p>
</article>
</div>
</div>
</main>
<main class="cf ph3 ph5-ns pb5 bg-light-blue black-70">
<div class="mw9 center">
<h1 class="fl w-100 mt5 f5 ttu tracked fw6 avenir">Security</h1>
<article class="pv2 fl w-100 ">
<h2 class="f4 f1-ns fw6 mb2 avenir">Choose tools that watch your back.</h2>
<p class="f5 f4-ns measure lh-copy mt0">Fine-tune Cadence's access level to each of your data targets. Your data is always stored on your own instances, and all your sensitive metadata that we're required to store is encrypted.</p>
</article>
<div class="cf">
<article class="pv2 fl w-100 w-50-l pr0 pr2-l">
<h2 class="f4 f2-ns fw6 mb2 avenir">Safety</h2>
<ul class="list pl0 measure">
<li class="lh-copy pv3 ba bl-0 bt-0 br-0 b--dotted b--black-30">Implicit dependency inference prevents concurrent writes</li>
<li class="lh-copy pv3 ba bl-0 bt-0 br-0 b--dotted b--black-30">Intelligent monitoring discovers abnormal events</li>
<li class="lh-copy pv3 ba bl-0 bt-0 br-0 b--dotted b--black-30">Dependency cascade halts execution to avoid data corruption</li>
</ul>
</article>
<article class="pv2 fl w-100 w-50-l pr0 pr2-l">
<h2 class="f4 f2-ns fw6 mb2 avenir">Privacy</h2>
<ul class="list pl0 measure">
<li class="lh-copy pv3 ba bl-0 bt-0 br-0 b--dotted b--black-30">Data is always stored on your own instances</li>
<li class="lh-copy pv3 ba bl-0 bt-0 br-0 b--dotted b--black-30">Access credentials are encrypted on our servers</li>
<li class="lh-copy pv3 ba bl-0 bt-0 br-0 b--dotted b--black-30">Job environment variables can be encrypted</li>
</ul>
</article>
</div>
</div>
</main>
<main class="cf ph3 ph5-ns pb5 bg-light-yellow black-70"><a id="contact" name="contact"></a>
<div class="mw9 center">
<h1 class="fl w-100 mt5 f5 ttu tracked fw6 avenir">Get in touch</h1>
<article class="pv2 fl w-100 ">
<h2 class="f4 f1-ns fw6 mb2 avenir">Interested? Let's talk.</h2>
<p class="f5 f4-ns measure lh-copy mt0">Whether you just use data for business intelligence or data is your core competency, Cadence can save your business time and money. All inquiries are strictly confidential.</p>
</article>
<div class="cf">
<article class="pv2 fl w-100 pr0 pr2-l">
<style type="text/css">
::placeholder {
color: #444;
font-style: italic;
}
</style>
<form class="" id="contactform" action="https://getsimpleform.com/messages?form_api_token=59a12ddee385c083d41bfdec7fceff49" method="POST">
<input type="hidden" name="redirect_to" value="http://cdnc.co">
<fieldset class="cf bn ma0 pa0">
<div class="measure">
<input class="f5 f4-l input-reset fl near-black bg-light-yellow ph0 pv3 lh-solid w-100 bn georgia " placeholder="Your name" type="text" name="your-name" value="" id="your-name">
<input class="f5 f4-l input-reset fl near-black bg-light-yellow ph0 pv3 lh-solid w-100 bn georgia " placeholder="Email address" type="email" name="email-address" value="" id="email-address">
<input class="f5 f4-l input-reset fl near-black bg-light-yellow ph0 pv3 lh-solid w-100 bn georgia " placeholder="Company name" type="text" name="company-name" value="" light-yellow="company-name">
<textarea class="f5 f4-l input-reset fl near-black bg-light-yellow ph0 pv3 lh-solid w-100 bn georgia" name="message" id="message" form="contactform" placeholder="Message (optional)"></textarea>
<input class="black-70 fw5 ph3 pv2 link ttu tracked avenir ba bw1 b--black-70 bg-transparent pointer f6 dim dib" type="submit" value="Get in touch">
</div>
</fieldset>
</form>
</article>
</div>
</div>
</main>
<main class="cf ph3 ph5-ns pb5 bg-near-black white-20">
<div class="mw9 center">
<h1 class="fl w-100 mt5 f5 ttu tracked fw5 avenir">Miscellaneous</h1>
<div class="cf">
<article class="pv2 fl w-100 w-50-l pr0 pr2-l">
<p class="f6 f5-ns measure lh-copy mt0">Copyright © 2018 Cadence Data. All rights reserved.</p>
<p class="f7 f6-ns measure lh-copy mt0">Any data you submit to us through the above form is for internal use only and will never be shared, released, or otherwise published withour your consent. Your inquiry is confidential.</p>
</article>
<article class="pv2 fl w-100 w-50-l pr0 pr2-l">
<p class="f6 f5-ns measure lh-copy mt0">Follow us on Twitter <a class="link hover-white-40 white-20" href="http://twitter.com/CadenceData">@CadenceData</a>.</p>
<p class="f7 f6-ns measure lh-copy mt0">We use cookies to personalize content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners who may combine it with other information you’ve provided to them or they’ve collected from your use of their services.</p>
</article>
</div>
</div>
</main>
<script type="text/javascript">
// Select all links with hashes
$('a[href*="#"]')
// Remove links that don't actually link to anything
.not('[href="#"]')
.not('[href="#0"]')
.click(function(event) {
// On-page links
if (
location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '')
&&
location.hostname == this.hostname
) {
// Figure out element to scroll to
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
// Does a scroll target exist?
if (target.length) {
// Only prevent default if animation is actually gonna happen
event.preventDefault();
$('html, body').animate({
scrollTop: target.offset().top
}, 1000, function() {
// Callback after animation
// Must change focus!
var $target = $(target);
$target.focus();
if ($target.is(":focus")) { // Checking if the target was focused
return false;
} else {
$target.attr('tabindex','-1'); // Adding tabindex for elements not focusable
$target.focus(); // Set focus again
};
});
}
}
});
</script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-115153817-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-115153817-1');
</script>
<!-- End Google Analytics -->
</body>
</html>