dataspace
README.md
Dataspace
Установка
go get gitverse.ru/vestnik/dataspace
Примеры основных возможностей
Инициализация пространства данных
package main
import ( "log"
"gitverse.ru/vestnik/dataspace")
func main() { s, err := dataspace.New("test.dat") if err != nil { log.Fatal(err) }}
Запись значения
s.Set([]byte("key"), []byte("value"))
Получение значения
s.Get([]byte("key"))
Удаление значения
s.Delete([]byte("key"))
Итерация значений
// получение первых 10 элементовs.Range(dataspace.Asc, 10, 0)// получение последних 10 элементовs.Range(dataspace.Desc, 10, 0)// получение 5 элементов начиная с 10 элементаs.Range(dataspace.Asc, 5, 10)// получение 5 элементов начиная с 10 элемента с концаs.Range(dataspace.Desc, 5, 10)
Поиск
package main
import ( "fmt" "log"
"gitverse.ru/vestnik/dataspace")
func main() {
s, err := dataspace.New("test.dat") if err != nil { log.Fatal(err) }
s.Set([]byte("key:1"), []byte("bike:1")) s.Set([]byte("key:2"), []byte("bike:2")) s.Set([]byte("key:3"), []byte("bike:3")) s.Set([]byte("key:4"), []byte("bike:4")) s.Set([]byte("key:5"), []byte("bike:5"))
s.CreateSearchFactor("best_sales") s.CreateSearchFactor("price_over_100k") s.CreateSearchFactor("price_less_100k") s.CreateSearchFactor("mountain_bike") s.CreateSearchFactor("road_bike")
s.SetToSearchFactors([]byte("key:1"), "best_sales", "price_less_100k", "mountain_bike") s.SetToSearchFactors([]byte("key:2"), "price_less_100k", "mountain_bike") s.SetToSearchFactors([]byte("key:3"), "best_sales", "price_over_100k", "road_bike") s.SetToSearchFactors([]byte("key:4"), "best_sales", "price_over_100k", "mountain_bike") s.SetToSearchFactors([]byte("key:5"), "price_less_100k", "road_bike")
bestSales, err := s.Search(dataspace.Intersection, "best_sales") if err != nil { log.Fatal(err) }
for _, v := range bestSales { fmt.Printf("best sales: %v\n", string(v)) // bike:3, bike:4, bike:1 }
bestSalesMountainBikes, err := s.Search(dataspace.Intersection, "best_sales", "mountain_bike") if err != nil { log.Fatal(err) }
for _, v := range bestSalesMountainBikes { fmt.Printf("best sales mountain bikes: %v\n", string(v)) // bike:4, bike:1 }
}
Что дальше?
for { оптимизация тест if тест == успешно { continue }}
Спасибо за просмотр!
Описание
Быстрое, встраиваемое хранилище типа "ключ-значение" на Go с многофакторным поиском.
Языки
Go