gpt4 book ai didi

mysql - 将记录分布在不同的 MySQL 数据库上 - MySQL Proxy 替代方案

转载 作者:行者123 更新时间:2023-11-30 00:29:23 29 4
gpt4 key购买 nike

我的场景如下:

现在我正在使用一个包含多个表的大型 MySQL 数据库来存储用户数据。许多表包含自动增量列。

我想将其拆分为 2 个或更多数据库。分配应该由user_id完成并确定(不能随机)。例如。用户 1 和 2 应位于数据库 1 上,用户 3 位于数据库 2 上,用户 4 位于数据库 3 上。
由于我不想更改整个前端,因此我仍想使用一个数据库适配器,并在查询生成(前端)和查询执行(在右侧数据库上)之间添加一层。该层应根据 user_id 将查询分发到正确的数据库。

我找到了MySQL Proxy这听起来正是我所需要的。不幸的是,它还处于 alpha 阶段,不建议在生产环境中使用。
对于 php 有 MySQL Native Driver Plugin API这听起来很有希望,但我需要一个至少支持 php java 的层。

还有其他方法可以实现我的目标吗?谢谢!

最佳答案

此网站似乎提供您正在寻找的服务(有价格)。

http://www.sqlparser.com/

它允许您解析和修改查询和结果。然而,您想要做的事情似乎只需要几行代码来区分不同的用户 ID,因此即使 mysql-proxy 仍处于 alpha 阶段,您的需求也很简单,我只需使用代理即可。

或者,您可以使用您正在使用的任何服务器端语言来获取其 user.id 信息,然后根据该信息创建到适当数据库的 mysql 连接。这是我拼凑在一起的一些 php,本质上它可以实现我认为您想要做的事情。

</php
// grab user.id from wherever you store it
$userID = get_user_id($clientUserName);
$userpass = get_user_pass($clientUserName);

if ($userID % 4 == 0) { // every 4th user
$db = new mysqli('localhost', $clientUserName, $userPass, 'db4');
}

else if ($userID % 3 == 0) { // every 3th user
$db = new mysqli('localhost', $clientUserName, $userPass, 'db3');
}

else if ($userID % 2 == 0) { // every 2nd user
$db = new mysqli('localhost', $clientUserName, $userPass, 'db2');
}

else // every other user
$db = new mysqli('localhost', $clientUserName, $userPass, 'db1');
}

$db->query('SELECT * FROM ...;');

?>

关于mysql - 将记录分布在不同的 MySQL 数据库上 - MySQL Proxy 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22629771/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com