Factors influencing the database selection for B 2
Factors influencing the database selection for B 2 C web applications. Master Thesis Kick-Off Presentation Al-Saeedi, Bilal | 30. 11. 2015 Software Engineering for Business Information Systems (sebis) Department of Informatics Technische Universität München, Germany wwwmatthes. in. tum. de
Agenda 1 2 3 Introduction Research Approach Road Plan Motivation ? Research questions ? Research plan ? Present what has been done ? Progress ? Future plan ? 140122 Matthes Slides sebis 2014 © sebis 2
Introduction – Motivation NOSQL Databases 140122 Matthes Slides sebis 2014 Relational DBMS © sebis 3
Introduction – Research Questions What are the influencing factors for the selection of a database for a B 2 C application ? What are the challenges in terms of query expressiveness and complexity of the database ? What are the benefits and shortcomings of the database in terms of B 2 C application scenarios ? 140122 Matthes Slides sebis 2014 © sebis 5
Research Approach • DB selection • Constructs identification • Use cases identification • Literature review • Use cases implementation • Results documentation 140122 Matthes Slides sebis 2014 © sebis 6
Databases Selection Maturity Popularity Reliability Open Source Support 140122 Matthes Slides sebis 2014 Community Strength Availability Scalability © sebis 7
Databases Selection Database Categories Key-Value Document Based Column Based Redis Riak Memcached …. . . Mongo. DB Couchbase Cloudant …. . . Cassandra HBase Accumulo …. . . 140122 Matthes Slides sebis 2014 Graph Neo 4 j Titan Orient. DB …. . . Full Text Search Engines Elasticsearch Apache Solr Base. X …. . . © sebis RDBMS My. SQL Postgres Oracle …. . . 9
Constructs Introduction Basic Features Data Modeling Searching Data Special Features Administration and Maintenance Installability Query Language Data Layout Full Text Search Support Any Database Specific Features Basic Concepts Transaction Support Relational Data Support Regular Expressions Support Scalability Possible Use cases Pipeline Support Referential Integrity Query Options Persistence, and ACID Support Normalization Indexing Handling failure Data Evolution Queries Backup and Upgrade Nested Data Support Filtering and Grouping data Security Sorting Availability Configuration Data migration 140122 Matthes Slides sebis 2014 © sebis 10
B 2 C Use Cases Redis Mongo. DB Cassandra • Session Management. • Cart Management. • Cache Service. • Login, Cart, and Products Analytics Service. • Users Management. • Shipping Management • Product Review & Wish list Management • History Data. • Product & Category Management. • Analytics Service • Logging Service 140122 Matthes Slides sebis 2014 Neo 4 j • Recommendations System. Elastic. Search • Product Search. © sebis My. SQL • Finance (orders & payments) • Inventory Management. 11
Constructs – Redis Introduction Basic Features Data Modeling Searching Data Special Features Administration and Maintenance Installability Query Language Data Layout Full Text Search Support Pub/Sub Support Configuration Basic Concepts Transaction Support Relational Data Support Regular Expressions Support Expire Scalability Possible Use cases Pipeline Support Referential Integrity Query Options Configuring as a cache Persistence, and ACID Support Normalization Indexing Lua Scripting Handling failure Data Evolution Queries Backup and Upgrade Nested Data Support Filtering and Grouping data Security Sorting Availability Data migration 140122 Matthes Slides sebis 2014 © sebis 13
Redis – Basic Concepts http: //www. slideshare. net/dvirsky/kicking-ass-with-redis 140122 Matthes Slides sebis 2014 © sebis 14
Redis – Transaction Support Watch/Unwatch Multi/Exec 140122 Matthes Slides sebis 2014 Discard © sebis 16
Redis – Relational Data Support (Hash) Customer 1 Orders: customer. ID Orders: payment. ID Set (order. IDs) * (Hash) Order * 1 (Hash) Payment * Orders: shipping. ID Shippings: order. ID Set (order. IDs) Set (shipping. IDs) * (Hash) Shipping 140122 Matthes Slides sebis 2014 © sebis 18
Redis – Relational Data Support Submit an order Get all customer Shippings 140122 Matthes Slides sebis 2014 © sebis 19
Redis – Indexing Primary Index Key Products: Product. ID Primary Index Hash { “SKU”: “sku”, “Name”: ”Product. Name”, “Color”: “Product. Color” , “Price”: “Product. Price” } Secondary Index Product. Color. Index: Product. Color Set {Product. IDs} Product. Price. Index Sorted Set {Product. IDs , Price} Composite Index Product. Category. Price. Index Sorted Set {Category. ID: Price: Product. ID, 0} Retrieval 140122 Matthes Slides sebis 2014 © sebis 22
Redis – Filtering, Grouping and Sorting Group Data Product. Manufacture. Index: Company. Name Set {Product. IDs} Product. Color. Index: Product. Color Set {Product. IDs} Filter Data Sorting Data SORT command sorts lists, sets, and sorted sets 140122 Matthes Slides sebis 2014 © sebis 23
Redis – Use Cases Implementations ü ü ü Cart Management Service Session Management Service Cache Service Analytics Service Other Redis Examples: ü Inspect Data Structures ü Job Queue. ü Handling Data Relation ü Pipeline Support ü Transaction Support Code: https: //github. com/alronz/B 2 C-Database-Selection-Implementations Documentation: https: //github. com/alronz/b 2 c-database-selection 140122 Matthes Slides sebis 2014 © sebis 28
Road Plan Sep Oct Nov Dec Jan Feb March DB selection Constructs identification Use cases implementation Documenting results Writing of Thesis Report Start Complete Today Ongoing 140122 Matthes Slides sebis 2014 Not Started End Revising © sebis 29
Thank you for your attention! Bilal Al-Saeedi MSc. Informatics Student Technische Universität München Department of Informatics Chair of Software Engineering for Business Information Systems Boltzmannstraße 3 85748 Garching bei München rose@in. tum. de wwwmatthes. in. tum. de
Backup slides 140122 Matthes Slides sebis 2014 © sebis 3
Constructs – Redis Introduction Basic Features Data Modeling Searching Data Special Features Administration and Maintenance Installability Query Language Data Layout Full Text Search Support Pub/Sub Support Configuration Basic Concepts Transaction Support Relational Data Support Regular Expressions Support Expire Scalability Possible Use cases Pipeline Support Referential Integrity Query Options Configuring as a cache Persistence, and ACID Support Normalization Indexing Lua Scripting Handling failure Data Evolution Queries Backup and Upgrade Nested Data Support Filtering and Grouping data Security Sorting Availability Data migration 140122 Matthes Slides sebis 2014 © sebis 13
Databases Selection – Key-Value • • Built-in persistence support. Vey fast in-memory database Variety of storage data types. Open source 140122 Matthes Slides sebis 2014 © sebis 3
Databases Selection – Document-Based • JSON-like storage format named BSON • Great features such as ad hoc queries, Indexing, sharding, etc. • Easy to use and has great community • Open source 140122 Matthes Slides sebis 2014 © sebis 3
Databases Selection – Column-Based • • Open source SQL-Like Query language called CQL Decentralized, no single point of failure Great community 140122 Matthes Slides sebis 2014 © sebis 3
Databases Selection - Graph • Supports a powerful and easy to use graph query language called Cypher. • Support complex data modeling. • Open source • Great community 140122 Matthes Slides sebis 2014 © sebis 3
Databases Selection – Full Search Engine • • Scalable Map/Reduce model Memory efficient and fast. Open source Great community 140122 Matthes Slides sebis 2014 © sebis 3
Databases Selection - RDBMS • • • Relational Database System Client/Server Architecture SQL compatibility Open source RDBMS Great community 140122 Matthes Slides sebis 2014 © sebis 3
Introduction – Research Questions System product quality model—ISO/IEC 9126. 140122 Matthes Slides sebis 2014 © sebis 4
Databases Selection http: //db-engines. com/ 140122 Matthes Slides sebis 2014 Magic Quadrant for Operational DBMS © sebis 8
Constructs – Redis Introduction Basic Features Data Modeling Searching Data Special Features Administration and Maintenance Installability Query Language Data Layout Full Text Search Support Pub/Sub Support Configuration Basic Concepts Transaction Support Relational Data Support Regular Expressions Support Expire Scalability Possible Use cases Pipeline Support Referential Integrity Query Options Configuring as a cache Persistence, and ACID Support Normalization Indexing Lua Scripting Handling failure Data Evolution Queries Backup and Upgrade Nested Data Support Filtering and Grouping data Security Sorting Availability Data migration 140122 Matthes Slides sebis 2014 © sebis 13
Constructs – Redis Introduction Basic Features Data Modeling Searching Data Special Features Administration and Maintenance Installability Query language Data Layout Full Text Search Support Pub/Sub Support Configuration Basic Concepts Transaction Support Relational Data Support Regular Expressions Support Expire Scalability Possible Use cases Pipeline Support Referential Integrity Query Options Configuring as a cache Persistence, and ACID Support Normalization Indexing Lua Scripting Handling failure Data Evolution Queries Backup and Upgrade Nested Data Support Filtering and Grouping data Security Sorting Availability Data migration 140122 Matthes Slides sebis 2014 © sebis 15
Constructs – Redis Introduction Basic Features Data Modeling Searching Data Special Features Administration and Maintenance Installability Query language Data Layout Full Text Search Support Pub/Sub Support Configuration Basic Concepts Transaction Support Relational Data Support Regular Expressions Support Expire Scalability Possible Use cases Pipeline Support Referential Integrity Query Options Configuring as a cache Persistence, and ACID Support Normalization Indexing Lua Scripting Handling failure Data Evolution Queries Backup and Upgrade Nested Data Support Filtering and Grouping data Security Sorting Availability Data migration 140122 Matthes Slides sebis 2014 © sebis 21
Constructs – Redis Introduction Basic Features Data Modeling Searching Data Special Features Administration and Maintenance Installability Query language Data Layout Full Text Search Support Pub/Sub Support Configuration Basic Concepts Transaction Support Relational Data Support Regular Expressions Support Expire Scalability Possible Use cases Pipeline Support Referential Integrity Query Options Configuring as a cache Persistence, and ACID Support Normalization Indexing Lua Scripting Handling failure Data Evolution Queries Backup and Upgrade Nested Data Support Filtering and Grouping data Security Sorting Availability Data migration 140122 Matthes Slides sebis 2014 © sebis 17
Constructs – Redis Introduction Basic Features Data Modeling Searching Data Special Features Administration and Maintenance Installability Query language Data Layout Full Text Search Support Pub/Sub Support Configuration Basic Concepts Transaction Support Relational Data Support Regular Expressions Support Expire Scalability Possible Use cases Pipeline Support Referential Integrity Query Options Configuring as a cache Persistence, and ACID Support Normalization Indexing Lua Scripting Handling failure Data Evolution Queries Backup and Upgrade Nested Data Support Filtering and Grouping data Security Sorting Availability Data migration 140122 Matthes Slides sebis 2014 © sebis 24
Constructs – Redis Introduction Basic Features Data Modeling Searching Data Special Features Administration and Maintenance Installability Query language Data Layout Full Text Search Support Pub/Sub Support Configuration Basic Concepts Transaction Support Relational Data Support Regular Expressions Support Expire Scalability Possible Use cases Pipeline Support Referential Integrity Query Options Configuring as a cache Persistence, and ACID Support Normalization Indexing Lua Scripting Handling failure Data Evolution Queries Backup and Upgrade Nested Data Support Filtering and Grouping data Security Sorting Availability Data migration 140122 Matthes Slides sebis 2014 © sebis 26
Redis – Relational Data Support Difference Union Join 140122 Matthes Slides sebis 2014 © sebis 20
Redis – Configuration & Persistence Configuration • Can be started without configuration file. • Redis configuration is in redis. confi , format confugiration. Key. Word argument 1 argument 2. . . argument. N • Configured also using command line. /redis-server --port 6380 --slaveof 127. 0. 0. 1 6379 • Configuration on the fly without restarts CONFIG SET SAVE "900 1 300 10" Persistence • Snapshotting or RDB Persistence • Periodically and with condition save 100 50 / BGSAVE • Append-Only File or AOF Persistence appendonly yes / BGREWRITEAOF • fsync every , fsync every second , Never fsync every for full durability 140122 Matthes Slides sebis 2014 © sebis 27
Redis – Expire Set. Ex 140122 Matthes Slides sebis 2014 © sebis 25
Redis – Configuration • Can be started without configuration file. • Redis configuration is in redis. confi , format confugiration. Key. Word argument 1 argument 2. . . argument. N • Configured also using command line. /redis-server --port 6380 --slaveof 127. 0. 0. 1 6379 • Configuration on the fly without restarts CONFIG SET SAVE "900 1 300 10" 140122 Matthes Slides sebis 2014 © sebis 27
Redis – Indexing Primary Index Key Products: Product. ID Primary Index Hash { “SKU”: “sku”, “Name”: ”Product. Name”, “Color”: “Product. Color” , “Price”: “Product. Price” } Secondary Index Product. Color. Index: Product. Color Set {Product. IDs} Product. Price. Index Sorted Set {Product. IDs , Price} Composite Index Product. Category. Price. Index Sorted Set {Category. ID: Price: Product. ID, 0} Retrieval 140122 Matthes Slides sebis 2014 © sebis 22
- Slides: 40