> On May 21, 2020, at 7:57 AM, Adrian Klaver <adrian.kla...@aklaver.com> wrote:
> 
> On 5/21/20 8:53 AM, Israel Brewster wrote:
>>> On May 21, 2020, at 7:36 AM, Adrian Klaver <adrian.kla...@aklaver.com 
>>> <mailto:adrian.kla...@aklaver.com>> wrote:
>>> 
>>> On 5/21/20 8:29 AM, Israel Brewster wrote:
>>>> I’m working on my first cloud service, which will be backed by a 
>>>> postgresql database. Currently I only have a single customer, but of 
>>>> course I want to design with the possibility of multiple customers in 
>>>> mind. In that vein, I’m wondering what is “typical” in terms of designing 
>>>> the DB structure to make sure that one customer doesn’t “accidentally" get 
>>>> data for another customer? At the moment I am leaning towards giving each 
>>>> customer their own set of tables, with a unique prefix for each. This 
>>>> would provide a “hard” separation for the data,
>>> ^^^^^^^^^^^^ I think that is called a schema:)
>> Ok. That’s probably an option. Although it looks from a cursory perusal that 
>> for that to work, I would have to have separate DB users with different 
>> permissions. Which would be fine, except that I don’t have permissions to 
>> create users.
>>> Or set up a separate database for each in the cluster.
>> Same as above - no permissions.
>> At the moment, I am running on Heroku, which gives me a postgresql database, 
>> but not full control over the cluster. I may need to move to something more 
>> robust, if having completely separate databases is the best option. I was 
>> hoping to avoid SysAdmin stuff as much as possible, and focus on the 
>> software side, but obviously some sys admin is required.
> 
> You can't use this?:
> 
> https://devcenter.heroku.com/articles/heroku-postgresql-credentials 
> <https://devcenter.heroku.com/articles/heroku-postgresql-credentials>

Wasn’t aware of that. I *did* mention this is my first cloud project. Done 
plenty of DB/web/application development, but not cloud/multi-customer. Thanks 
for the pointer.

> 
>> ---
>> Israel Brewster
>> BrewsterSoft Development
>> http://www.brewstersoft.com
>> Home of EZPunch and Lyrics Presenter
>>> 
>>>> but would also increase maintenance efforts, as if I needed to add a field 
>>>> I would have to add it to every table. On the other hand, keeping 
>>>> everything in the same set of tables would mean having to be VERY careful 
>>>> with my SQL to make sure no customer could access another’s data.
>>>> How is this typically done?
>>>> ---
>>>> Israel Brewster
>>>> BrewsterSoft Development
>>>> http://www.brewstersoft.com <http://www.brewstersoft.com/>
>>>> Home of EZPunch and Lyrics Presenter
>>> 
>>> 
>>> -- 
>>> Adrian Klaver
>>> adrian.kla...@aklaver.com <mailto:adrian.kla...@aklaver.com> 
>>> <mailto:adrian.kla...@aklaver.com <mailto:adrian.kla...@aklaver.com>>
>>> 
> 
> 
> -- 
> Adrian Klaver
> adrian.kla...@aklaver.com <mailto:adrian.kla...@aklaver.com>

Reply via email to