假设我有一个巨大的 SQLite
文件(比如 500[MB])存储在 Amazon S3
中。
在小型 EC2
实例上运行的 python
脚本能否直接访问和修改 SQLite
文件?还是我必须先将文件复制到 EC2
实例,在那里进行更改,然后再复制到 S3
?
I/O 是否高效?
这就是我想要做的。如我所写,我在 S3
中有一个 500[MB] SQLite
文件。我想开始说 10 个不同的 Amazon EC2 实例
,每个实例将读取文件的一个子集并进行一些处理(每个实例将处理 500[MB] SQLite 的不同子集
文件)。然后,一旦处理完成,每个实例将只更新它所处理的数据子集(如前所述,进程之间不会有数据重叠)。
例如,假设 SQLite
文件有 1M 行:
实例 1
将处理(和更新)行 0 - 100000
实例 2
将处理(和更新)行 100001 - 200000
......................................
实例 10
将处理(和更新)行 900001 - 1000000
有可能吗?听起来不错吗?欢迎任何建议/想法。
最佳答案
I'd like to start say 10 different Amazon EC2 instances that will each read a subset of the file and do some processing (every instance will handle a different subset of the 500[MB] SQLite file)
你不能用 SQLite 做到这一点;在亚马逊基础设施或其他方面。 sqlite 执行数据库级别的写锁定。除非所有十个节点都以独占方式执行读取,否则您将无法获得任何类型的并发。 Even the SQLite website says so.
Situations Where Another RDBMS May Work Better
- Client/Server Applications
- High-volume Websites
- Very large datasets
- High Concurrency
您考虑过 PostgreSQL 吗?
关于python - Amazon EC2 和 S3 何时使用 Python/SQLite?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6301795/