代码之家  ›  专栏  ›  技术社区  ›  Daniel Long Daniel Roseman

使用python文件作为数据库

  •  1
  • Daniel Long Daniel Roseman  · 技术社区  · 8 年前

    我是一名中级python开发人员,在数据分析方面有相当多的使用t-sql/mysql的经验。我正在尝试使用python进行一些web编程,以构建网站后端的某些组件。

    在我的一个应用程序中,我没有查询数据库,而是将一些基于词典的数据结构直接放在python文件的列表中,然后将其导入到保存应用程序逻辑的脚本中。需要注意的是,此数据是静态的,此时大约有5k个字典。

    数据本身包含键值对,其中的值通常是元组列表,因此我发现python数据结构的灵活性比传统的RDBMS表更易于使用。

    我浏览了互联网,似乎找不到任何关于实际使用的开发人员的参考。py文件来存储数据,以便在他们的程序中使用,这让我相信这种方法不应该在生产站点中使用。

    我希望能弄清楚为什么会这样(以及可能的替代方案)

    1. 我会的。与RDBMS解决方案相比,py解决方案的扩展性较差?或者随着使用我的应用程序的用户数量的增长,或者如果我选择在我的数据集中支持更多的车辆?
    2. 是否有一个nosql解决方案可以为我提供所需的灵活数据结构,如果。py解决方案不起作用?或者mysql解决方案在这个用例中是否仍具有优势? 谢谢
    2 回复  |  直到 8 年前
        1
  •  1
  •   Shadow    8 年前

    我过去也做过类似的事情- shelving . 这是一个标准的lib模块,允许您将python对象写入磁盘,从而使它们更易于加载。

    但与您的解决方案一样,也会存在重大的可伸缩性问题。例如,在搁置示例中,整个对象都会加载到内存中。我怀疑您的实现也是如此,假设您导入它以获取数据。

    数据库的优点之一是不需要将整个数据库保存在内存中。这也意味着您可以更快地执行某些搜索;与编写良好的数据库查询相比,在python中迭代数千个对象以检查它们的特定条件可能会非常慢。

    如果你目前的解决方案仍然有效,那么可能没有真正的理由立即改变一切。但是,如果您认为这个应用程序将继续增长,那么制定迁移计划并不是一个坏主意。

    最后,我将我的应用程序迁移到ReflectionDB,以了解它的价值。

        2
  •  1
  •   Dash Winterson    8 年前

    我可以说你的。py文件解决方案可能不会持续太久。如果您正在寻找合适的键值存储解决方案,那么一定要查看nosql数据库后端,例如 redis mongodb .