Upload
antonio-castellon
View
288
Download
0
Embed Size (px)
Citation preview
By Antonio Castellón (as Blue-Infinity consultant) , February, 2014
for Philip Morris International R&D
CIKB Software Architecture Design Proposal
Problem : Data Complex
Problem : Data Complex to Model
Problem : Dynamic Data ( Uncertainty )
End User requirements and data itself sometimes generate different types of uncertainty
Problem : GUI - User experience
I’m not stupid but …. this interface
is too complicated !!!
Problem : GUI - Adaptable + Flexible
Problem : GUI – Technology + Design
Be careful with awesome solutions that not fit design and engineering at the same time
“The Solution” is a mix of 4 …
“The Solution” - Is a mix of …
An Architecture
A set of Data
A cool User Interface
And a mad developer to do it (joke)
“The Solution” – Brick 1
An Architecture
Architecture – we aim to
• Reduce the complexity• To be reusable• Easy in deployment• Allows dynamic updates• To be adaptive• Fast in responses• Low memory profile• To provide security• …
Architecture – The response
Architecture – The response
Open Service Gateway initiative
Defines the standard.
Architecture – OSGi supported by
Architecture – OSGi implemented by …
. . .
Architecture – In summary, OSGi goals are …
Service Oriented + Modular (bundles)
Bundle (x)
Service (x’)
Service (y)
Service (x)
Architecture – OSGi : Simple overview
Console Logging Admin …
Web ServerWAB
Application 1
WAB Application
2…
Application Service 1
Application Service 2 …
…
OSGi Instance 1
JVM
…
Bundles to be developed for us
Bundles to be installed
A set of Data
“The Solution” – Brick 2
Data
NoSQL( Not Only SQL )
Data – NoSQL – Different implementations
Data - NoSQL – Comparing data structure
Image from: http://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/
Data - NoSQL – Compare
98% of the business requirements
There is still billions of nodes and relationships
Data – Our selection
Graph Databases
Data – Graph Databases – Why?
Flexible data structureDoesn’t matter if the relations will change in the future.
Closer match to business logic
Data – Graph Databases – Why?
Natural query system You tell what you want, not how to get it.
with recursive cluster (party, path, depth) as ( select cast(@userId as character varying), cast(@userId as character varying), 1 union ( select (case when this.party = amc.userA then amc.userB when this.party = amc.userB then amc.userA end), (this.path || '.' || (case when this.party = amc.userA then amc.userB when this.party = amc.userB then amc.userA end)), this.depth + 1 from cluster this, chat amc where ((this.party = amc.userA and position(amc.userB in this.path) = 0) or (this.party = amc.userB and position(amc.userA in this.path) = 0)) AND this.depth < @depth + 1 ) ) select party, path from cluster where not exists ( select * from cluster c2 where cluster.party = c2.party and ( char_length(cluster.path) > char_length(c2.path) or (char_length(cluster.path) = char_length(c2.path)) and (cluster.path > c2.path) ) ) order by party, path;
SQL = several hours to be executed
VS
START b = node:User(UserId=‘Manolo') MATCH (b) --(friend)--(friendoffriend) RETURN count(friendoffriend)
Cypher Language = 635ms
Data - Graph Databases – Why?
Fits very well with complex data
Data - Graph Databases – Why?
Fits very well with Bio-Informatics
0.9 Billion relationsips
Data – Graph Databases – Why?
Fast Prototyping and developmentWe don’t need to lose too much time to define the schema (fine-grained).
Data - Graph Databases – What is it?
Properties
Labels
Relationships
Data - Graph Databases - Implemented by …
Data - Graph Databases - Compare
Name API Query Methods
Consistency Staff (people) / Community
OrientDB Java Traverser API, Blueprints, Rexster
Own SQL-like Query Language, Gremlin
ACID, MVCC 3 / Low
Neo4j Java, Python, JPython, Ruby, JRuby, JavaScript (Node.js), PHP, .NET, Django, Clojure, Spring, Scala, or REST (any language)
Cypher (native/preferred), Native Java APIs (special cases), Traverser API, REST, Blueprints, Gremlin
ACID 42 / Very High
DEX Java, C++, .NET
Native Java, C# and C++ APIs, Blueprints, Gremlin
Consistency, durability and partial isolation and atomicity
5 / ?
Data - Graph Databases – Compare
Data - Graph Databases - Neo4j customers
Data - Graph Database - Neo4j - Partners
Data - Graph Database - Neo4j - Licenses
“The Solution” – Brick 3
A cool User Interface
GUI
+
GUI
UI Graphs
Model / View / Controller ( on Browser using Jscript )
JAX-RS (RESTful web services) JSON responses
On OSGi bundle as a webservice
On Browser client
Data Driven Documents
GUI - AngularJS – What is it?
RESTful+
JSON
GUI - D3.js – What is it?
GUI - D3.js – Rich and cool interfaces
GUI - Examples
GUI - Licenses
No requires any payment to use or to modify their code.
“The Solution” – The last brick
At least a mad developer to do it (joke)
Architecture – Current draft
KARAF :: OSGi kernel platform
Shell admin web admin console
ServiceMix (Optional) :: Enterprise Service Bus
Groovy 2.2.1 Runtime
Jetty Server 8.1.9 Runtime
CIK
B
Neo4j 2.0.0 Server
Core ( Business )
Database connector
CVS connector
SAW connector
LIMS connector
User Portal
UCSD Connector
XML Connector
AngularJS + D3.js
…Admin Portal
…
Thanks you for your attention.
End