只是想知道 Propel 对数据库分片的支持有多好?我正在考虑用 PHP 创建我的应用程序,使用 MySQL 作为数据库服务器,Propel 作为 ORM。
我发现最好从一开始就保持架构的可扩展性,以防我的应用程序起飞。
你怎么看?
我认为这是一个非常糟糕的主意。假设您需要对数据进行分片并不是一个好的假设。您事先不知道您将如何扩展。分片是一项非常复杂的业务,需要尽可能避免。这是一个过早优化的淫秽案例。
我同意 MarkR 的观点,现在担心分片还为时过早,但我不同意应该尽可能避免分片。我会说使用似乎适合您的风格和语言选择的 ORM —— Propel 可能是您的正确选择。即使您的应用程序大获成功,分片也可能不是必需的——您可以使用基于 MySQL 的 DBMS 和一些不错的缓存技术轻松提取 2500 万条记录,因此只需专注于快速查询和设计为了方便 memcache 集成,即使您的应用程序起飞,您也将成为一个快乐的露营者。
祝你好运!
Propel 通过连接支持开箱即用的分片。在此处查看示例:
http://groups.google.com/group/propel-users/browse_thread/thread/4d19c0668aa17452
一些数据库分片中间件可以帮助您。例如:Apache ShardingSphere ( https://shardingsphere.apache.org/document/current/en/features/sharding/ )
ShardingSphere 有 2 个适配器,JDBC 和 Proxy。JDBC 是连接数据库的 java 驱动程序,不适合 PHP,但 Proxy 就像数据库(MySQL 或 Postgres)。ShardingSphere-Proxy 可以隔离数据分片和业务逻辑。最好使用第三方中间件来处理常见问题。