|
|
|
Архитектура?
|
|||
|---|---|---|---|
|
#18+
Добрый день, есть небольшая проблема. Есть некая база со своими таблицами и пользователями, необходимо сделать несколько таких баз, чтобы пользователи могли писать только в свою базу, а select делать по всем. Как лучше организовать такой вариант? Нашел несколько вариантов: 1) сделать разбиение на уровне схем 2) организовать несколько бд, чтобы все висели на одном ip, но на разных портах. Заинтересовал второй вариант, как можно такое провернуть в postgres (windows)? гуглеж особо не помог, скорей всего ищу не то, что надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2015, 08:44 |
|
||
|
Архитектура?
|
|||
|---|---|---|---|
|
#18+
maks28rusДобрый день, есть небольшая проблема.да есть, и она, судя по вопросу -- в прокладке между стулом и консолью maks28rusЕсть некая база со своими таблицами и пользователями, необходимо сделать несколько таких баз, чтобы пользователи могли писать только в свою базу, а select делать по всем. вот это как раз не необходимо, а привиделось негодной прокладке maks28rus Как лучше организовать такой вариант? Нашел несколько вариантов: 1) сделать разбиение на уровне схем т.е. один инстанс и одна БД ? это немного лучше. партицирование по собственнику. делается руками. maks28rus2) организовать несколько бд, чтобы все висели на одном ip, но на разных портах. ставится несколько инстансов в разные порты. Оно вам надо ? maks28rusЗаинтересовал второй вариант, как можно такое провернуть в postgres (windows)? гуглеж особо не помог, скорей всего ищу не то, что надо. есть третий вариант -- инстанс (и порт) один, а БД разные (разные строки подключения в части dbname). (не путать бд со схемой, тем паче -- таблицей). 2 последних можно опрашивать plproxy. это если совсем погрязнуть в согласованиях захотелось. или бд реально большие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2015, 10:14 |
|
||
|
Архитектура?
|
|||
|---|---|---|---|
|
#18+
qwwqставится несколько инстансов в разные порты. Оно вам надо ? а какие минусы этого варианта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2015, 10:33 |
|
||
|
Архитектура?
|
|||
|---|---|---|---|
|
#18+
maks28rusqwwqставится несколько инстансов в разные порты. Оно вам надо ? а какие минусы этого варианта? а какие плюсы? поддерживать сложнее, управление ресурсами хуже (у каждого инстанса свои shared_buffers, свои коннекты). если нужно несколько баз, то что мешает это сделать в одном инстансе? отобрать права на запись у пользователя не проблема. если хочется делать запросы, которые будут извлекать данные сразу из нескольких "баз", то лучше делать в одной базе и разбивать по схемам. если все "базы" строго однотипны то и на схемы разбивать не рекомендуется, т.к. это только усложнит все. добавить какой-то идентификатор пользователя в таблицы, запись организовать через хранимки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2015, 11:05 |
|
||
|
Архитектура?
|
|||
|---|---|---|---|
|
#18+
Alexius, да базы полностью одинаковые. Чтобы было понятней, например, база данных библиотеки. Есть несколько библиотек и каждая должна иметь что то вроде своей "локальной" бд (у всех набор таблиц один), а поиск делать во всех сразу базах. Была идея все хранить в одной базе, но в таблице добавить столбец - "владелец", который бы показывал кто может изменять и удалять эту запись. Но это похоже больше на костыль. Остался вариант со схемой, бд и инстансами. Не совсем понимаю разницу между разделением на уровне схем и бд. Понятно что это разные уровни иерархии, но не понимаю различия между ними. Alexiusзапись организовать через хранимки это хранимые процедуры? Начал делать через разные бд в одном инстансе, пока вроде все работает. Использую java+hibernate. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2015, 11:20 |
|
||
|
Архитектура?
|
|||
|---|---|---|---|
|
#18+
maks28rus, существенное различие между разделением на базы/схемы в том, что в одном запросе нельзя (без костылей) использовать таблицы из разных баз, а из разных схем можно. Была идея все хранить в одной базе, но в таблице добавить столбец - "владелец", который бы показывал кто может изменять и удалять эту запись. Но это похоже больше на костыль. чем? искать в такой базе будет намного проще. обслуживать тоже (добавлять новые таблицы, поля, и т.п.) это хранимые процедуры? да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2015, 11:46 |
|
||
|
Архитектура?
|
|||
|---|---|---|---|
|
#18+
Alexiusmaks28rusпропущено... а какие минусы этого варианта? а какие плюсы? как бы плюс -- отдельный кластер/базу. можно клонироваться переносом директории дата (т.е. практически "отмонтировать" / "примонтировать" на новом месте). Всё это оправданно для потенциально больших баз без перекрёстной, по областям владения, логики (т.е. когда запрос к шардам -- механическая сумма [union all] возвратов). и всё это обслуживаемо plproxy. но скорее всего -- всё это не нужно в случае тс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2015, 12:00 |
|
||
|
Архитектура?
|
|||
|---|---|---|---|
|
#18+
maks28rus<> Была идея все хранить в одной базе, но в таблице добавить столбец - "владелец", который бы показывал кто может изменять и удалять эту запись. Но это похоже больше на костыль.<>это неверно это неверно даже в случае шардинга. как только у вас данные захотят мигрировать с ноды на ноду в режиме мультимастера -- вам захочется зафиксировать истинного владельца (или даже последнего редактора, что сложнее в разрешении коллизий) данного. а это -- идентификатор ноды--владельца (или последнего редактора) на уровне записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2015, 12:07 |
|
||
|
Архитектура?
|
|||
|---|---|---|---|
|
#18+
а с hibernate кто может подсказать как в рантайме мапинг делать, чтобы организовать работу с разными бд? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2015, 18:37 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=109&tid=1997934]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 255ms |
| total: | 400ms |

| 0 / 0 |
