Top Banner
ElasticLINQ Bringing the Power of LINQ to NoSQL for .NET Developers http://bit.ly/BradsTalks https://github.com/bradwilson
15

ElasticLINQ: Bringing the Power of LINQ to NoSQL …bradwilson.io/presentations/content/ElasticLINQ.pdf · ElasticLINQ Bringing the Power of LINQ to NoSQL for .NET Developers ...

Sep 20, 2018

Download

Documents

dominh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: ElasticLINQ: Bringing the Power of LINQ to NoSQL …bradwilson.io/presentations/content/ElasticLINQ.pdf · ElasticLINQ Bringing the Power of LINQ to NoSQL for .NET Developers ...

ElasticLINQ Bringing the Power of LINQ

to NoSQL for .NET Developers

http://bit.ly/BradsTalks

https://github.com/bradwilson

Page 2: ElasticLINQ: Bringing the Power of LINQ to NoSQL …bradwilson.io/presentations/content/ElasticLINQ.pdf · ElasticLINQ Bringing the Power of LINQ to NoSQL for .NET Developers ...

Comparing SQL and

NoSQL Document Stores

O Flat tables

O Normalization

O Strong relationships

O Centralized

O Scale vertically

O ACID

O Known quantity

O (Usually) expensive

O Complex documents

O De-normalized

O Weak relationships

O Distributed

O Scale horizontally

O Usually not ACID

O New to most people

O (Usually) open source

Use the best tools for the job

Page 3: ElasticLINQ: Bringing the Power of LINQ to NoSQL …bradwilson.io/presentations/content/ElasticLINQ.pdf · ElasticLINQ Bringing the Power of LINQ to NoSQL for .NET Developers ...

Considerations When Moving

to a Document Store

O Documents ~= domains

O Typically the concurrency granularity

O Extra round trip for relationships

O Be careful of payload size

O Ad-hoc reporting can be challenging

O Some document stores offer map/reduce

O 3rd party data aggregation & reporting

O Replicate counted/reported data into SQL

Page 4: ElasticLINQ: Bringing the Power of LINQ to NoSQL …bradwilson.io/presentations/content/ElasticLINQ.pdf · ElasticLINQ Bringing the Power of LINQ to NoSQL for .NET Developers ...

Why Elasticsearch?

O Search: full text & facets (uses Lucene)

O DB integration, or use it stand-alone

O Built for the web O Simple HTTP-based API

O JSON is a first class citizen

O Dynamic schema support

O Low-friction sharding and replication

O Lots of great documentation

O Available support contracts

http://www.elasticsearch.[org|com]/

Page 5: ElasticLINQ: Bringing the Power of LINQ to NoSQL …bradwilson.io/presentations/content/ElasticLINQ.pdf · ElasticLINQ Bringing the Power of LINQ to NoSQL for .NET Developers ...

Execution Pipeline

Query/Score

Filter

Facets

Paging

Page 6: ElasticLINQ: Bringing the Power of LINQ to NoSQL …bradwilson.io/presentations/content/ElasticLINQ.pdf · ElasticLINQ Bringing the Power of LINQ to NoSQL for .NET Developers ...
Page 7: ElasticLINQ: Bringing the Power of LINQ to NoSQL …bradwilson.io/presentations/content/ElasticLINQ.pdf · ElasticLINQ Bringing the Power of LINQ to NoSQL for .NET Developers ...

Why ElasticLINQ?

O JSON query language is challenging

O Automatic mapping of CLR JSON

O Because it’s LINQ:

O Composition & inspection

O Deferred execution

O Easier to adapt when moving from SQL

O Use the data models you already have

https://github.com/CenturyLinkCloud/ElasticLINQ

Page 8: ElasticLINQ: Bringing the Power of LINQ to NoSQL …bradwilson.io/presentations/content/ElasticLINQ.pdf · ElasticLINQ Bringing the Power of LINQ to NoSQL for .NET Developers ...
Page 9: ElasticLINQ: Bringing the Power of LINQ to NoSQL …bradwilson.io/presentations/content/ElasticLINQ.pdf · ElasticLINQ Bringing the Power of LINQ to NoSQL for .NET Developers ...

Why Couchbase?

O Capable of massive scale

O Tens of thousands of users

O Billions of documents

O Cross-data center replication

O Automatic sharding and replication

O Views: Javascript-based map/reduce

O Integrates well with Elasticsearch

O Open source & commercial options

http://www.couchbase.com/

Page 10: ElasticLINQ: Bringing the Power of LINQ to NoSQL …bradwilson.io/presentations/content/ElasticLINQ.pdf · ElasticLINQ Bringing the Power of LINQ to NoSQL for .NET Developers ...

Why Use Couchbase

With Elasticsearch?

O Couchbase:

Document storage & retrieval

O No searching, just retrieval by index (and range)

O Plugin support is limited

O Elasticsearch:

Industrial-strength indexing

O Does not offer map/reduce transformation

O Does not do cross-data center replication

Extremely complementary technologies

Page 11: ElasticLINQ: Bringing the Power of LINQ to NoSQL …bradwilson.io/presentations/content/ElasticLINQ.pdf · ElasticLINQ Bringing the Power of LINQ to NoSQL for .NET Developers ...

Strategy: Type Key

{

"type": "beer",

"name": "Feral Saison",

"abv": 6.7,

"ibu": 30,

...

}

{

"type": "brewery",

"name": "Black Raven",

"city": "Redmond",

"state": "WA",

...

}

Can run afoul of Elasticsearch schema

Page 12: ElasticLINQ: Bringing the Power of LINQ to NoSQL …bradwilson.io/presentations/content/ElasticLINQ.pdf · ElasticLINQ Bringing the Power of LINQ to NoSQL for .NET Developers ...

Strategy: Type Wrapper

{

"beer": {

"name": "Feral Saison",

"abv": 8.9,

"ibu": 30,

...

}

}

{

"brewery": {

"name": "Black Raven",

"city": "Redmond",

"state": "WA",

...

}

}

Requires wrapping and unwrapping documents

Page 13: ElasticLINQ: Bringing the Power of LINQ to NoSQL …bradwilson.io/presentations/content/ElasticLINQ.pdf · ElasticLINQ Bringing the Power of LINQ to NoSQL for .NET Developers ...
Page 14: ElasticLINQ: Bringing the Power of LINQ to NoSQL …bradwilson.io/presentations/content/ElasticLINQ.pdf · ElasticLINQ Bringing the Power of LINQ to NoSQL for .NET Developers ...

What’s Next?

O Explore Elasticsearch and Couchbase

O CenturyLink Cloud is good for this

O Try ElasticLINQ on your data sets

O Lots of holes to be filled

O Custom search extensions

O Contribute

O Docs, bugs, and code are always welcome!

Page 15: ElasticLINQ: Bringing the Power of LINQ to NoSQL …bradwilson.io/presentations/content/ElasticLINQ.pdf · ElasticLINQ Bringing the Power of LINQ to NoSQL for .NET Developers ...

Thank You! http://bit.ly/BradsTalks

https://github.com/bradwilson