Code Examples (The Basics)


Add mishmash io to your project:

$ npm install mishmash-io

Import and instantiate:

const Mishmash = require('mishmash-io')

mishmash = new Mishmash()

You are now connected and mishmash 'holds' all your data as if it was in local memory of your app.

There is no API or framework beyond the simple use of 'local' to your app 'mishmash' variables.

To store data, just assign values, arrays and objects to properties of a mishmash variable:

mishmash.myObjects[] = {
  "a": 42,
  "b": "a lazy dog",
  "c": [obj1, obj2]
}

That's it, your data is stored and available for later use under mishmash.myObjects.

As a database mishmash io has no schema. It just uses whatever 'schema' you created by organizing and storing your data.

To pull data into your app just loop over a mishmash variable:

for (o in mishmash.myObjects) {
  if (o.a === 42) {
    // do something
  }
}

The body of the for loop will now operate on your app server with data arriving from the mishmash io cluster. This though will only run at the speed of your app server and network.

To make your code faster than that see the advanced examples below.


Code Examples (Advanced)


When building 'mishmashes' - those portions of the data that your code needs to work on - you don't have to strictly follow the hierarchy of properties, members and indexes that you created when you stored the data.

To simplify work, you can grab them at any level:

mishmash_b = mishmash.b
mishmash_dogs = 
  mishmash['a lazy dog']

And you build mishmashes by putting together, or slicing completely unrelated branches of your data:

mishmash_cake = mishmash(
  'chocolate','bananas')
mishmash_coffee = 
  mishmash.coffees.black

There's much more that you can do to build mishmashes - scroll down to find out more.

To get to super fast execution of complex logic don't pull data, push code to the mishmash io cluster:

mishmash.myObjects(
  function(input) {
    for (o in input) {
      if (o.a === 42) {
        // do something complex
      }
    }
  }
)

The supplied function will now be automatically optimized and 'executed' in parallel across all cluster nodes that have portions of myObjects and any other input.

The code is transformed into a 'parallel' equivalent by combining syntax analysis and knowledge of input data.

Learn mishmash io through examples.

We developed a little app that analyzes football data to automatically find interesting statistics about the next match.

The details on how we did it are a great place to get started with mishmash io.

More in-depth examples will be added soon.

Follow us on Social Media where we will also publish material on topics like algorithms, Machine Learning, AI and more.


The inner workings of mishmash io


mishmash io is a distributed database (DBMS) of a new kind - specifically designed to handle complex, algorithmic queries with speed.

It scales easily to thousands of computers and the more data-driven logic you push to it - the more it will speed up your app.

As a starting point in larning how mishmash io achieves it - take a look at the architecture.

Data stored in mishmash io is not organized into keys, values, tables, graphs, etc. It is broken down into seemingly unrelated chunks (also called 'mishmashes') whose purpose is to allow maximum parallelism for code that will operate on them.

All mishmashes are also scattered around cluster nodes so that more of them can work simultaneously on a given algorithm.

Most importantly, this way of organizing data gives mishmash io the ability to answer, in linear time, questions like:

  • which mishmashes add up to the set of fruits?
  • which sets split fruits?
  • ...into near-equal in size parts?
  • ...whitout overlapping?

and many more...

When application code is pushed to mishmash io:

  • its syntax is analyzed to determine how input data affects its branches, states and outcomes. This forms an understanding of all possible alternative ways of solving the same problem.
  • advanced logic then chooses the combination of input mishmashes that corresponds to the 'most parallel' alternative.
  • original code is transformed into 'parallel' pieces for each of the input mishmashes
  • pieces of code are distributed to nodes that handle corresponding mishmashes

Take a look at this very simple example on how mishmash io parallelizes automatically.


Features


No data model or schema

Your application logic doesn't need models or schemas - it needs objects, arrays, maps, etc.

Completely opaque database

All your data is available as if it was in variables within local memory of your application.

No query language

The query language is your application development language - Python, JavaScript, Java, Ruby, etc.

No frameworks, no APIs

Use the same for, if, etc statements and expressions you're already familiar with.

Massively parallel

Parallelizes your application code automatically and runs it across many nodes for near-real-time performance.

Handles arbitrary complexity

Write entire algorithms to explore similarity and 'likely' equality, to extract patterns, predict outcomes and many more - and build them directly in your app.


Why use mishmash io?


Build smart, predictive features for your app:

Just like Google, Facebook, Amazon and other big companies do...

But use the skills you already have:

You only need to be a software developer.

  • Handle massive amounts of data
  • Explore patterns in real-time
  • Develop predictive algorithms
  • Compute at scale and with speed
  • Give your users the features of the future!

One thing is obvious today - we're entering a new era in computing and software development: the era of Big Data, Machine Learning and AI. And their applications across industries are so broad that it is difficult to list all the reasons why.

You can find some suggestions though on our case studies page.

And you can contact us - we promise to come up with ideas for you, perhaps too many! :)