[
https://issues.apache.org/jira/browse/PIO-96?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mars Hall updated PIO-96:
-------------------------
Description:
When getting started with PredictionIO, it's no problem to spin up an engine
and see it work. Problems emerge when a developer tries running multiple
engines with different storage configs on the same underlying database, such as:
* a Classifier with *Postgres* meta, event, & model storage, and
* the Universal Recommender with *Elasticsearch* meta plus *Postgres* event &
model storage.
The database will become corrupt because the meta tables are stored in
different databases, but the dynamically created event & model tables may
mistakenly share the same name, like {{pio_event_1}}.
We are directing folks to avoid this problem with the Heroku buildpack by
[isolating each engine's
database|https://github.com/heroku/predictionio-buildpack/blob/master/CUSTOM.md#provision-the-database]
and [optionally running an eventserver per
engine|https://github.com/heroku/predictionio-buildpack/blob/master/CUSTOM.md#user-content-eventserver].
It's still a problem with local development, though.
It would be great if PredictionIO's management of the database schema's would
inherently avoid such conflicts, like by using random/UUIDs for dynamically
created table names, so that they will never conflict.
was:
When getting started with PredictionIO, it's no problem to spin up an engine
and see it work. Problems emerge when a developer tries running multiple
engines with different storage configs on the same underlying database, such as:
* a Classifier with *Postgres* meta, event, & model storage, and
* the Universal Recommender with *Elasticsearch* meta plus *Postgres* event &
model storage.
The database will become corrupt because the meta tables are stored in
different databases, but the dynamically created event & storage tables may
mistakenly share the same name, like {{pio_event_1}}.
We are directing folks to avoid this problem with the Heroku buildpack by
[isolating each engine's
database|https://github.com/heroku/predictionio-buildpack/blob/master/CUSTOM.md#provision-the-database]
and [optionally running an eventserver per
engine|https://github.com/heroku/predictionio-buildpack/blob/master/CUSTOM.md#user-content-eventserver].
It's still a problem with local development, though.
It would be great if PredictionIO's management of the database schema's would
inherently avoid such conflicts, like by using random/UUIDs for dynamically
created table names, so that they will never conflict.
> Storage corrupted by sharing databases between engines with different storage
> configs
> -------------------------------------------------------------------------------------
>
> Key: PIO-96
> URL: https://issues.apache.org/jira/browse/PIO-96
> Project: PredictionIO
> Issue Type: Bug
> Components: Core
> Affects Versions: 0.11.0-incubating
> Reporter: Mars Hall
>
> When getting started with PredictionIO, it's no problem to spin up an engine
> and see it work. Problems emerge when a developer tries running multiple
> engines with different storage configs on the same underlying database, such
> as:
> * a Classifier with *Postgres* meta, event, & model storage, and
> * the Universal Recommender with *Elasticsearch* meta plus *Postgres* event &
> model storage.
> The database will become corrupt because the meta tables are stored in
> different databases, but the dynamically created event & model tables may
> mistakenly share the same name, like {{pio_event_1}}.
> We are directing folks to avoid this problem with the Heroku buildpack by
> [isolating each engine's
> database|https://github.com/heroku/predictionio-buildpack/blob/master/CUSTOM.md#provision-the-database]
> and [optionally running an eventserver per
> engine|https://github.com/heroku/predictionio-buildpack/blob/master/CUSTOM.md#user-content-eventserver].
> It's still a problem with local development, though.
> It would be great if PredictionIO's management of the database schema's would
> inherently avoid such conflicts, like by using random/UUIDs for dynamically
> created table names, so that they will never conflict.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)