我有一个mysql数据库,其中包含各种不同的表,其中一些表存储了100k +行。我想要一种允许我从数据库中快速读取的语言,允许我整理来自各种不同表的数据并将它们存储到本地对象/数据结构中。然后,我会在本地进行大部分复杂处理,我也希望对其进行优化。
这主要是针对每天清除的数据分析项目。有些朋友推荐使用Ruby或Python,但不知道,我在迈出这一步之前想要第二个意见。
答案 0 :(得分:1)
此处的部分问题是数据库与应用层代码之间的延迟。 Ping您要从中查询数据库的数据库服务器。加倍,这就是你每次操作的周转时间。如果你能活到那个时候,那你就没事了。但是你可能最好不要在sprocs中编写你的操作或者靠近数据库的东西,并使用你的应用程序代码使用户可以看到它。
答案 1 :(得分:0)
真正取决于您的“复杂处理”是什么,它将使您需要的语言和性能产生最大的差异。
就容易起床和开始而言,python和ruby很快就可以开始使用并获得一些工作。与其他计算机相比,它的速度要慢一些。但即便如此,在您发现与本机编译器语言有很大不同之前,两者都可以计算出很多东西。
答案 2 :(得分:0)
100,000记录真的不是那么多。如果您有足够的ram并且数据中有多个本地“索引”引用相同的对象而不是副本,您将能够在本地缓存它并快速访问它而无需担心。虽然Ruby和Python都是解释语言和操作操作比编译语言慢,但实际上在执行一个应用程序时,只有一小部分CPU时间花在你的代码上,而大多数花费在你自己的内置库中调用,这通常是本机实现,因此与编译代码一样快。
无论是Ruby还是Python都可以正常工作,即使您在测试后发现性能实际上还不够,但从其中一种转换为更快的语言(如Java或.NET甚至C ++)都会显着因为你已经完成了艰苦的工作,所以比从头开始重写更快。
另一个选择是将所有数据缓存在内存数据库中。根据您需要进行的分析动态,这可能适用于您的情况。 SQLite非常适合这一点。
另请注意,由于您要求在本地缓存数据,然后仅在本地缓存上执行操作,因此调用数据库的性能不适用。