We have been discussing MongoDB improvements in catalog management. Let us recap quickly the initiatives taken by MongoDB and how it is different from a regular Master Data Management. Specifically, we can compare it with MDM from Riversand which we discussed earlier:
Comparisions
MongoDB:
- organizes Catalog as a one stop shop in its store
-- no sub-catalogs or fragmentation or ETL or MessageBus
- equally available to Application servers, API data and services and webservers.
- also available behind the store for supply chain management and data warehouse analytics
- catalog available for browsing as well as searching via Lucene search index
- geo-sharding with persisted shard ids or more granular store ids for improving high availability and horizontal scalability
- local real-time writes and tuned for read-dominated workload
- bulk writes for refresh
- RelationalDB stores point in time loads while overnight they are pushed to catalog information management and made available for real-time views
- NoSQL powers insight and analytics based on aggregations
- provides front-end data store for real time queries and aggregations from applications.
- comes with incredible monitoring and scaling
Both MDM and MongoDB Catalog store hierarchy and facet in addition to Item and SKUs as a way of organizing items.
Riversand MDM
- rebuildable catalog via change data capture
- .Net powered comprehensive web services
- data as a service model
- Reliance on traditional relational databases only
#codingexercise
Find if one binary tree is a subtree of another
boolean IsSubTree (Node root1, Node root2)
{
Var original = new List <Node>();
Var sequence = new List <Node>();
Inorder (root1, ref original);
Inorder (root2, ref sequence);
return original.Intersect (sequence).equals (sequence);
}
4
2 6
1 35 7
InOrder : 1 2 3 4 5 6 7
Caveat this works for 2,3,4 but for 2,4,6 we need the sequence equals method on the intersection.
bool isEqual(Node root1, Node root2)
{
if (root1 == NULL && root2 == NULL) return true;
if (root1 == NULL) return false;
if (root2 == NULL) return false;
return root1.data == root2.data && isEqual(root1.left, root2.left) && isEqual(root1.right, root2.right);
}
Note that we cannot apply the isEqual solution as the isSubtree alternative because the subtree may not be a leaf in the original.
Comparisions
MongoDB:
- organizes Catalog as a one stop shop in its store
-- no sub-catalogs or fragmentation or ETL or MessageBus
- equally available to Application servers, API data and services and webservers.
- also available behind the store for supply chain management and data warehouse analytics
- catalog available for browsing as well as searching via Lucene search index
- geo-sharding with persisted shard ids or more granular store ids for improving high availability and horizontal scalability
- local real-time writes and tuned for read-dominated workload
- bulk writes for refresh
- RelationalDB stores point in time loads while overnight they are pushed to catalog information management and made available for real-time views
- NoSQL powers insight and analytics based on aggregations
- provides front-end data store for real time queries and aggregations from applications.
- comes with incredible monitoring and scaling
Both MDM and MongoDB Catalog store hierarchy and facet in addition to Item and SKUs as a way of organizing items.
Riversand MDM
- rebuildable catalog via change data capture
- .Net powered comprehensive web services
- data as a service model
- Reliance on traditional relational databases only
#codingexercise
Find if one binary tree is a subtree of another
boolean IsSubTree (Node root1, Node root2)
{
Var original = new List <Node>();
Var sequence = new List <Node>();
Inorder (root1, ref original);
Inorder (root2, ref sequence);
return original.Intersect (sequence).equals (sequence);
}
4
2 6
1 35 7
InOrder : 1 2 3 4 5 6 7
Caveat this works for 2,3,4 but for 2,4,6 we need the sequence equals method on the intersection.
bool isEqual(Node root1, Node root2)
{
if (root1 == NULL && root2 == NULL) return true;
if (root1 == NULL) return false;
if (root2 == NULL) return false;
return root1.data == root2.data && isEqual(root1.left, root2.left) && isEqual(root1.right, root2.right);
}
Note that we cannot apply the isEqual solution as the isSubtree alternative because the subtree may not be a leaf in the original.
No comments:
Post a Comment