我是一名中级python开发人员,在数据分析方面有相当多的使用t-sql/mysql的经验。我正在尝试使用python进行一些web编程,以构建网站后端的某些组件。
在我的一个应用程序中,我没有查询数据库,而是将一些基于字典的数据结构直接放在python文件的列表中,然后将其导入到保存应用程序逻辑的脚本中。需要注意的是,这些数据是静态的,此时大约有5k个字典。
数据本身包含键值对,其中的值通常是一个元组列表,因此我发现python数据结构的灵活性比传统的rdbms表更易于使用。
我浏览过互联网,似乎找不到任何关于开发人员实际使用.py文件存储数据以供其程序使用的参考资料,这使我相信这种方法不应该在生产站点中使用。
我希望能弄清楚为什么会这样(以及可能的替代方案)
与rdbms解决方案相比,我的.py解决方案的可扩展性会很差吗?是随着使用我的应用程序的用户数量的增长,还是我选择在数据集中支持更多的车辆?
如果.py解决方案不起作用,是否有nosql解决方案可以为我提供所需的灵活数据结构?或者mysql解决方案在这个用例中仍然优于其他解决方案?谢谢!
2条答案
按热度按时间cnh2zyt31#
我可以说,您的.py文件解决方案可能不会持续太久。如果您正在寻找一个合适的键值存储解决方案,您一定要查看nosql数据库后端,如redis或mongodb。
jm2pwxwz2#
我以前也做过类似的事情——搁置。这是一个标准的lib模块,允许您将python对象写入磁盘,从而使它们更漂亮、更易于加载。
但与您的解决方案一样,也会存在显著的可伸缩性问题。例如,在shelving示例中,整个对象被加载到内存中。我怀疑您的实现也是如此,假设您导入它以获取数据。
数据库的优点之一是不需要将整个数据库保存在内存中。这也意味着你可以更快地执行某些搜索;与编写良好的数据库查询相比,在python中迭代数千个对象以检查它们的特定条件可能会非常慢。
如果您当前的解决方案仍然有效,那么可能没有真正的理由立即改变一切。但是,如果您认为这个应用程序将继续增长,那么制定迁移计划并不是一个坏主意。
我最终将我的应用程序迁移到了ReflectionDB,以获取它的价值。