mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-06-13 23:36:45 +03:00
Created Customize Filer Store (markdown)
@@ -0,0 +1,51 @@
|
||||
It is fairly easy if you need to store filer metadata with other data store.
|
||||
|
||||
Let's use "yourstore" as the chosen name.
|
||||
|
||||
Here are the steps:
|
||||
1. add a package under github.com/chrislusf/seaweedfs/weed/filer2/yourstore
|
||||
2. implement the filer2.FilerStore interface
|
||||
```
|
||||
package filer2
|
||||
|
||||
import (
|
||||
"errors"
|
||||
)
|
||||
|
||||
type FilerStore interface {
|
||||
GetName() string
|
||||
// Initialize initializes the file store
|
||||
Initialize(configuration Configuration) error
|
||||
InsertEntry(*Entry) error
|
||||
UpdateEntry(*Entry) (err error)
|
||||
FindEntry(FullPath) (entry *Entry, err error)
|
||||
DeleteEntry(FullPath) (err error)
|
||||
ListDirectoryEntries(dirPath FullPath, startFileName string, includeStartFile bool, limit int) ([]*Entry, error)
|
||||
}
|
||||
|
||||
```
|
||||
3. Remember to add yourstore to the list of supported stores
|
||||
```
|
||||
func init() {
|
||||
filer2.Stores = append(filer2.Stores, &YourStore{})
|
||||
}
|
||||
```
|
||||
4. Load yourstore. Just import it in github.com/chrislusf/seaweedfs/weed/server/filer_server.go
|
||||
```
|
||||
import (
|
||||
"net/http"
|
||||
"strconv"
|
||||
"github.com/chrislusf/seaweedfs/weed/filer2"
|
||||
_ "github.com/chrislusf/seaweedfs/weed/filer2/cassandra"
|
||||
_ "github.com/chrislusf/seaweedfs/weed/filer2/leveldb"
|
||||
_ "github.com/chrislusf/seaweedfs/weed/filer2/memdb"
|
||||
_ "github.com/chrislusf/seaweedfs/weed/filer2/mysql"
|
||||
_ "github.com/chrislusf/seaweedfs/weed/filer2/postgres"
|
||||
_ "github.com/chrislusf/seaweedfs/weed/filer2/redis"
|
||||
_ "github.com/chrislusf/seaweedfs/weed/filer2/yourstore"
|
||||
// ^^ add here
|
||||
"github.com/chrislusf/seaweedfs/weed/security"
|
||||
"github.com/chrislusf/seaweedfs/weed/glog"
|
||||
)
|
||||
|
||||
```
|
||||
Reference in New Issue
Block a user