我计划用PHP和MySQL开发一个工作门户。问题是,我们将拥有大约500万简历的庞大数据库,所以需要你的建议,我应该用多大的硬盘来存储这么多数据。
关于负载平衡的一些建议。
只是猜测。您的硬件设置应该足够灵活,可以根据需要进行扩展。
如果你要将简历存储为文本:一个页面包含大约3000个字符。假设一份简历的平均长度为4500个字符,而且数据是非结构化的,那么所需的存储空间为22.5 GB,完全在单个服务器的能力范围内。
如果你打算将简历存储为PDF/DOC:我的简历大约有30万份PDF。如果这具有代表性,您将需要大约1.5 TB的存储空间。
负载平衡问题太宽泛,无法回答,而且与您所需的存储量无关,而是与您正在构建的服务的预期负载有关。
首先,CV数据库不应该使用MySql,而应该使用类似Mongodb的json数据库。
MySQL是一个基于relational
模型的数据库。问题是,简历不容易被标准化为这样的模型。例如,有些人可以在简历上分享他们的地址,而另一些人则不能。有了json格式的数据库,每个CV都可以完全不同。你不能用MySQL做到这一点(否则很难维护)
其次,创建一个负载平衡的数据库并不容易。有关更多信息,请参阅mongodb文档:http://docs.mongodb.org/manual/core/sharded-cluster-architectures-production/
(至少需要7台服务器)。
希望有帮助:o
如何处理CV中的每个字段并将其插入一个单独的表中。这将帮助您管理内存,同时节省成本。只是为了制作分段代码所做的一些努力。
尝试在核心java 中制作提取代码
我建议使用云解决方案。我开发了一个音乐网站,几年后可能会有超过10 TB的数据。
我的软件栈:Django、Heroku、Postgres和AmazonS3。
负载平衡?让云提供商担心这一点吧。此外,由于我已经分离了应用程序服务器和静态文件服务器,因此负载非常平衡。
唯一需要担心的是数据存储和网络流量的开销。
好吧,
如果您想保持简单,可以将简历保存在文件系统中的某个位置,并将上传简历的路径保存在数据库中。您可以使用标签在用户之间搜索技能。需要详细信息时,获取所需的简历。
这种方式可以降低数据库的负载,因为CV数据不在数据库中,并且在需要时进行处理。
但很明显,您需要大量的存储空间。:)