ruby-on-rails - Rails + PSQL:如何搜索具有数百万行的表
问题描述
我有一个 PostgreSQL 数据库表,用于存储所有系统日志。目前,该表有大约 550 万行。这是它的结构:
create_table "app_logs", force: :cascade do |t|
t.bigint "admin_id"
t.datetime "received_at"
t.datetime "created_at"
t.datetime "updated_at"
t.string "admin_name"
t.string "event_type"
t.jsonb "event_data"
t.string "trackable_type"
t.integer "trackable_id"
t.index "date(received_at)", name: "index_activity_logs_date_received_at"
t.index ["admin_id"], name: "idx_18712_index_activity_logs_on_admin_id"
t.index ["event_type"], name: "index_activity_logs_on_event_type"
t.index ["received_at"], name: "index_activity_logs_on_received_at"
t.index ["trackable_type", "trackable_id"], name: "index_activity_logs_on_trackable_type_and_trackable_id"
end
这就是我尝试从表中检索数据的方式(尝试以错误告终 - 响应/返回数据太长):
@data = AppLog
.by_event_type(params[:event_type])
.by_admin(params[:admin_id])
.by_date_from(params[:logs_from])
.by_date_to(params[:logs_to])
.page(params[:page]).per(100)
.order('received_at DESC')
我可以使用 Rails + PostgreSQL(和适当的索引)管理这样的结构,还是更适合(和可扩展)专注于 3rd 方解决方案,例如 Elastic?
解决方案
推荐阅读
- amazon-web-services - Codebuild 仅在单个区域中运行
- android - AppCompatEditText 自定义字体无法正常工作
- react-hook-form - 反应表单钩子 - FormProvider 不工作
- python - 笔记本验证失败 Jupyter
- facebook - Facebook Graph API 只返回我自己对我的帖子的反应
- amazon-s3 - S3 使用 COPY 到 Redshift:无法 COPY 到不存在的表中
- javascript - 上传图片并使用express js读取json
- php - Psalm 报告 InvalidArrayOffset,但该值将在范围内
- wordpress - WooCommerce 父订单前缀
- ruby-on-rails - 唯一连接表条目的多对多关系