在经历了几年的“Nosql”空间之后,现在我遇到了一个本质上非常“关系”的问题.
今天我看到的数据存储与以前完全不同.像Riak这样的事情已经让我失去了一种方式,我不能再容忍单点失败,“维持下去”等等.当然,(或者我希望),我还没有完全失去理智.这是一个个人项目,并不完全(或尚未)具有极高的要求.
原文链接:https://www.f2er.com/postgresql/192291.html今天我看到的数据存储与以前完全不同.像Riak这样的事情已经让我失去了一种方式,我不能再容忍单点失败,“维持下去”等等.当然,(或者我希望),我还没有完全失去理智.这是一个个人项目,并不完全(或尚未)具有极高的要求.
大多数分片解决方案都没有给我我想要的东西(至少在一瞥),可能是因为我的问题很容易解决.至少在概念层面上(忽略了RDBM本身带来的限制).
>我有少量的“共享”数据,可以自由复制.它没有硬一致性的要求.这可以存储在类似发电机的数据库中,并且可以无限扩展.但是如果可能的话,我仍然希望使用单个数据库.
>我有很多“每用户”数据.也就是说 – 许多用户,每个用户都拥有绝对合理的数据,非常适合存储在单个Postgresql节点上.我们最多谈论的是数千条记录.
>我从不需要查询跨用户,我不需要跨用户原子性.
这听起来非常容易实现.至少当我用“Nosql眼睛”看着它时.
以下是我天真的创意想法:
>在极端情况下,我可以将整个用户序列化为Riak中的单个键/值.当然,几兆字节数据的持续de / serialization将会很慢,这就是我考虑使用Postgresql的原因.很多Riak K / V是不行的,因为我需要每个用户数据中的原子性/事务.
>我可以为每个用户使用sqlite数据库,并使用GlusterFS之类的东西来实现冗余/可用性.这可能是我要选择的解决方案,如果我使用Postgresql找不到同样好的东西.优点:可以很好地降低/提高规模;缺点:我更喜欢Postgresql的类型和严格性而不是sqlite
那么,我理想情况下会从Postgresql分片解决方案中请求:
>自动保存每个用户数据的多个副本(在不同的计算机上).能够为每个用户/分片动态切换主节点(如果先前的主节点发生故障).
>通过添加/删除服务器节点,能够动态地向上/向下扩展.大多数人都喜欢Riak.
>不要求我的应用程序知道要与哪些节点通信以及何时进行通信.